====== Betriebssysteme (MPStuBS) ====== 2015-03-18\\ Prüfer: Daniel Lohmann\\ Beisitzer: Sebastian Maier\\ Note: 1.3 Angenehme Atmosphaere, Pruefung ist mehr ein Gespraech als Ausfragerei. Das schwierigste an der Pruefung duerfte Daniels Auftreten sein, das einem bei jeder Antwort das Gefuehl gibt, man haette gerade den groessten Schwachsinn erzaehlt. Davon einfach nicht verunsichern lassen. Die Pruefung war nur ueber 5 ECTS, daher keine Fragen zu Multiprozessorsachen. ==== Pruefungsverlauf ==== === Einstieg === Was ist ein Betriebssystem? * Ausfuehrungsumgebung fuer andere Software * Abstraktionsschicht zwischen Software und Hardware * CPU-Multiplexing === BS-Arten === Ueberleitung auf die verschiedenen BS-Arten mit der Frage, wieso das BS denn die Hardware abstrahiert. * Monolith erklaeren * Mikrokern erklaeren (Scheduler im Userspace, Dispatcher nicht) * Unterschied von Syscalls in Monolith und Mikrokern (Mikrokern langsamer, da zwei Adressraumwechsel in IPC: Anwendung -> Kern und Kern -> Serverprozess) * Unterschied Usermodus/Systemmodus (Systemmodus hat privilegierte Operationen bspw. cli, Pagetableeintraege in MMU aendern) === BS-Entwicklung === Daniel gibt Anwendung vor, fuer die BS entwickelt werden soll, dabei werden schrittweise mehr Sachen verlangt. Am Ende sah das ganze so aus: main() { getch(); printf("Hello, World!"); } int getch() { cli; while(!keys) { sti;hlt; cli; } index = keys--; sti; ch = buf[index]; return ch; } KeyHandler() { buf[keys++] = key; } Die schrittweise Erstellung lief ungefaehr so: * Bootloader, Startupcode, Stack initialisieren, Hardware initialisieren, Treiber fuer Bildschirmausgabe * Was fuer Zeicheneingabe benoetigt: Tastaturtreiber, aktiv nach Zeichen pollen * Polling schlecht, Interrupts und passiv warten besser -> sti; in Startupcode, hlt in while-Schleife * Lost-Wakeup-Problem: Interrupts waehrend while-Schleife deaktivieren * Lost-Update-Problem: Interrupts waehrend Indexbestimmung (keys--) sperren ==== Vorbereitung ==== Sehr knappe Zusammenfassung, hauptsaechlich mit BS-Arten, Ebenenmodell, Koroutinenwechsel. Alte Protokolle lesen ist vermutlich die beste Vorbereitung. Wenn man die Themen verstanden hat. die in den Protokollen auftauchen, ist man auf Daniels Transferfragen gut vorbereitet.