5 - Aufgabe 1: Ein- & Ausgabe [ID:36111]
50 von 83 angezeigt

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

Teil einer Videoserie :
Teil eines Kapitels:
Ein- und Ausgabe

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

Tags

betriebssysteme operating systems stubs
Einbetten
Wordpress FAU Plugin
iFrame
Teilen