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, Andreas Kässens, Lars Wrenger, Kenny Albes

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)

Stud.IP-Veranstaltung:

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

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:

Wir bieten die Möglichkeit, das Betriebssystem in C++ oder in Rust zu implementieren.

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:

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. Tafelübungen finden im SRA-Seminarraum (Raum 135, Appelstr. 4, 1. OG) statt. Die Bearbeitung einer Aufgabe beansprucht in der Regel zwei Wochen, daher finden die Tafelübungen im 2-Wochenrhythmus statt (siehe Semesterplan).

Rechnerübungen finden im SRA-Rechnerlabor (Raum 124, Appelstr. 4, 1. OG) statt, wo zu den entsprechenden Zeiten mindestens ein Betreuer anwesend ist. Auch außerhalb der dedizierten Zeiten können Sie bei Fragen gerne bei uns vorbeischauen.

Technische Infrastruktur

Abgesehen von den Laborrechnern sind hier Möglichkeiten aufgelistet um an die Infrastruktur und Entwicklungsumgebung zu kommen:

SSH

Für die Rechnerübungen steht die Möglichkeit zur Verfügung auf unsere Laborrechner über SSH zuzugreifen. Weitere Informationen folgen, sobald die Laboraccounts eingerichtet sind.

Eigener PC

Für die Installation auf dem eigenen PC wird folgende Software benötigt:

Für Ubuntu:

apt install nasm qemu qemu-system-x86 qemu-kvm build-essential binutils gcc-multilib clang

Für Nix(OS): ./nix-develop.sh gibt euch eine dev shell mit allen notwendigen Abhängigkeiten.

Vorläufiger Semesterplan

Woche Di 12:30 Di 14:00 Mi 12:30 Mi 14:00 Fr 10:15
07.04 - - VL1Einführung Ü0Bootstrapping VL2BS-Entwicklung
14.04 Ü1Ein-/Ausgabe Ü1Ein-/Ausgabe Karfreitag
21.04 VL3IRQs (Hardware+Software)
28.04 Ü2IRQ-Behandlung A1Abgabe 1 Ü2IRQ-Behandlung A1Abgabe 1 Brückentag
05.05 VL4IRQs (Synchronisation)
12.05 Ü3IRQ-Synchronisation A2Abgabe 2 Ü3IRQ-Synchronisation A2Abgabe 2 VL5Koroutinen und Fäden
19.05 VL6Scheduling
26.05 Ü4Fadenumschaltung A3Abgabe 3 Ü4Fadenumschaltung A3Abgabe 3 Brückentag
02.06 VL7Intel IA-32
09.06 Exkursionswoche
16.06 Ü5Zeitscheiben-Scheduling A4Abgabe 4 Ü5Zeitscheiben-Scheduling A4Abgabe 4 VL8Architekturen
23.06 VL9Fadensynchronisation
30.06 Ü6Fadensynchronistion A5Abgabe 5 Ü6Fadensynchronistion A5Abgabe 5 VL10Gerätetreiber
07.07 VL11Ausblick -
14.07 Ü7Anwendung (opt) A6Abgabe 6 Ü7Anwendung (opt) A6Abgabe 6 -

Es finden 2 Abgabeslots pro Woche statt, wovon jeder Student nur einen besuchen muss. Ein Übungstermin kann dabei aus einem Tafelübungsteil (Ü1Ein-/Ausgabe) in dem die nächste Aufgabe vorgestellt wird, einer betreuten Rechnerzeit (), und einem Abgabetermin (A1Abgabe 1) bestehen.

Die Übung 0 bietet eine kurze Einführung wie ein Betriebssystem überhaupt kompiliert und ausgeführt werden kann.

Vorkenntnisse

Evaluation

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.

Stud.IP Veranstaltungen
Betriebssystembau
Gruppenübungen Betriebssystembau

Hinweis: Beide Veranstaltungen werden über die gleiche Stud.IP-Veranstaltung geregelt. Bitte tragen Sie sich also, auch wenn Sie „Betriebssystembau für Mehrkernsysteme“ hören wollen, für „Betriebssystembau“ im Stud.IP ein.