Eigenes Betriebsystem
Tja, als erstes schreibst du kleine Routinen, die die Festplatte eines PCs ansprechen können ... darauf aufbauend entwickelst du langsam eine Abstraktion in Form eines Dateisystemtreibers.
Dann wird es Zeit, an die Ausgabesysteme des Systems zu denken, Textausgaben auf einer VGA-Karte sind die einfachsten Ausgaben - also musst du nur Routinen schreiben, die den Textmodus einer VGA-Karte aktivieren und einzelne Zeichen an definierten Positionen auf dem Bildschirm ausgeben. Darauf aufbauend abstrahierst du die Text-Ausgabe.
Nun wird es Zeit für Eingaben, wieder ist die Texteingabe der Anfang des ganzen. So musst du nur lernen, wie man das Keyboard abfragt. Abstrahiere gleich mehrmals, so dass du zwischen mehreren Tastaturlayouts wechseln kannst.
Nun überlege dir ein paar Befehle und Funktionen, um auch mit Dateien und Ordnern arbeiten zu können.
Jetzt wird es Zeit für das Speichermanagement, um Programme laden und ausführen zu können. Abstrahiere möglichst alles, was irgendwie flexibel sein kann, denn wenn du auf Preemptives Multitasking und Speicherschutz umstellen willst, willst du ja nicht alles neu schreiben müssen.
Nun wage dich an das grafische Subsystem, das bedeutet unter anderem die Ausgabe auf einer Grafikkarte sowie die nötige API für grafische Elemente.
Willst du vorhandene Standards bedienen, weil dein OS ja auch mit anderen kommunizieren soll, so musst du diese neu implementieren.
Das wären mindestens ein FAT/FAT32 Treiber.
Wenn du mit den Adressierungsmodi eines PCs klargekommen bist, kannst du dich an ein dynamisches Speichermanagement machen - gut, dass du alles abstrahiert hast.
Nun ist Preemptives Multitasking dran ... lerne, wie man zwischen Kernel- und User-Mode umschaltet ... was das eigentlich ist.
Nun ist das Netzwerk dran ... ein Dienst sollte die Karte überwachen - der zu implementierende Mindeststandard ist TCP/IP.
Entweder du implementierst Samba komplett neu, oder nutzt bereits vorhandene Quellen - die du für dein neues OS selbst übersetzen musst.
Es wird Zeit für den Speicherschutz - dein OS soll ja nicht auf dem Stand von Windows 9x sein.
Als nächstes wenden wir uns vom VGA-Modus ab (bzw. VESA und den ganzen Standard-Modi) und bemühen uns um native Unterstützung der Grafikchips - Nvidia, Intel, S3, ATI ... . Zumindest eine Treiber-API solltest du bereitstellen ... wie man das macht, schaust du am besten beim quelloffenen ATI-Treiber ab - der kann auch 3D beschleunigen ...
Wo wir beim letzten großen Schritt sind: das zu implementierende Minimum ist OpenGL ... mach dir 'nen Kopp.
Und das war nur ein kleiner Ausflug in den Alltag von Microsoft, Apple und den Entwickler-Kommunen rund um GNU und Linux.
Nun frisch ans Werk und viel Spass dabei ;-)
|