Obwohl wir in der Betriebssystementwicklung sehr grundlegende Sachen machen, ist die
Toolchain doch etwas länger als in vielen anderen Bereichen und bedarf auch etwas Einarbeitung.
Nach der ersten Aufgabe solltet ihr aber fitteren sein.
Außerdem nutzen wir einige grundlegende C++ Eigenheiten.
Sofern ihr bis jetzt nur in C oder Java programmiert habt, erlernt ihr in dieser Aufgabe alle
für stups notwendigen Konzepte.
Wer sich allerdings zu den C++-Cannons zählt, versucht ein vernünftiges Maß anzuwenden
und gut lesbaren Codes zu produzieren.
Beispielsweise sind Templates für diese Aufgabe nicht notwendig bzw. in einigen Fällen sogar
kontraproduktiv.
Überlegt euch im Zweifelsfall den Einsatz sehr genau.
Das Herz dieser Aufgabe ist natürlich die Programmierung der Ein- und Ausgabe.
Diese werden wir auch noch in allen Folgen und Aufgaben verwenden.
Und sie gibt euch bereits einen guten Überblick über die verschiedenen Arten mit der Hardware
zu kommunizieren.
Sinnvollerweise fangt ihr natürlich erst mit der Programmierung der Ausgabe an, danach
die Eingabe.
Und, sofern ihr Lust habt, könnt ihr noch eine Serialis-Schnittstelle implementieren.
Diese wird allerdings nicht gewertet, der CGA-Textmod und die Tastatur hingegen schon.
Bitte legt auch entsprechend den Fokus.
Wenn ihr den Stubsordner öffnet, dann sieht das in etwa so aus.
Wir haben fünf wichtige Quelltextordner.
Boot enthält den Startup-Code, Utils generische Helfer.
In Object liegt der der C++ Standardbibliothek nachempfundene Output-Stream samt String-Buffer,
die ihr vielleicht schon für Aufgabe 0 implementiert habt und weiter verwenden könnt.
Die Ansteuerung der Hardware wird in Machine implementiert.
Hier müsst ihr den Textmod für die grundlegende Ausgabe implementieren, sowie die Erweiterung
Text-Window, welche diesen in virtuelle Ausgabe-Fenster unterteilt.
Damit ihr nun einfach mit Stream-Operatoren die Ausgabe in den Fenstern tätigen könnt,
muss noch im Treiberverzeichnis Device der Text-Stream erstellt werden, der dies mit
dem Output-Stream vereint.
Alle Dateien, die ihr für diese Aufgabe anfassen müsst, sind rot umrandet.
Die grün umrandeten Klassen und Namespaces sind für die optionale Aufgabe der seriellen
Schnittstelle.
Insbesondere in Machines sind noch Geräte vorhanden, welche nur kurz während der Initialisierung
verwendet werden, wie zum Beispiel dem PID, dem Program Interval Timer.
Wir haben diese zwar dokumentiert, aber um den genauen Ablauf zu verstehen, muss man
die entsprechenden Datenblätter gründlich wälzen.
Wer Lust hat, darf sich das natürlich gerne genauer anschauen, aber es ist auch vollkommen
in Ordnung, wenn man das stattdessen für schwarze Magie hält und vorerst nicht weiter
verstehen will.
Ein extremes Beispiel ist hierzu übrigens ACPI, das Advanced Configuration and Power
Service, welches derart kompliziert ist, dass selbst Linux und FreeBSD lieber die Referenzimplementierung
ACPI Component Architecture von Intel verwenden.
Nach Aufgabe 6 wird euer Stubs in etwa so aussehen.
Vielleicht erkennt ihr der eine oder andere die Struktur des sogenannten Betriebssystem-Burgers
aus der Vorlesung wieder.
Einen Teil der Dateien, insbesondere die langweiligen, geben wir euch mit jeder weiteren Aufgabe
vor.
Wir werden euch bei den Vorgaben allerdings nur neue Dateien geben, aber keine existieren
Presenters
Zugänglich über
Offener Zugang
Dauer
00:05:30 Min
Aufnahmedatum
2020-07-29
Hochgeladen am
2021-09-20 18:46:28
Sprache
de-DE
Aufgabe 1 der Lehrveranstaltung Betriebssysteme.
Folien und Transkript zum Video.