Betriebssysteme II 2021

Prof. Dr. Andreas Polze

Andreas Grapentin
Sven Köhler
Felix Gzelka
Felix Eberhardt

Inhalt der Vorlesung

Die Lehrveranstaltung richtet ihren Schwerpunkt auf Technologien in Standard-Betriebssystemen (general-purpose operating systems) und diskutiert Techniken und Ansätze am Beispiel der Microsoft Windows NT/2000/XP-Betriebssystemfamilie. Diese Ansätze werden in Relation gesetzt zu Lösungen, die in UNIX/Mac OS X/ Linux, dem VMS-Betriebssystem und eingebetteten Systemen realisiert worden sind.

Auf diesen Seiten finden Sie Unterlagen zu den Vorlesungen, die laufend ergänzt werden. Insbesondere finden Sie einige Foliensätze, die über das in der Vorlesung gezeigte Material hinausgehen.

Als Teilnehmer der Lehrveranstaltung sind Sie berechtigt Kopien der Unterlagen für Ihre eigene Verwendung anzufertigen. Jegliche Vervielfältigung und Nachnutzung der Unterlagen in elektronischer oder gedruckter Form bedürfen der schriftlichen Zustimmung des Autors.

Intro

Vorlesung und Projektarbeit

Die Vorlesung ist wie auch im letzten Jahr nach dem "inverted classroom" Prinzip strukturiert. Dazu wird ein begleitendes Projekt durgeführt. Dabei entfallen ca. 25% der Zeit auf Vorlesungsinhalte, und 75% der Zeit auf Projektarbeit und Auswertung.

Termine

Es findet eine Wöchentliche Videokonferenz zur Besprechung des Materials und des Projektfortschritts statt. Folgender Termin ist dafür vorgesehen:

Nächste Termine:

  • 29.04.2021 11:00 Project Topics and Lecture
  • 06.05.2021 11:00 Project Topics

Unterlagen zur Vorlesung

Die Vorlesung wird auf deutsch gehalten. Die Folien, sowie die meisten weiterführenden Materialien, liegen in englischer Sprache vor.

Leistungserfassung

Es gelten folgende Regeln:

  1. Es handelt sich um eine 6 Punkte Bachelor-Vorlesung.
  2. Ergänzend zur Vorlesung werden Projekte durchgeführt.
  3. Die Ermittlung der Endnote erfolgt zu gleichen Teilen durch die Bewertung der Projektarbeit, sowie eines abschließenden Reports.
  4. Zum Bestehen der Veranstaltung ist die Teilnahme an den wöchentlichen Projektgesprächen erforderlich

Projektarbeit

Im Projektteil der Veranstaltung können die folgenden Themen bearbeitet werden:

Energiegewahres Rechnen

  • Energie-Instrumentierung auf Prozessebene: Der Linuxkernel bietet eine umfangreiche Sammlung an Performance Countern, die detaillierte Einsicht über das Verhalten eines Programmes (Anzahl Instruktionen, Branches, Cache-Misses) bis auf die Codezeile hinab ermöglichen. Gemeinsam wollen wir in diesem Projekt die kernel-seitige Architektur kennen lernen und virtuelle Energiezähler entwerfen, damit wir verstehen können welche Programmbereiche am energiehungrigsten sind.
  • Die Energetischen Kosten des Computing: Egal ob Jupyter Notebook oder Klimasimulation - Serverbackends brauchen mehr Strom, als sich beim ersten Klick vermuten lässt. Auf Basis des fachgebietseigenen Werkzeugs Pinpoint wollen wir verstehen, was eine Programmausführung energetisch kostet und wie wir die Information für Anwender in eine Ausführungsstatistik integrieren können.

Nicht-Flüchtige Speichertechnologien

  • Dateisysteme in Nicht-Flüchtigem Hauptspeicher: Die entwicklung persistenter Hauptspeichertechnologien wirkt sich auf viele Bereiche des Computing aus. Dateisysteme, die klassischerweise auf Geräten mit Blockzugriffs-Semantik operieren, müssen sich nun an eine Load-Store Semantik anpassen. Welche Ansätze dafür gibt es, und wie unterscheiden sich diese?

