ObjectsOS Konzept vom 21.8.2001 ================= Inhalt ====== 1. Allgemeines zum Konzept 2. Aufbau des Grundsystems 3. Verzeichnisstruktur 4. Gesamtaufbau des Systems 1. Allgemeines zum Konzept Ein Betriebsystem schreibt man nicht von Heute auf Morgen, umso wichtiger das ein klares Konzept vorliegt. Desshalb auch weil, wir uns nicht so oft treffen und so jeder seine eigenen Vorstellungen zum Projekt hat. Ich denke ich schreib hier mal meine Ideen herunter, dann können wir das mal diskutieren. 2. Aufbau des Grundsystems Unser erstes System soll von Diskette bootbar sein und auf das FAT File-System von DOS aufsetzen. Als Benutzerinterface würde ich "nur" ein GUI schreiben und die Kommandozeileneingabe (kurz Shell ;-) ganz weglassen. Thomas hat mich beim letzten Chat Gespräch davon überzeugt, das ein Mikrokernel die beste Lösung ist. Für alle die, die die definition eines Mikrokernels nicht kennen: Ein Mikrokernel, besteht nicht wie bei Linux nur aus einer Kerneldatei, sondern es hat für jede Grundaufgabe ein eigene Datei mit Systemrutinen. Nach dem Geschpräch mit Thomas sehe ich hier solches Grundsystem: 1. Bootsektor (Sinn und Zweck sollte klar sein) 2. Loader (loader.oos) (wird eventuell so programmiert, dass er im Betrieb nicht mehr gebraucht wird -> weniger RAM verbrauch) 3. Kernel: Drei Dateien (z.B. io.oos, cpu.oos, memory.oos) die den Mikrokernel bilden. In diesen Dateien sind legentlich die wichtigsten Systemrutinen, die auf jedem System gebraucht werden. Alles andere wird mit Treiber gelöst, die mit dem Kernel Teil (io.oos) eingebunden oder empfernt werden. Hinter den drei Dateibezeichungen, sehe ich das minimal System eines PCs. [CPU] | Northbidge-[RAM] | [IO] Also der Prozessor, der mit dem Arbeitsspeicher und den verschidenen Eingabe/Ausgabe-Einheiten kommuniziert. Ich habe noch keine genaue Idee wie, das mit den Treiber funktionieren wird, aber vor einem Jahr hatte ich auch noch keine Ahnung wie man einen Bootsektor beschreibt und zudem ist es das erste Konzept. Es sind zudem noch einige andere Punkte zu überdenken und zu diskutieren: - Laden des Systems (Ini Dateien) - Speicherverwaltung (Aufteilung des Speichers, Paging, Gates, ect. für das RAM-Steuerprogramm) - Grafikkartentreiber - Tastaturtreiber bzw. Maustreiber 3. Verzeichnisstruktur Bei der Verzeichnisstruktur dürfen wir auf alle Fälle nicht die Fehler machen, die bei vielen Systemen gemacht wurde. Viele Systeme sind so stark gewachsen, das das Verzeichniskonzept nicht mehr richtig aufgeht und so 1000e von Dateien im gleichen Verzeichnis sind. Ich habe mir das so gedacht, das das System 100%ig von den Anwenderprogrammen und Daten getrennt wird. Grundsätzlich gibt es folgende Dateiarten. Anwenderdaten, Konfigurationsdaten, Bibliotheken, Systemdateien. Es kann gut sein das ich hier noch eine Gattung vergessen habe. Für diese Dateien würde ich eine solche Verzeichnisstruktur anlegen: /usr /prg /lib /sys /* Benutzerdaten */ /usr/administrator/ini Konfigurationsdateien /usr/administrator/Desktop Desktop Dateien /usr/administrator/Trash Papierkorb (falls es soetwas mal geben soll) /usr/administrator/Dateien Persönliche Dateien /usr/administrator/... /usr/ /* Programmdaten */ /prg/Editor/6.5/ini Konfigurationsdateien für alle Benutzer /prg/Editor/6.5/help Hilfedateien /prg/Editor/6.5/... /prg/// /* Bibliotheks Dateien */ /lib/stdlib/2.2/ Bibliotheks Dateien /lib// /* Systemdateien */ /sys/ Kerneldateien /sys/drv/video Grafikkartentreiber /sys/drv/sound Soundkartentreiber /sys/drv/disk Diskettentreiber /sys/drv/hd HD und CDROM /sys/drv/vfs Virtual File System (wär doch keine schlecht Idee ;-) /sys/drv/... Weitere Treiber... /sys/gui/ Dateien für das GUI 4. Gesamtaufbau des Systems Die gesammte Struktur stell ich mir dann so vor: [Anwender] | [GUI/Programme] | [Programmbibliotheken] | [Kernel: io.oos, memory.oos, cpu.oos] | | | [Treiber] | | [Hardware] Die Bibliotheken würde ich so gliedern: - Standard Library (muss vorhanden sein und sollte alle nötigen Prozeduren enthalten) - Audio Library - Video Library - Network Library