Eigenes OS programmieren

7 Antworten

Für ein "brauchbares" Betriebssystem brauchst du eine Speicherverwaltung (virtueller Speicher), ein Dateisystem, und einen CPU-Scheduler. Und die Treiber, die die darunterliegende Hardware ansteuern (MMU, Festplatte Tastatur, Monitor). Netzwerkanbindung wäre sicher auch nicht schlecht. Und wenn du nicht ein bestehendes Binärformat verwendest (z.B. ELF), dann brauchst du auch noch eine Compiler-Toolchain.

Und bestimmt habe ich noch irgendwas vergessen.

Ob du das alles in Assembler schreiben willst wage ich zu bezweifeln. Mach das nur wo es wirklich nötig ist (Hardwareansteuerung), dann hast du immer noch genug Assembler zu programmieren.

Ansonsten kann ich dir nur empfehlen, ein gutes Betriebssysteme-Buch zu lesen. Silberschatz - Operating System Concepts (englisch) oder Tanenbaum - Modern Operating Systems.

Der Silberschatz ist um Längen besser und verständlicher, aber den gibts wohl nicht auf deutsch. Allerdings hat Tanenbaum mit "Minix" auch ein eigenes Betriebssystem (zu Lehrzwecken) entwickelt, das könnte dich interessieren.

Ein OS würde ich in C++ & Assembler entwickeln. Manche Dinge gehen NUR in Assembler, aber der Großteil sollte in einer strukturierten CompilerSprache geschrieben werden, sonst ist man einfach zu langsam / ineffektiv - und verläuft sich u.U. im eigenen Code.
Um die Abläufe beim Booten zu verstehen könntest Du die Doku zum GRUB durchgehen - oder in "PC-Intern" (Buch von Tischer, DataBecker-Verlag) nachschlagen.

Einen Großteil der Tests kannst Du auch von DOS (zBsp. : FreeDOS) aus machen - ohne jedes mal den BootVorgang komplett durchlaufen zu lassen. Unter DOS kann man ganz easy das DAS komplett "entmachten", da die CPU da noch im RealMode läuft.

Für die Programmierung des ProtectedMode (für OS kaum zu umgehen) brauchst Du umfassende CPU-Doku, die bekommt man bei Intel als PDF (https://software.intel.com/en-us/articles/intel-sdm) oder auch in Buchform ("Die Intel Familie" von Robert Hummel, ZD-Press).

Woher ich das weiß:eigene Erfahrung

Tja, ich entwickle selbst ein Betriebssystem - und muss dir in einem Punkt widersprechen: Hinter einem Betriebssystem steckt viel Code. Denn während du in C aus die Standartbibliothek zugreifen kannst, musst du dir hier wirklich alles selbst schreiben (es sei denn, du entwickelst ein 16-Bit-Betriebssystem; Dann kannst du auf einige Funktionen des BIOS zurückgreifen).

Was Assembler betrifft: Du brauchst auf jeden Fall Assembler. Allerdings kannst du den Teil an Assembler - wenn du es richtig machst - ziemlich gering halten, und das was du brauchst kannst du dir mit "Learning by doing" mit dem unten angegebenen Tutorial aneignen. Ansonsten kannst du dir ja mal ein Buch zum Thema holen - Tutorials im Internet sind meiner Meinung nach nicht zu empfehlen, wenn du größere Programme in Assembler schreibst, da du insbesondere als Anfänger eine kleine Referenz im Buchformat gut gebrauchen kannst.

Hier nun der Link zum Tutorial:

http://www.lowlevel.eu/wiki/OS-Dev_f%C3%BCr_Einsteiger

Die Seite enthält neben dem Tutorial ein umfangreiches Wiki zum Thema.

Das Wiki ist zwar im deutschsprachigen Raum das umfangreichste, allerdings kommst du im OS - Development nicht ohne Englisch - Kenntnisse aus. Daher hier der Link zur umfangreicheren englischen Version des Wikis:

http://wiki.osdev.org

0

Hallo,

In den Büchern "PC Intern 4 von M. Tischer" und "PC Hardware von H.-P. Messmer" ist alles beschrieben... Ein Buch über Assembler solltest du dir auf jeden Fall zulegen..

Assembler 2. Auflage von Rhode/Roming und die Assembler Referenz von O. Müller solltest du dabei auf dem Tisch haben. Du musst wissen was AX, BX, CX, DX sowie CS,DS,ES,BP sind sonst läuft garnichts bei dir. Ebenso sollte dem Stack (SS:SP oder BP)und dessen Programmierung große Aufmerksamtkeit geschenkt werden.

Am besten schreibst du erstmal ein paar kleinere .com Programme für MS-DOS. Da lernst du den Umgang mit den Interrupts.

Fange mit dem OS im Real Mode an und nutze die BIOS Interruptfunktionen für dein OS, es nimmt dir viel Arbeit ab. Zur freien Verfügung hast du deine Grafikkarte, dein Diskettenlaufwerk und deine IDE Festplatte.

Im Internet kann ich dir noch Henkesoft empfehlen.

Einen Booloader mit Textausgabe zu erstellen ist ein Kinderspiel, alles andere jedoch bedarf sorgfältiger Planung und Programmierung.

Viel Erfolg,

Nicky

Für Microsoft Visual Studio gibt's "Cosmos". Damit kann man sein einziges OS programmieren. Tutorials? Einfach mal bei Youtube gucken oder googlen. Ich glaub mit mehrjährigen C/C++ Kenntnissen sollte das ja kein Problem sein :)

Das war nun wirklich nicht das was ich vorhatte ^^

2