Nicht-Uniforme, Heterogene Speicherhierarchien

  • Instrumentierung und Analyse: Die Speicherplatzierung ist ein wichtiger Faktor der Performance einer Applikation. Mit bestehenden Werkzeugen lassen sich Aussagen zum Allokations-Verhalten treffen. Diese sind für einige System-Typen, wie NUMA (Non-uniform Memory Access) Systeme jedoch nicht aussagekräftig genug. Hier werden genauere Informationen über die Platzierung von Speicherseiten in den einzelnen Lokalitäts-Domänen (z.B. CPU-Sockeln) benötigt. Die Aufgabe besteht darin, das Werkzeug Heaptrack (https://github.com/KDE/heaptrack) entsprechend zu erweitern.
  • Disaggregation und Verlässlichkeit: Mit größeren Speichern, die möglicherweise auch weitverteilt sein können, steigt die Gefahr, dass Teile des Adressraumes für Zugriff ausfallen. Klassicherweise begegnet man diesen Fehlerursachen mit regelmäßigen Zustandssicherungen (Checkpointing). Doch was, wenn ein Neustart sehr kostspielig ist oder die Frequenz der Ausfälle zu hoch? In diesem Projekt sollen alternative Ansätze überprüft werden: Können Teile der Applikation identifiziert und ausfallsicher gegenüber, z.B. eines SIGBUS-Szenarios gehärtet werden? Wie sähe eine solche Architektur aus und was muss alles beachtet werden?

Neue Programmierparadigmen in Betriebssystemen

  • Rust als Programmiersprache im Kernel: Aktuelle Diskussionen rund um den Linux-Kernel betreffen die Integration der Programmiersprache Rust für die Treiber-Infrasturktur. In vorherigen Iterationen der Vorlesung gibt es bereits Vorarbeiten, die prototypisch bereits einen Treiber in Rust implementiert haben. In diesem Projekt sollen die Vor- und Nachteile eines solchen Ansatzes erörtert werden. Dazu soll die Kernel-Mailing-Liste herangezogen werden, um offizielle Vorschläge einzuordnen. Weiterhin sollen die Experimente aus der vorherigen Iteration gegebenenfalls erweitert oder neu geschrieben werden, um mögliche Einschränkungen zu demonstrieren.

Betriebssystem Kernel Architekturen

  • Mikrokern, Monolith, Multikern, Unikern: Nicht alle Betriebssysteme sind Monolithisch aufgebaut. Untersuchen Sie alternative Architektur-Ansätze aus Praxis und Literatur, bringen Sie sie zum Laufen, und Vergleichen Sie deren Eigenschaften, Designziele und Anwendungsbereiche.

Betriebssystemgeschichte

  • Lebendige Geschichte der Betriebssysteme: Viele historische Systeme können heute noch in Emulation oder auf echter historischer oder nachgebildeter Hardware betrieben werden. Mache Systeme werden von einzelnen Menschen am Leben erhalten, andere sind sogar noch als Quelltext verfügbar. Betrachten Sie ein oder mehrere konkrete historische Systeme, und setzen Sie sich mit ihnen auseinander.
  • Betriebssystem-Galerie InstantLab: Untersuchen und Erweitern Sie InstantLab, unsere Plattform zur Bereitstellung von Betriebssystem-Instanzen im Webbrowser. InstantLab wird eingesetzt zur Implementierung der Betriebssystem-Galerie, einem System zur Pflege der Betriebssystemgeschichte durch schnell verfügbare Instanzen historischer Systeme.

Literaturhinweise

Diese Liste wird ständig ergänzt.

  • Sysinternals Webseite www.sysinternals.com
  • (CRK) Tools
  • Curriculum Resource Kit Website
  • Mark A.Russinovich/David A. Solomon, "Windows Internals", 4th Edition, MS Press 2005.
  • David A. Solomon/Mark E. Russinovich, "Inside Windows 2000", 3rd Edition, MS Press, 2000.
  • John Hart, "Win32 System Programming", Addison-Wesley, 1997.
  • Abraham Silberschatz, Peter B. Galvin, "Operating System Concepts", John Wiley & Sons, 6th Ed., 2003; Webseite zu diesem Buch unter os-book.com
  • Gary Nutt, "OS Projects using Windows NT", Addison-Wesley, 1999.
  • Helen Custer, "Inside Windows NT", MS Press, 1993.
  • Andrew S. Tanenbaum, "Distributed Operating Systems", Prentice Hall, 1995.
  • Walter Oney, "Programming the Microsoft Windows Driver Model", MS Press, 2003.
  • VMware curriculum repository: GoVirtual.org