Betriebssystembau
Art der Veranstaltung: Vorlesung/Übung
Semester: Sommersemester, 2V+3Ü
Dozent/Dozent: Christian Dietrich
Prüfungsform: Mündliche Prüfung
E-Mail: christian.dietrich@tuhh.de
Vorlesungstag/Uhrzeit: Dienstag 12:15 bis 13:45 Uhr
Übungstag/Uhrzeit: Freitag 12:15 bis 14:30 Uhr
Raum/Ort: Online
StudIP-Veranstaltung:
Modulzuordnung:
- Technischer Ergänzungskurs (TEK) 6 LP
- Master "Computer Science"
- Master "Informatik-Ingenieurwesen"
Bei Fragen können Sie uns jederzeit eine E-Mail schreiben. Betreut wird Betriebssystembau von Christian Dietrich.
Inhalt der Vorlesung
Ziel der Vorlesung ist die Vermittlung von konzeptionellen Grundlagen und wichtigen Techniken, die für den Bau eines Betriebssystems erforderlich sind. In den vorlesungsbegleitenden Übungen werden diese Kenntnisse praktisch angewendet, indem ein kleines PC-Betriebssystem in kleinen Arbeitsgruppen von Grund auf neu entwickelt wird. Um dies zu bewerkstelligen, sind fundierte Kenntnisse über Aufbau und Funktionsweise der PC-Hardware erforderlich, die ebenfalls in der Lehrveranstaltung vermittelt werden. Dabei werden gleichzeitig Grundlagen aus dem Betriebssystembereich wie Unterbrechungen, Synchronisation und Ablaufplanung, die aus anderen Veranstaltungen weitgehend bekannt sein sollten, wiederholt und vertieft.
Die Vorlesung umfasst folgende Themen:
- Grundlagen der Betriebssystementwicklung
- Unterbrechungen (Hardware, Software, Synchronisation)
- IA-32: Die 32-Bit-Intel-Architektur
- Koroutinen und Programmfäden
- Scheduling
- Betriebssystem-Architekturen
- Fadensynchronisation
- Gerätetreiber
- Interprozesskommunikation
Organisation und Inhalt der Übungen
Ziel der Übungen ist es, schrittweise ein kleines Betriebssystem für den PC zu entwickeln. Für die Bearbeitung der Übungsaufgaben werden Gruppen von je 2 Studierenden gebildet. Dabei gibt es zwei Varianten der Übung:
- OOStuBS ist die klassische Uniprozessorvariante
- MPStuBS ist die Variante für moderne Mehrkernrechner
In den Tafelübungen werden Fragen zum Stoff der Vorlesung geklärt und die Übungsaufgaben vorgestellt. Zusätzlich werden Hintergründe, die für die Aufgaben relevant sind, stärker beleuchtet (z.B. Hardware-Spezifika), Knackpunkte im Design und der Implementierung zusammen besprochen und Lösungen entwickelt. Da die Bearbeitung einer Aufgabe in der Regel zwei Wochen beansprucht, finden Tafelübungen nicht wöchentlich statt (siehe Semesterplan).
Die Teilnahme an den Übungen, sowie die Abgabe der Übungsaufgaben ist in diesem Semester optional, allerdings wird beides stark empfohlen.
Technische Infrastruktur
Aufgrund der aktuellen Lage sind die Computerpools nicht zugänglich, daher sind hier die Möglichkeiten an die Infrastruktur und Software zu kommen ausgelistet:
- Fernzugrgriff auf den Linux-Pool
- Konsole per SSH
- Graphische Oberfläche per X2Go
- Installation der Software auf einem eigenen PC
Auch wenn die Computerpools gerade nicht zugänglich sind, sind wir für auftauchende Fragen und Probleme da. Weiteres wird in der Übung und Vorlesung bekannt gegeben.
Eigener PC
Für die Installation auf dem eigenen PC wird folgende Software benötigt:
- QEMU (qemu, qemu-system-x86, qemu-kvm)
- GCC (build-essentials, binutils, gcc-multilibs, g++)
- nasm
Für Ubuntu (20.04):
apt install nasm qemu qemu-system-x86 qemu-kvm build-essential binutils gcc-multilib g++
Vorläufiger Semesterplan
KW | Montag | Di 12:15 | Fr 12:15 | Fr 13:45 | Späteste Abgabe |
---|---|---|---|---|---|
KW14 | 05. April | VL1Einführung | Ü0C++ | RÜ | |
KW15 | 12. April | VL2BS-Entwicklung | Ü1Ein-/Ausgabe | RÜ | |
KW16 | 19. April | RÜ | RÜ | RÜ | |
KW17 | 26. April | VL3IRQs (Hardware) | Ü2IRQ-Behandlung | RÜ | A1Abgabe 1 |
KW18 | 03. Mai | VL4IRQs (Software) | RÜ | RÜ | |
KW19 | 10. Mai | Pfingsten | |||
KW20 | 17. Mai | VL5IRQs (Synchronisation) | Ü3IRQ-Synchronisation | RÜ | A2Abgabe 2 |
KW21 | 24. Mai | VL6Intel IA-32 | RÜ | RÜ | |
KW22 | 31. Mai | VL7Koroutinen und Fäden | Ü4Fadenumschaltung | RÜ | A3Abgabe 3 |
KW23 | 07. Juni | RÜ | RÜ | RÜ | |
KW24 | 14. Juni | VL8Scheduling | Ü5Zeitscheiben-Scheduling | RÜ | A4Abgabe 4 |
KW25 | 21. Juni | VL9Architekturen | RÜ | RÜ | |
KW26 | 28. Juni | VL10Fadensynchronisation | Ü6Fadensynchronistion | RÜ | A5Abgabe 5 |
KW27 | 05. Juli | VL11Gerätetreiber | RÜ | RÜ | |
KW28 | 12. Juli | VL12Ausblick | Ü7Anwendung (opt) | RÜ | A6Abgabe 6 |
Die optionale Übung 0 bietet eine kurze Einführung in betriebssystemspezifisches C++. Die Abgabe findet in den Rechnerübungen durch gemeinsame Diskutieren der Lösung statt.
Vorkenntnisse
- Grundlagen aus dem Betriebssystembereich wie Unterbrechungen,
Synchronisation und Ablaufplanung aus früheren Veranstaltungen (Betriebssysteme)
- Wiederholung und Vertiefung in Vorlesung und Übung
- C / C++ und Assembler (x86)
- Betriebssystemspezifische Inhalte werden in den Übungen vermittelt.
- Hilfe bei Bedarf
Evaluation
- SS23 • Übung • Evaluation (PDF) • Bewertung: 1.4
- SS23 • Vorlesung • Evaluation (PDF)
- SS22 • Vorlesung • Evaluation (PDF)
- SS21 • Vorlesung • Evaluation (PDF) • Bewertung: 1.4
Anmeldung und weitere Infos
Für diese Veranstaltung ist eine Online-Anmeldung über Stud.IP erforderlich. Bitte registrieren Sie sich (falls noch nicht geschehen) für Stud.IP und tragen Sie sich dort in die entsprechende Veranstaltung ein.