Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 4 » Betriebssystem   (Übersicht)

Betriebssystem

Prüfer: Daniel Lohmann
Beisitzer: Daniel Danner

Themengebiete: Betriebssysteme (MPStubs + Übung, 7.5 ECTS)
Datum: 17. Februar 2014
Note: sehr gut

Obwohl meine Prüfung im Wesentlichen wie die vom 8. April 2013 verlief, wollte ich das hier einfach mal gesagt haben, damit auch die Bescheid wissen, die nach mir geprüft werden ;-).

Allgemeines zum Ablauf

Die Atmosphäre war sehr angenehm und nach ein bisschen einleitendem Small-Talk ging es auch direkt mit der klassischen Frage los, was denn ein Betriebssystem ist. Hier macht es meiner Meinung nach schon sehr viel Sinn, bereits im Voraus ziemlich genau zu wissen, was man da sagen will. Neben der Tatsache, dass man damit durchaus zu einem gewissen Grad die Richtung des Gesprächs lenken kann, hilft es einem selbst auch ins Gespräch reinzukommen und Sicherheit zu gewinnen.

Alles folgende (printf(), getch(), Interruptbehandlung, etc. pp.) hat Lohmann auf sein A3 Blatt geschrieben/gemalt, das am Schluss auch ziemlich voll war. Dabei diktiert man ihm dann mehr oder weniger wie das (in meinem Fall) zu „programmieren“ ist.

Eins noch: Lasst euch von dem eventuell skeptischen Blick von Daniel Lohmann nicht irritieren - ich glaube das ist in den meisten Fällen eher ein „ich denke gerade intensiv nach“-Blick und kein „was redest du für einen Unsinn“-Blick ;-).

Fragen

Wie bereits erwähnt, verlief meine Prüfung weitgehend wie die vom 8. April 2013. Bei mir wurde allerdings gar nichts zur Thread-Umschaltung/zum Scheduler gefragt. Ich möchte aber davor warnen, die Vorbereitung allein mit den Prüfungsprotokollen zu beschreiten. Es kamen zwischen drinnen immer wieder vertiefende Verständnisfragen und Eventualitäten, die es zu bewerten galt.

Zum Schluss wurde mir noch eine Frage gestellt, bei der ich mir nicht sicher bin, ob bzw. wie weit sie Teil der Prüfung war:

P: Du hast ja gesagt, dass das Anschalten der Interrupts und das Schlafenlegen atomar passieren muss (also CPU::idle() bzw. sti;hlt;), um ein Lost-Wakeup-Problem zu vermeiden. Hast du eine Idee, was man auf einer Architektur macht, die nicht garantiert, dass das atomar erfolgt?

S: (Wusste ich erst mal nicht und hab allgemein beschrieben, was beim Interrupt passiert) Wenn ein Interrupt nach dem sti und vor dem hlt kommt, wird der PC, der auf die nächste Anweisung also hlt zeigt, und das SR auf den Stack gepusht und die Interrupt-Service-Routine aufgerufen. Am Ende wird dieser Zustand mit einem 'iret' wiederhergestellt.

P: Ja, richtig – und kann man das irgendwie ausnutzen?

S: (mit Hilfe) Man überprüft im Interrupt-Handler, ob die Anweisung, auf die der PC zeigt, ein hlt ist und patcht ihn so, dass er auf die nächste Anweisung nach dem hlt zeigt.