Nach erfolgreichem Abschluss des Moduls sind die Studierenden in der Lage, die Funktionsweisen und Strukturen moderner Betriebssysteme sowie deren Einbettung in verschiedene Rechnerarchitekturen zu verstehen und verständlich zu erklären. Sie können systemnahes Wissen gezielt einsetzen, um performante Software zu entwerfen, zu entwickeln und zu implementieren. Darüber hinaus sind sie in der Lage, komplexe Programmieraufgaben im Team zu organisieren, gemeinsam zu bearbeiten und erfolgreich abzuschließen. Sie haben ihre technischen, sozialen und persönlichen Kompetenzen sowie ihre Kommunikationsfähigkeit und ihr Selbstmanagement weiterentwickelt.
Die Lehrveranstaltung Betriebssysteme vermittelt die grundlegenden Aufgaben und Funktionsweisen moderner Betriebssysteme und befähigt die Studierenden, diese Techniken strukturiert und eigenständig im Team auf systemnahe Entwicklungsaufgaben anzuwenden. Die Veranstaltung gliedert sich in vier zentrale Themenbereiche:
Grundlagen, Prozessmanagement und Scheduling:
Dateisysteme und Persistenz:
Speichervirtualisierung:
Concurrency: Prozesse und Threads:
Zusätzlich werden die spezifischen Herausforderungen der jeweiligen Bereiche sowie die typischen Lösungsansätze vorgestellt und in einem praxisnahen Kontext angewendet. Praktische Übungen begleiten die Veranstaltung, um den Transfer der theoretischen Inhalte auf realistische Szenarien zu fördern.
Im Labor werden in kleinen Gruppen (typischerweise drei Personen) mehrere Aufgaben bearbeitet, die sich mit systemnaher Programmierung in C und C++ beschäftigen.
Dabei sollen die Schnittstellen zum Betriebssystem Linux kennengelernt werden, und wie man die dadurch bereitgestellten Funktionalitäten praktisch nutzen kann.
Themen sind hierbei: Dateisystem, Prozesse, Kommunikation, Speicherverwaltung, verlinkte Datenstrukturen und Bitmanipulation.
Die konkreten Aufgaben befassen sich mit der Beschleunigung (Parallelisierung) eines bestehenden Ray-Tracers durch Verwendung mehrerer Prozesse, der Bearbeitung von Grafik-Dateien in einem Mosaikgenerator, der Erstellung eines Broadcast-Servers für Song-Texte, und der Komprimierung von Bilddaten durch Lauflängencodierung.
Die durchzuführenden Implementierungen in C und C++ vertiefen die Fähigkeiten im Umgang mit Systembibliotheken, dynamischen Datenstrukturen, Bit-Operationen, Speicherverwaltung und Zeigern. Bei jeder Aufgabe gilt es neben der eigentlichen Problemstellung auch mehrere hinführende, kleine Aufgaben zu lösen.
Einführungsfolien zum Thema jeder Übung.
Vertiefende Informationen auf den Übungsblättern.