Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 4 » Betriebssysteme 7.5 ECTS Prüfung 11.04.2022   (Übersicht)

Betriebssysteme 7.5 ECTS Prüfung 11.04.2022

Atmosphäre war gut. Obwohl ich bei Synchronisation fast blank war hat es noch für 1,7 gereicht.

Prüfung

Ich möchte in meinem Betriebssystem mittels Ctrl-C den aktuellen Prozess beenden können, wie mache ich das?

Interrupts + Scheduling erklärt

Was ist wenn der Prozess auf einem anderen Kern läuft als der Kern, der den Tastendruck entgegen nimmt?

IPI

Wie finde ich denn raus welcher Prozess stattdessen eingewechselt werden soll? Verschiedene Kriterien genannt, z.B. Durchsatz

Warum gibt es so viele Kriterien?

Hängt von der Anwendungsfall ab. Ein Stapelsystem hat andere Anforderungen als ein interaktives oder Echtzeitsystem.

Welche Kriterien sind denn für diese Systeme jeweils wichtig?

Stapelsystem: Durchsatz Interaktiv: Antwortzeit Echtzeit: Priorisierung & Termineinhaltung

Warum kann ich nicht einfach ein normales Linux nehmen ins Rechenzentrum stellen und meine Physik Simulation drauf laufen lassen, die 3 Wochen dauert?

Ein OS wie Linux hat viele Kontextwechsel, darunter leidet die Performance. Ist auch komplett unnötig, da die Simulation nicht interaktiv ist und die Antwortzeit anderer Prozesse unwichtig.

Wie warte ich denn auf Tastatureingaben? Semaphore erklärt + implementiert

Wenn ich jetzt den wartenden Prozess mittels Ctrl-C beenden will, wie muss ich da jetzt vorgehen?

Thread aus dem Warteraum nehmen + Counter der Semaphore erhöhen, damit der interne State nicht kaputt geht.

Und wenn ich maximal 10 Sekunden auf der Semaphore warten möchte? Wie kann man das einbauen?

Ansatz der Bell erklärt. Beim Ablauf der Zeit muss man wieder den internen State fixen.

Bei einer Semaphore kann man das p() oder das v() vergessen zu benutzen. Was kann man stattdessen benutzen?

Ab hier wurde es etwas schwierig. Hatte Synchronisation nur etwas überflogen. Bin dann aber doch noch auf Monitore gekommen und eine kurze Erklärung (war aber sehr schwammig).

Ok, das löst das Problem mit dem p() und dem v() vergessen. Aber Monitore haben ein anderes Problem, welches denn?

Wenn viele Threads lesen und nur einer schreibt, ist die Performance schlecht. Lesen kann gleichzeitig passieren. Schreiben darf aber maximal einer (und keiner darf lesen!)

Was kann man stattdessen verwenden? / Wie funktioniert das? Hier hatte ich keine Ahnung. Die Lösung war wohl eine Semaphore/Mutex zu nehmen um den Read counter/Write counter zu lesen und zu schauen ob man arbeiten darf oder warten muss.

Wie kommuniziert man denn zwischen Prozessen? IPC

Welche Arten gibt es? Shared Memory / Message Passing, kann man aber gegenseitig emulieren

Wie würde ich das denn machen? Message Passing über Shared Memory: Mailbox erklärt Shared Memory über Message Passing: Seiten über Nachrichtenkanal anfordern, wenn ein Prozess sie benötigt und in den Adressraum kopieren.

Für verschiedene Anwendungsfälle benutzt man verschiedene IPC Mechanismen? Was sind denn die Vor-/Nachteile Vorteil SHM: Muss Daten nicht kopieren ⇒ Performance. Benötigt aber (offensichtlich) Shared Memory Support über MMU Vorteil Message Passing: Kann über Rechnergrenzen hinweg passieren ⇒ Sockets

Wir hatten in der Vorlesung auch Mikrokerne. Wenn ein Prozess ein DVD Image erstellt hat und dieses auf die Festplatte geschrieben werden soll, dann muss ich die (4GB) Daten ja kopieren wenn ich Message Passing verwende. Wie kann ich das verbessern? Hier musste ich kurz nachfragen, weil ich die Frage nicht ganz verstanden hatte. Es ging darum, dass ein anderer Prozess die Daten auf die Platte schreibt. Es ging hierbei um das kopieren der 4GB von Prozess A nach Prozess B.

Kann man lösen indem man per Message Passing nur einen Pointer auf den Arbeitsspeicherbereich mit den Daten sendet und der Prozess B von diesem Speicher liest. Benötigt aber Shared Memory.