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

Ich kann mich nicht mehr an alle gestellten Fragen erinnern. Insgesamt habe ich scheinbar sehr viel geredet und er hat dadurch nur wenige Themengebiete/Fragen gestellt, wobei er hin und wieder kleinere zusätzliche Fragen gestellt hat. Ich hab meistens mehr gesagt als hier steht. Insgesamt war die Atmosphäre sehr entspannt und obwohl ich bei zwei Fragen nicht direkt/oder garnicht auf die Antwort gekommen bin war er sehr zufrieden → 1.0

Betriebsystemdebugging

Wie kann man denn so ein Betriebssystem debuggen?

* Habe hier echt viel zu led als Debughilfe, printf, Remote Debugging (gdb stub), Emulatoren und Lauterbach CPU gesagt.

Was ist den das Problem mit printf Debugging?

* Timings ändern sich und Raceconditions treten möglicherweise nicht mehr auf.

Interruptbehandlung

Was ist zeitkritisch?

* War quasi seine Überleitung zu Interrupts. Hab grob erzählt, dass in einem BS manchmal zeitkritische „Events“ vorkommen die schnell behandlet werden sollten (Bsp: Reaktor wird sonst warm).

Was sind Interrupts und wie werden sie behandelt?

* CPU blockiert kurz Interrupts damit das gleiche Interrupt das aktuelle nicht nochmal unterbrechen kann (wusste ich nicht, aber war laut ihm nicht ganz so schlimm weil es eher Rechnerarchitektur sei). Danach wird der aktuelle Kontext gesichert und die Behandlungsfunktion gestartet welche sich um den Rest kümmert. * Dann hab ich noch das Prioritätsebenenmodell sowie das Prolog/Epilog-Modell erklärt und die Gründe für das Epilogmodell genannt.

Wie sieht denn prolog(), epilog(), enter(), leave() und relay()

* Habe ich dann auch grob erklärt. Aufschreiben musste ich hier nichts.

Epilog macht das ganze jetzt langsamer. Warum macht man es dann?

* Es kann schneller auf Interrupts reagiert werden und sie gehen nicht verloren, da normale Anwendungen maximal die Epilogebene anstatt Interrupts „blockieren“. (Falls der Reaktor warm wird kann schneller gekühlt werden.)

Welche Interruptart gibt es noch, die man gar nicht haben will?

* Spurious interrupts

Was macht man dagegen?

* Defensiv programmieren.

Synchronisierung

Schreib doch mal die Implementierung für P() und V() auf.

* Hab ihm dann nach anfänglichen Leichtsinnsfehlern die ich selber noch rechtzeitig bemerkt hab die Implementierungen aufgeschrieben.

Wofür brauchen wir denn hier jeweils enter() und leave()?

* Hier habe ich etwas über Lost-Wakeup erzählt. Damit war er scheinbar zufrieden.

Wie sieht das denn mit dem leave() bei block() in P() aus?

* Bin ich leider nicht direkt drauf gekommen. Hören wollte er hier, dass block() implizit einen neuen Thread einlastet welcher das leave aufruft, weil resume() auf der Epilogebene stattfindet.

IPC

Wie mache ich message passing, wenn ich shared memory habe?

* Queue mit messages mit Semaphore synchronisieren.

Wir haben da einmal shared memory und message passing kennen gelernt. Was ist besser?

* Beide gleich mächtig, weil das eine jeweils das andere emulieren kann. Habe da noch ein paar Vor und Nachteile aufgezählt.

Wie mache ich Nachrichtenbasierte Kommunikation, wenn ich gemeinsamen Speicher habe?

* Liste mit Nachrichten welche mit Semaphoren synchronisiert ist. (Reihenfolge der P()-Aufrufe in receive wichtig, da ansonsten Deadlock!)

Was ist Virtual Shared Memory?

* Konzept ganz grob anhand einer Skizze erklärt. Hierbei aufpassen, dass man die MMU mit dem Pagefault nicht vergisst. (Speicher kopieren, Rechte anpassen, etc)

Sonstiges (Kann ich zeitlich nicht mehr einordnen)

Was braucht man für Semaphoren/passives Warten?

* Man braucht Shared memory + Interrupts. Stichwort IPI (Hier bin ich leider erst kurz vor Schluss draufgekommen, nachdem er mich mehrfach auf den richtigen Weg bringen wollte: „Was mache ich, wenn ein CPU-Kern nichts zu tun hat ich aber in der Readylist Threads habe?“)