====== Diplomprüfung Betriebssysteme/Verteilte Systeme, April 2008 ====== Prüfer: Wolfgang Schröder-Preikschat, Beisitzer: Daniel Lohmann ==== Allgemeines ==== * Entspannte Atmosphäre, netter Prüfer * Wurde gefragt, mit welchem Bereich ich anfangen möchte * Wenn man Zeit zum Nachdenken benötigt, sollte man das anmerken, wosch fängt schnell an Tips zu geben * Man meint gar nicht, wie schnell die Zeit rumgeht! :-) ==== BS ==== * Ausgangsituation: Anwendung führt ein read() aus, um Zeichen von einer Tastatur einzulesen -> siehe A6 aus der Übung * Habe den Ablauf des System Calls (Trap, Betriebsmittel Tastaturpuffer mit Semaphor verwalten...) erklärt * Welche Operationen hat ein Semaphor, wie funktionieren die, sind sie unkritisch? * Ziemlich aus dem Konzept gebracht hat mich die Frage "Synchronisieren sie V() doch mal bitte __falsch__". Lief darauf hinaus, dass ein V() ja auf der Unterbrechungsebene ausgeführt wird und ein __Mutex__ hier blockieren kann (run-to-completion). * Noch ein paar Detailfragen zur Synchronisation, an die ich mich aber nicht mehr erinnern kann. Hier also fit sein! * Wenn ein blockierter Faden mit einem wakeup-call geweckt wird, wo in der Schedulerqueue wird er dann eingehängt? -> abhängig von Strategie; sollte dann zu FCFS und SRTF sagen, wo die eingehängt werden ==== VS ==== * Wie funktioniert ein Fernaufruf? -> Habe ich anhand einer foo(int i)-Schnittstelle skizziert * Stellt die Parameterübergabe in dem Fall ein Problem dar? -> nein, weil call by value * Machen se doch mal n Problem draus! -> Habe daraus dann foo(int *i) gemacht und was zu Ein/Ausgabeparameter und IDL gesagt * Was kann sich hinter dem *i hier denn alles verbergen? -> Zeiger auf einen int oder Feld unbekannter Größe * Wie könnte man das Problem lösen? -> Smart Pointer mit Rückruf erläutert * Probleme beim Rückruf? -> Deadlock wegen remote invocation send * Lösung des Problems? -> Rückrufserver oder synchronization send * Welche Probleme können hier beim synchronization send entstehen? -> Empfangen der Antwort explizit mit receive. send und receive bilden einen kritischen Abschnitt; bin ich nich draufgekommen * Unterschiede zw. diversen Fernaufrufsemantiken (maybe, at least once, at most once)