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

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.