Praktikum #47 - Betriebssystem im Eigenbau

Praktikum im Hauptstudium / SS 2005 / CS 5850

Angaben

Dozent
Prof. Dr. Peter Schulthess
Betreuer
Stefan Frenz
Termine
Mittwoch, 12-14 Uhr im Raum 121
SWS / LP
2S / 4P

Inhalt

  • Entwurf und Implementierung eines schlanken Betriebssystemkerns
  • Kommunikation zwischen Betriebssystem und Programmiersprache
  • Grundlegende Konzepte des Bootvorgangs eines PC
  • Direkte Programmierung der Hardware

Im Rahmen der Veranstaltung wird ein schlankes Betriebssystem für PC-Hardware in der Programmiersprache Java entwickelt. Die Entwicklung geschieht in mehreren aufeinander aufbauenden Stufen: Leere Schleife, einfache Speichervergabe mit New, formatierte Textausgabe, Behandlung von Unterbrechungen, einfache Treiber, Abfangen von Laufzeitfehlern etc.

Gearbeitet wird mit dem Plurix Java Compiler, der Java-Quelltext in Intel-Maschinencode übersetzt. Die Systemarchitektur kann sich am Plurix Betriebssystem orientieren, welches an der Abteilung entwickelt wird. Der Verteilungsaspekt bleibt jedoch unberücksichtigt.

Scheinkriterien

  • Regelmäßige Teilnahme an den Besprechungen
  • Erfolgreiche Implementierung aller 13 Phasen
  • Überzeugendes abschließendes Code-Review

Unterlagen und Software

Teilweise nur innerhalb der Uni Ulm zugreifbar.

Einführungsfolien Motivation zum Entwurf schlanker Systeme.
Bootvorgang Beleuchtung des Bootvorgangs mit besonderem Augenmerk auf das Speicherlayout bei Start des PCs und des Plurix-Systems.
Software-Paket Compiler und Runtime-Struktur.
Linux-Addon Compiler für Linux.
Compiler-Update Neuer Compiler für Windows. Linux-Benutzer bitte die bisherige Version verwenden und das jc-Verzeichnis durch das des neuen Windows-Compilers ersetzen.
Anleitung Einführung in Übersetzungsvorgang, Compiler-Besonderheiten, Diskettenerstellung sowie Beschreibung des System-Arrays, das Informationen zu Klassen und Adressen enthält. Aktuelle Version: 1.5 vom 11.03.2005.
Pentium Architecture Zusätzliche Dokumentation von Intel: "Pentium Architecture and Programming Reference". Für Phase 4 des Praktikums ist das Kapitel 14 unter Umständen interessant.
Compiler-Manual Das offizielle Compiler-Handbuch für besonders interessierte Teilnehmer.
IDE-Folien Kapitel 17 der Systemprogrammierung-Vorlesung von 2003 mit den Folien für IDE-Programmierung.

Phasen

P1: B8000-Programm Aufgabenstellung für Phase 1 und Dokumentation zum Aufbau des Bildschirmspeichers. Aktuelle Version: 1.1 vom 11.03.2005.
P2: new Aufgabenstellung für Phase 2 und Angabe der benötigten Änderungen in den Laufzeitstrukturen sowie der Methoden zur Manipulation des Cache-Verhaltens. Aktuelle Version: 1.3 vom 14.03.2005.
P3: Output Aufgabenstellung für Phase 3. Aktuelle Version: 1.1 vom 14.03.2005.
P4: Interrupts Aufgabenstellung für Phase 4 und Dokumentation des Interrupt- und Exception-Handlings. Aktuelle Version: 1.2 vom 14.03.2005.
P5: Keyboard Aufgabenstellung für Phase 5 und kurze Beschreibung des Stationrecords und der Tastenübermittlung. Aktuelle Version: 1.1 vom 14.03.2005.
P6: Bluescreen Aufgabenstellung für Phase 6 und Beschreibung des Stackframes. Aktuelle Version: 1.1 vom 14.03.2005.
P7: Main-Loop Aufgabenstellung für Phase 7. Aktuelle Version: 1.1 vom 14.03.2005.
P8: Task-Abbruch Aufgabenstellung für Phase 8 und Beschreibung einer Funktion zur Stack-Manipulation. Aktuelle Version: 1.2 vom 17.05.2005.
P9: PCI-Bus Aufgabenstellung für Phase 9 und Beschreibung einer Möglichkeit zum Zugriff auf den PCI-Konfigurationsraum. Aktuelle Version: 1.3 vom 27.05.2005.
P10: Virtual Memory Aufgabenstellung für Phase 10 und Beschreibung von PageDirectory, PageTable, CR2- und CR3-Register. Aktuelle Version: 1.2 vom 27.05.2005.
P11: Symbolinformationen Aufgabenstellung für Phase 11 und Beschreibung der vom Compiler erzeugten Symbolinformationen. Aktuelle Version: 1.0 vom 31.05.2005.
P12: Textueller Aufruf Aufgabenstellung für Phase 12 und Beschreibung der Semantik eines textuellen Aufrufs. Aktuelle Version: 1.0 vom 31.05.2005.
P13: Eigeninitiative Die Aufgabenstellung für Phase 13 ist individuell für jede Gruppe.