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

MPStuBS

Prüfer: Volkmar Sieh, Beisitzer: Bernhard Heinloth

Allgemein

Sehr entspannt. Bernhard hat keine Fragen gestellt. Er hat aber manchmal Volkmar gestikuliert, wenn eine Frage etwas seltsam war, z.B. nicht ganz korrekt formuliert war. Einmal hat Volkmar dann auch gesagt, dass die Frage nicht so sinnvoll war, und hat die nächste Frage gestellt.

Als Vorbereitung bin ich die Vorlesungsfolien durchgegangen und habe mir ein paar alte Prüfungsprotokolle angeschaut. Die Aufgaben habe ich alleine und sehr gründlich bearbeitet, d.h. ich war dadurch relativ gut vorbereitet, und habe dann gar nicht mal so viel Zeit mit Vorlesungsfolien/Prüfungsprotokollen verbracht. Note: 1,0.

Manche Fragen weiß ich nicht mehr genau, d.h. es ist vermutlich etwas unvollständig. Es ging aber gefühlt sehr lange um Interrupts.

Fragen

Betriebssystementwicklung

  • Was ist Bare-Metal-Programmierung?

Habe praktisch den ersten Foliensatz erzählt. Bei der Linkerkonfiguration wollte er wissen, was da besonders ist, was ich nicht wusste. Er wollte darauf hinaus, dass standardmäßig virtuelle Adressen verwendet werden.

  • Wie kann man debuggen?

Habe den Rest des ersten Foliensatzes erzählt. Hier hab ich praktisch alles aufgezählt, weswegen er dann auch gesagt hat „Reicht schon“.

Interrupts/Synchronisation

  • Verschiedene Fragen bzgl. weicher/harter Synchronisation, aktivem/passivem Warten. Wie sieht eine simple Mutex-Implementierung aus?

Habe die verschiedenen Sachen erklärt. Für den Mutex habe ich in etwa das hingeschrieben:

bool locked = false;

lock() { while (!builtin_test_and_set(locked, false, true)); } Es war Pseudocode gefordert, also hat das so gepasst.

unlock() { locked = false; }

  • Wie macht man da jetzt passives Warten?

In lock ein scheduler.block in der while-Schleife, und im unlock ein scheduler.wakeup.

  • Muss man da synchronisieren o.ä.?

Habe die Synchronisation mit dem Scheduler erzählt, d.h. auch ein bisschen die Strukturen dort. Bis hier habe ich oft die Epilog-Ebene erwähnt, deswegen ging es jetzt darum.

  • Was ist die Epilogebene, wie wird das verwendet?

Habe zuerst allgemein das Ebenenmodell kurz beschrieben und dann die Aufteilung Prolog/Epilog.

  • Worauf muss man bei der Interruptbehandlung/Prolog achten? Wie habt ihr das z.B. bei der Tastatur gemacht?

Dass es so kurz wie möglich dauert. Bei der Tastatur holt man sich im Prolog nur das Zeichen aus dem Tastaturpuffer.

  • Es gibt zwei verschiedene Arten von Interrupts(signalisierungen), inwiefern wirkt sich das auf das Abholen aus dem Tastaturpuffer aus? (oder so ähnlich)

Hier war ich etwas verwirrt; er hat gesagt „Du wusstest ja bisher alles, jetzt muss ich mal etwas schwierigere Fragen stellen“. :D

Er wollte auf etwas sehr detailliertes hinaus: die beiden verschiedenen Trigger-Modes Edge und Level (im IO-APIC). Er hat dann behauptet, dass wenn man ein Zeichen nicht abholt, das System nichts mehr tut. Damit meinte er, dass die Behandlung von Tastaturinterrupts den Trigger-Mode Level verwendet, und das BS deswegen die ganze Zeit wieder in den Interrupthandler springen würde, weil die Interruptleitung erst auf 0 gesetzt wird, wenn das Zeichen abgeholt wurde. Hierauf bin ich nur so halb gekommen.

  • Welche Interrupt(signalisierungs)art wird beim Timer-Interrupt verwendet?

Hier hab ich ziemlich lange überlegt, bin dann aber darauf gekommen. Es war Edge, weil es ja keine Daten abzuholen gibt, sondern es nur um die Signalisierung bzgl. der abgelaufenen Zeit geht.

IPC

  • Was ist Virtual Shared Memory?

Habe kurz allgemein was zu IPC gesagt, und dann eben, dass Virtual Shared Memory die Nachstellung von Shared Memory über Nachrichten ist. Da hab ich ein bisschen erklärt wie das abläuft, mit dem Versenden von Seiten usw.

  • Wenn man mehrere Variablen hat, und auf die Variablen von verschiedenen Prozessen zugegriffen wird, warum könnte das problematisch sein?

Wei die Variablen vermutlich in der gleichen Seite liegen.

  • Wie würde man Raytracing mit vielen PCs wie im CIP machen?

Jeder PC hat eine Kopie von der Szene, weil sie sich nicht verändert. Dann berechnet jeder PC einen Teil der Szene, und am Ende schreiben alle ihr Ergebnis synchronisiert auf Platte.