Praktikum #49 - Betriebssystem im Eigenbau

Praktikum im Hauptstudium / CS 5850.001

Angaben

Dozent
Prof. Dr. Peter Schulthess
Betreuer
Stefan Frenz
Termine
Montag 12-14 Uhr in o27/121 ab 24.4.
Anmeldung am 24.4. in der Veranstaltung, keine Voranmeldung oder Reservierung
SWS / LP
4S / 8P

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

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

Aus gegebenem Anlaß: Scheinausschlußkriterien

  • Kopierter Code
  • Nicht verstandener Code
  • Inhaltlich ungenügender Code
  • Mangelhafte Beteiligung an den Besprechungen

Abgeschlossen

Das Praktikum ist beendet, die Ergebnisse zweier Teilnehmer sollen hier wertfrei und exemplarisch mit freundlicher Überlassung der Eigent¨er gezeigt werden. Die Floppy-Images funktionieren im Emulator oder, geschrieben auf eine Diskette ("dd" unter Linux oder rawrite unter Windows), auf einem "richtigen" Rechner.

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 für Windows und Runtime-Struktur.
Linux-Addon Compiler für Linux (Runtime bitte dem Windows-Paket entnehmen).
Anleitung Einführung in Übersetzungsvorgang, Compiler-Besonderheiten, Diskettenerstellung sowie Beschreibung des System-Arrays, das Informationen zu Klassen und Adressen enthält. Aktuelle Version: 1.9 vom 04.05.2006.
Pentium Architecture Zusätzliche Dokumentation von Intel: "Pentium Architecture and Programming Reference". Für Phase 2 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

Bis 07.05.2006. P1a: B8000-Programm
P1b: new
P1c: Output
Aufgabenstellung für Phase 1a und Dokumentation zum Aufbau des Bildschirmspeichers. Aktuelle Version: 1.2 vom 20.07.2005.
Aufgabenstellung für Phase 1b und Angabe der benötigten Änderungen in den Laufzeitstrukturen sowie der Methoden zur Manipulation des Cache-Verhaltens. Aktuelle Version: 1.4 vom 20.07.2005.
Aufgabenstellung für Phase 1c. Aktuelle Version: 1.2 vom 20.07.2005.
Bis 07.05.2006. P2: Interrupts Aufgabenstellung für Phase 2 und Dokumentation des Interrupt- und Exception-Handlings. Aktuelle Version: 1.6 vom 23.08.2005.
Bis 21.05.2006. P3a: Keyboard
P3b: Bluescreen
Aufgabenstellung für Phase 3a und kurze Beschreibung des Stationrecords und der Tastenübermittlung. Aktuelle Version: 1.2 vom 20.07.2005.
Aufgabenstellung für Phase 3b und Beschreibung des Stackframes. Aktuelle Version: 1.2 vom 20.07.2005.
Bis 21.05.2006. P4: Main-Loop Aufgabenstellung für Phase 4. Aktuelle Version: 1.2 vom 20.07.2005.
Bis 11.06.2006. P5a: Task-Abbruch
P5b: PCI-Bus
Aufgabenstellung für Phase 5a und Beschreibung einer Funktion zur Stack-Manipulation. Aktuelle Version: 1.4 vom 10.05.2006.
Aufgabenstellung für Phase 5b und Beschreibung einer Möglichkeit zum Zugriff auf den PCI-Konfigurationsraum. Aktuelle Version: 1.5 vom 10.05.2006.
Bis 11.06.2006. P6: Virtual Memory Aufgabenstellung für Phase 6 und Beschreibung von PageDirectory, PageTable, CR2- und CR3-Register. Aktuelle Version: 1.3 vom 20.05.2005.
Bis 11.06.2006. P7a: Symbolinformationen
P7b: Textueller Aufruf
Aufgabenstellung für Phase 7a und Beschreibung der vom Compiler erzeugten Symbolinformationen. Aktuelle Version: 1.2 vom 13.09.2005.
Aufgabenstellung für Phase 7b und Beschreibung der Semantik eines textuellen Aufrufs. Aktuelle Version: 1.1 vom 20.07.2005.
Bis 17.07.2006. P8: Eigeninitiative Die Aufgabenstellung für Phase 8 ist individuell für jede Gruppe.