Institut für Verteilte Systeme
- 1:
Projekte. - 2:
Publikationen. - 3:
Lehre. - 4:
Personen. - 5:
Abschlussarbeiten. - 6:
Intranet.
Weitere Themen
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. |


