Ich habe Lust gerne ein eigenes Betriebssystem zu machen, aber wie?
Hallo und mir ist es bewusst, dass ein Betriebssystem zu machen ziemlich schwer sein kann, aber ich würde sowas machen als ein Hobby.
Aber ich meine nicht Linux zu nehmen, sondern ein eigenes Betriebssystem zu machen, aber keines mit GUI, sondern einfach ein Terminal, sowie MS-DOS, C64, ZX Spectrum usw. Vielleicht simuliere ich auch eine eigene “simple” CPU oder nehme ein 8 oder 16 Bit Prozessor (wie Zilog Z80, MOS 6502 oder Motorola 68k) und simuliere es damit.
Warum ich auf diese Idee gekommen bin? Weil ich mal ein YouTube eine Person gesehen habe, der ein 16 Bit CPU gemacht hat mit „Logisim Evolution“ und schrieb sogar ein Emulator, Compiler, renderer, Circuit (Schaltkreise) und Programmiersprache. Ich will nicht alles davon machen, aber ich würde gerne mein Betriebssystem in Logisim simulieren und es auch programmieren.
Hier der GitHub Link von meiner Inspiration: https://github.com/sam-astro/Astro8-Computer
Mir ist es bewusst, dass man Assembly Kenntnisse braucht und auf jeden Prozessor, ob von Intel, AMD usw., ist die Programmiersprache auch etwas anders.
Also, wie kann ich anfangen?
6 Antworten
Ein eigenes Betriebssystem zu erstellen kann relativ komplex werden und viel Zeit verschlingen. Mithilfe von systemnahen Programmiersprachen C, Assembler, etc. Betriebssysteme erstellen.
Hier ein interessantes Video dazu:
Sorry, ich hab ein falsches Video hochgepackt. Betriebsysteme werden tradtionell mit C geschrieben, aber Rust ist eine coole Alternative und es gibt schon in Rust ein OS. Redox OS. Aber man kann auch Embedded Systems damit erstellen. Ist auch für 8-Bit und 16-Bit geeignet: https://news.ycombinator.com/item?id=15270502
Ich würde klassisch herangehen und zuerst recherchieren:
- Wofür ist ein Betriebssystem da
- Welche Kernfunktionen sind entscheidend
- Welche Funktionen sind optional (Multitasking...)
- Was gibt es für reale Mini-Betriebssysteme (für Mikrocontroller/ kleine Prozessore sehr viele RTOS= Real Time Operating Systems)
- Was gibt es bereits für Hobbyprojekte
- Welche Abstraktionsebenen/ verschiedene Ansätze gibt es? Betriebssystem ist zunächst unabhängig vom Prozessor, auch wenn es einen Teil gibt, der auf den Prozessor angepasst sein muss. Der Bau eines eigenen Prozessors ist noch mal etwas ganz anderes und erfordert andere Themengebiete... Beim Betriebssystem wäre Entscheidung über Programmiersprache, in welcher Art ggf. Programme geladen werden, welche Interaktion mit der Hardware du unterstützen/abstrahieren möchtest...
...und immer daran denken:
Von Windows über Linux bis MacOS: An allen diesen Betriebssystemen arbeiten eine Menge Leute - und das über viele Jahre hinweg.
Man sollte also die eigenen Ansprüche als "One-Man-Show" nicht so hoch schrauben, dass man es mit diesen Kandidaten aufnehmen könnte.
Dennoch ein schönes Projekt! Viel Erfolg - und nicht entmutigen lassen!
Auch Linus Torvald hat mal klein angefangen. Man weis ja nie. 😉
Ich kenn die Linux Geschichte schon. Ich will das nur als Spaß und soll kein ernst gemeintes Projekt werden.
Ein einfaches Monitorprogramm kann ein Informatik-Student wahrscheinlich an einem Wochenende schreiben.
Als die Microcontroller erfunden wurden, gab es Elektronikzeitschriften, die damit sogenannte Einplatinen-Computer bauten.
https://de.wikipedia.org/wiki/Junior-Computer
Diese hatten ein Betriebssystem, das in Assembler geschrieben war und lediglich Tasten einlesen konnte und etwas auf einem einfachen Display ausgeben konnte.
https://www.youtube.com/watch?v=wI82V9meKnY
Hier wird die Hardware und das OS beschrieben:
https://archive.org/details/elektor-junior-book-1-en/mode/2up
Wenn Du etwas Ähnliches bauen möchtest, ist das nicht sehr schwer. Die Bücher dazu müßte man als PDF finden können oder antiquarisch.
Du mußt überlegen, welche Peripherie das OS bedienen soll. Und dann überlegen, wie man diese ansteuert. Wie Waldelb3 schreibt: Man fängt immer mit einer Schleife an und tastet sich dann langsam vor.
Manche implementieren auf der vorgesehenen Hardware in Assembler zunächst Forth und bauen damit ihre Anwendung oder, falls gewünscht, ihr Betriebssystem.
Nimm dir einen einfachen, gut dokumentierten Microcontroller, für den es einen Compiler für C gibt, und lies die Dokumentation gut durch. Das Wichtigste sind die Register. Dann fängst du an, eine Endlos-Schleife zu schreiben (in der Schleife passiert alles, was das System macht), und mal die Pins anzusteuern und auszulesen. Wenn du verstanden hast, wie das geht, kannst du anfangen, einen Treiber für die Pins zu schreiben. Effektiv ist das einfach eine Methode, die dir das manuelle Auslesen/Setzen der Pins abnimmt. Damit kannst du mal eine LED blinken lassen, wenn du einen Knopf drückst, oder so. Dann kannst du anfangen einen Scheduler zu schreiben, dich um Memory kümmern, ein Display anschließen und einen Treiber dafür schreiben, irgendwelche einfachen Programme schreiben und laufen lassen, etc.
Ja, so was in der Richtung. Es ist wichtig, dass die CPU nicht zu komplex ist, das wird sonst schnell unübersichtlich.
Deswegen meinte ich auch in der Frage, mit einem 8 oder 16 Bit CPUs gerne anzufangen.
Das hat aber wenig mit Programmieren zu tun.