Operating Systems Engineering
Dozent: Prof. Dr. Michael Engel
Beschreibung
Betriebssysteme und zugehörige Systemsoftware wie Hypervisors bilden die Grundlage heutiger Computersysteme. Die Konzeption und Umsetzung der Kernkomponenten der Systemsoftware kann nicht nur erhebliche Auswirkungen auf die Leistung eines Computersystems haben, sondern auch auf andere Aspekte wie Sicherheit und Energieeffizienz. Daher ist die Konzeption und Umsetzung von Betriebssystemen ein hochaktuelles Thema für Studierende aller Bereiche der Informatik, von kleinen eingebetteten Systemen bis hin zu großen virtualisierten Cloud-Infrastrukturen.
Dieses Modul konzentriert sich auf den zentralen Teil („Kernel“) eines Betriebssystems, d. h. den Teil des Systems, der in einem privilegierten Prozessormodus läuft und direkt mit der Hardware interagiert. Auf der Grundlage einschlägiger Publikationen untersuchen die Studierenden verschiedene Kernel-Architekturen, wie monolithische Kernel, Mikro- und Exokernel, Hypervisors sowie Unikernel. Mechanismen und Richtlinien von Betriebssystemen werden im Hinblick auf ihre funktionalen sowie nicht-funktionalen Eigenschaften analysiert. Die Analyse von Mechanismen, die von einer bestimmten Prozessorarchitektur abhängen, wird anhand der modernen und offenen RISC-V-Prozessorarchitektur erläutert.
Ein zentraler Bestandteil dieses Moduls besteht aus dem Lesen von Code und der Entwicklung von Codeabschnitten für ein kleines Betriebssystem. Anhand von vorhandenem Code werden verschiedene Aspekte der Betriebssystemfunktionalität veranschaulicht. Dabei werden Einschränkungen, Erweiterungsmöglichkeiten sowie alternative Ansätze zur Implementierung einer bestimmten Funktionalität erörtert; diese Diskussion bildet dann die Grundlage für die Umsetzung einer bestimmten Funktion in den praktischen Übungen. Ein Beispiel hierfür ist die Erörterung von Dateisystemen; hier werden Merkmale eines bestimmten traditionellen inode-basierten Dateisystems diskutiert und analysiert, und alternative Implementierungen, wie z. B. log-strukturierte Dateisysteme, werden untersucht und in einer einfachen Form implementiert.
