Wie beginnt man eigentlich ein OS?


16.07.2022, 20:23

Ich meine: Wenn ich jetzt direkt anfangen würde zu programmieren, wie würde ich da beginnen? Was macht man zuerst.

Nehmen wir mal an ich kann richtig gut programmieren, hab das eigene Handy gebaut und will jetzt das OS beginnen. Was macht man Zuerst. Nichts lesen oder so bitte. Ich will eine direkte Antwort

5 Antworten

Ich würd erstmal viele Wikipedia-Artikel und Bücher darüber lesen, YouTube-Videos gucken bevor ich anfangen würde, irgendwas zu programmieren. Aber das ist nur meine Meinung und ich hab auch noch nie ein OS programmiert. Hier hat jemand ein Betriebssystem programmiert auf dem nur Tetris läuft: https://www.youtube.com/watch?v=FaILnmUYS_U

Und: Ich hab grad in die Beschreibung von diesem Video geguckt und siehe da, er hat ein RESOURCES verlinkt:

osdev.org: https://wiki.osdev.org/Main_Page
Sortix: https://sortix.org/
ToaruOS: https://toaruos.org/
James Molloy's Kernel Development Tutorials: http://www.jamesmolloy.co.uk/tutorial_html/

Vielleicht hilft dir das etwas weiter.

Woher ich das weiß:Recherche

Weder noch.

Du würdest erst einmal ein Konzept aufsetzen, und dir überlegen, was das OS können müsste.

Mit Schreiben von Code fängst du erst wesentlich später an. Nicht bevor du zumindest schon einige Klarheit darüber hast, was dein OS machen können soll.

Anfangen zu Coden, um dann zu bemerken, dass man eigentlich noch gar ned weiss, was man coden will, ist definitiv die falsche Herangehensweise.

Nichts lesen oder so bitte. Ich will eine direkte Antwort

Selbst einfache Betriebssysteme im Embedded-Bereich sind so ziemlich die komplexeste Art von Software, die es gibt.

Da wirst du schon einiges lesen müssen, um überhaupt die Aufgabenstellung zu verstehen.

Sehr, sehr grob gesagt gibt es zwei Richtungen, aus denen man arbeiten muss: das Interface zur Hardware (wie kriege ich überhaupt die Bytes von/zu den Teilen meiner Hardware) und allgemeine Infrastruktur (Scheduling wäre bei einem halbwegs modernen OS ein erstes Thema).

Viel Spaß.

Im Grunde ist es wohl ähnlich wie man vorgeht, unabhängig davon, was man entwickeln will. Geräte, Programme, Abläufe - in jedem Fall muss man erst das Ziel definieren und die Bedürfnisse der Zielgruppe kennen. Zumindest ist das der Fall, wenn Du etwas für einen Markt entwickelst, also ein Einkommen damit erzielen möchtest.

Wenn Du das aus Spaß und ohne Ziel machst, kannst Du sofort mit Coden beginnen und dabei lernen. Da wirst Du eher Umgang mit Werkzeugen erlernen und verstehen, wann und wie man diese verwendet.

Du willst Ravioli essen. Dein Ziel ist, dass möglichst schnell das Essen (würg...) am Tisch steht. Da wirst Du nicht erst einen Hammer, eine Säge, einen Bolzenschneider und noch drölf andere Werkzeuge ausprobieren und schauen, wie der schönste Rand am abgeschnittenen Deckel entsteht. Da solltest Du also schon wissen, was das beste Werkzeug für dieses Ziel ist.

Es stellt sich also die Frage: Willst Du den Umgang mit Werkzeugen erlernen oder willst Du eine bestimmte Aufgabe lösen?

Plattformdokumentation lesen.

Sprache ist prinzipiell egal, solange sie die notwendigen Primitive hat, um direkt HW anzusteuern, oder ne einfache Möglichkeit mit einer entsprechenden Sprache zu harmonieren.

Generische Teile wie Scheduler etc. sind natürlich unabhängig von der Plattform.

Und egal wie, Du brauchst am Ende lauffähigen Code, also braucht es die entsprechenden Werkzeuge wie Compiler etc., mit denen Du aus Deiner Hochsprache dann eben den Code für die Zielplattform machst.

Was möchtest Du wissen?