Betriebssystembau und Betriebssystembau für Mehrkernsysteme
- Semester:
- Sommersemester
- Anrechenbar im:
- Bachelor/Master
- Leistungspunkte
- 5 (Single Core) bzw. 8 (Multi Core)
- Dozent:
- Daniel Lohmann
- Betreuer:
- Daniel Lohmann, Dominik Töllner, Lars Wrenger
- E-Mail:
- bsb@sra.uni-hannover.de
- Zeit/Raum:
-
- Vorlesung: Freitag, 10:15 bis 11:45 Uhr, SRA Seminarraum (Raum 135, Appelstr. 4, 1.OG)
- Übung: Dienstag/Mittwoch, 12:30 bis 14:00 Uhr (erste Termine abweichend, siehe Semesterplan),
SRA Seminarraum (Raum 135, Appelstr. 4, 1.OG)
- Studiengänge:
-
- Betriebssystembau 5 LP, 2V+2Ü
- Bachelor Informatik: IV
- Bachelor Technische Informatik: IV
- Bachelor E-Technik: diverse Modulgruppen
- Master Informatik: GI
- Master Technische Informatik: GTI
- Master E-Technik: diverse Modulgruppen
- Betriebssystembau für Mehrkernsysteme, 8 LP, 2V+4Ü
- Master Informatik: INF
- Master Technische Informatik: INF
- Betriebssystembau 5 LP, 2V+2Ü
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 früheren Veranstaltungen (z.B. Grundlagen der Betriebssysteme) 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. Zunächst gibt es zwei Varianten der Übungen:
- OOStuBS (Betriebsystembau) ist die klassische Uniprozessorvariante: 5 Leistungspunkte (2V + 2Ü)
- MPStuBS (Betriebssystembau für Mehrkernsysteme) die Variante für moderne Mehrkernrechner: 8 Leistungspunkte (2V + 4Ü)
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. Die Bearbeitung einer Aufgabe
beansprucht in der Regel zwei Wochen, daher finden die Tafelübungen
im 2-Wochenrhythmus statt (siehe Semesterplan).
Technische Infrastruktur
Aufgrund der aktuellen Lage sind unsere Labore nicht zugänglich, daher sind hier die Möglichkeiten an die Infrastruktur und Software zu kommen ausgelistet:
- SSH & VNC auf die Laborrechner
- Installation der Software auf einem eigenen PC
- VirtualBox Image für eine Entwicklungsumgebung in einer virtuellen Maschine (VirtualBox)
Auch wenn unsere Labore nicht zugänglich sind, sind wir für auftauchende Fragen und Probleme da. Weiteres wird in der Übung und Vorlesung bekannt gegeben.
Abgaben finden grundsätzlich per SSH auf unseren Laborrechnern statt.
SSH / VNC
Für die Rechnerübungen steht die Möglichkeit zur Verfügung auf unsere Labor-Rechner über SSH und VNC zuzugreifen. Weitere Informationen folgen, sobald die Laboraccounts eingerichtet sind.
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 (18.04):
apt install nasm qemu qemu-system-x86 qemu-kvm build-essential binutils gcc-multilib g++
VirtualBox Image (aus dem Vorjahr)
Das Image findet sich hier: ubuntu.ova. Es kann einfach in VirtualBox importiert werden und enthält die benötigte Software. Nutzername bsb
, Passwort bsb
. Ggf. muss noch die Netzwerkeinstellung der VM angepasst werden.
md5sum: 138ece371231dc520dbbb8e034379cb3
sha256sum: 6e162fd3c6526099cb62c15d0ef357db368839479494cd50dc2b8f0745a8199d
Vorläufiger Semesterplan
Woche | Di 12:30 | Di 14:00 | Mi 12:30 | Mi 14:00 | Fr 10:15 |
---|---|---|---|---|---|
10.04 | - | - | VL1Einführung | Ü0C++ | VL2BS-Entwicklung |
17.04 | Ü1Ein-/Ausgabe | RÜ | Ü1Ein-/Ausgabe | RÜ | VL3IRQs (Hardware) |
24.04 | RÜ | RÜ | RÜ | RÜ | VL4IRQs (Software) |
01.05 | Ü2IRQ-Behandlung | A1Abgabe 1 | Ü2IRQ-Behandlung | A1Abgabe 1 | VL5IRQs (Synchronisation) |
08.05 | RÜ | RÜ | RÜ | RÜ | - |
15.05 | Ü3IRQ-Synchronisation | A2Abgabe 2 | Ü3IRQ-Synchronisation | A2Abgabe 2 | Brückentag |
22.05 | RÜ | RÜ | RÜ | RÜ | VL6Intel IA-32 |
29.05 | Pfingsten | ||||
05.06 | Ü4Fadenumschaltung | A3Abgabe 3 | Ü4Fadenumschaltung | A3Abgabe 3 | VL7Koroutinen und Fäden |
12.06 | RÜ | RÜ | RÜ | RÜ | VL8Scheduling |
19.06 | Ü5Zeitscheiben-Scheduling | A4Abgabe 4 | Ü5Zeitscheiben-Scheduling | A4Abgabe 4 | VL9Architekturen |
26.06 | RÜ | RÜ | RÜ | RÜ | VL10Fadensynchronisation |
03.07 | Ü6Fadensynchronistion | A5Abgabe 5 | Ü6Fadensynchronistion | A5Abgabe 5 | VL11Gerätetreiber |
10.07 | - | RÜ | - | RÜ | VL12Ausblick |
17.07 | Ü7Anwendung (opt) | A6Abgabe 6 | Ü7Anwendung (opt) | A6Abgabe 6 | - |
Es finden 2 Abgabeslots pro Woche statt, wovon jeder Student nur einen besuchen muss. Die Tafelübung ist ausschließlich am Dienstag. Sie ist allerdings am Mittwoch als Aufnahme verfügbar. Ein Übungstermin kann dabei aus einem Tafelübungsteil (Ü1Ein-/Ausgabe) (nur Dienstags) in dem die nächste Aufgabe vorgestellt wird, einer betreuten Rechnerzeit (RÜ), und einem Abgabetermin (A1Abgabe 1) bestehen.
Die optionale Übung 0 bietet eine kurze Einführung in betriebssystemspezifisches C++.
Vorkenntnisse
- Grundlagen aus dem Betriebssystembereich wie Unterbrechungen,
Synchronisation und Ablaufplanung aus früheren Veranstaltungen (wie Grundlagen der Betriebssysteme)
- Wiederholung und Vertiefung in Vorlesung und Übung
- C / C++ und Assembler (x86)
- Betriebssystemspezifische Inhalte werden in den Übungen vermittelt.
- Hilfe bei Bedarf
Evaluation
- SS24 • Übung • Daniel Lohmann • Evaluation (PDF) • Bewertung: 1.4
- SS24 • Vorlesung • Daniel Lohmann • Evaluation (PDF) • Bewertung: 1.1
- SS23 • Übung • Daniel Lohmann • Evaluation (PDF) • Bewertung: 1.1
- SS23 • Vorlesung • Daniel Lohmann • Evaluation (PDF) • Bewertung: 1.1
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.