===== Allgemein ===== Sehr angenehmes Klima, faire Benotung. Es geht nicht darum die Folien auswendig zu können, sondern um Verständnis. Obwohl ich ein paar kleine Hänger hatte am Ende Note 1.0 ===== Scheduling und Synchronisation ===== **Was ist denn Scheduling?** Benötigt für Pseudoparallelität. Erklärt vom Timer Interrupt über APIC Interruptbehandlung, Prolog, Epilog, Scheduler, Dispatcher. Unterscdhied präemtives und kooperatives Scheduling. **Wie funktioniert denn so ein Kontextwechsel?** Erklärt wie Register gesichert werden, (Caller-Save, Callee-Save), wenn noch nicht eingelagert gewesen 'prepare_context'. **Was macht das 'prepare_context'?** Stackinitialiesierung erklärt. **Wie ist das, will man eher viele oder wenige Timer Interrupts?** Kommt auf den Anwendungsfall an, bei interaktiven Prozessen eher Mehr, bei Langen Berechnungen eher weniger. **Wie kann ich dafür sorgen dass trotz Rechenintensiver Prozesse das System interaktiv bleibt?** Prioritäten bei Linux (und nicen) erklärt. Boost bei Windows erklärt. **Semaphoren, Implementierung gefragt** Äquivalent zu mpstubs hingeschrieben, gesagt dass Synchronisierung durch den Guard passiert. Waitingroom erklärt. **Was macht der Guard?** Ebene 1/2 Modell erklärt (run-to-completion Semantik), enter, leave. **Was macht denn dann das leave, wenn der Semaphor den Thread schlafenlegt?** Hier hatte ich einen kleinen Hänger, Antwort war im Endeffekt, dass das resume des neuen Threads die ebene wieder verlässt. ===== Weiter zu IPC===== **Wenn ich einen Semaphor hab, wie kann ich mir dann so eine Mailbox bauen?** Erklärt dass eine Mailbox "Nachrichten auf gemeinsamem Speicher ist", Implementierung "gesagt". **Wie kann ich verhindern, dass unendlich viel in die Queue gepackt wird?** Bounded Buffer, und zweiten Semaphor der runterzählt solange noch Platz ist. **Wie muss ich einen Semaphor ändern, damit ich z.B. p(5) machen kann?** If-condition im p() ändern, (muss mindestens 5 sein), ansonsten schlafen legen. Beim v() einfach normal aufwecken, wenn nicht genug da ist wieder schlafen legen. ===== Microkernel ===== **Was ist ein Microkernel?** Mit Monolith verglichen, gesagt dass eben nicht alles im Kern läuft, sondern nur das wichtigste (Interruptbehandlung, Scheduler, etc.) aber z.B. kein Netzwerkstack mit TCP/IP. Vorteil der Stabilität wenn was kaputt geht. **Was passiert wenn einen Datei von Anwendungsfaden gelesen werden soll?** Anwendung kommuniziert mit Dateisystemserver (nicht im Kern, wie z.B. fuse), der kommuniziert mit Plattentreiberserver im Kern (z.B. via Mailboxes). **Warum teurer als bei Monolith?** Mehr Kommunikationsschritte, Kontextwechsel, Caches werden überschrieben.