Eigenes Betriebssystem Programmieren

Guten Tag,
ich (12 J.) möchte ein eigenes Betriebssystem programmieren könnt ihr mir sagen welche Programmiersprachen ich können muss und welche programme ich benötige und es wäre nett ,wenn ihr
mir auch noch ein paar bücher nennt zum lernen.

L.G. Timon1

Kommt darau fan

Guten Tag,
ich (12 J.) möchte ein eigenes Betriebssystem programmieren
könnt ihr mir sagen welche Programmiersprachen ich können muss

Im Allgemeinen, die Programmiersprache für die es Unterstützung für die Zielhardware hat und die die nötigen Funktionen anbietet. Wenn ich ein OS für eine Kaffeemaschine mit MIDI-Steuerung schreiben will, brauche ich z.B. keine Graphikbibliothek. Bei einem intelligenten Kühlschrank mit RFID-Erfassung und Internet-Display sieht das wieder anders aus.

und welche programme

Editor
evtl. Präprozessor
Kompiler
Linker

am angenehmsten in einer IDE zusammengefasst.

Hmm. Vielleicht solltest du erst einmal mit einem Lastenheft darstellen, was das OS leisten soll?

Gruß

Stefan

Hallo
Einmal angenommen, du kämst auf die Idee ein Windows, Linux oder Dos System programmieren zu wollen…

Da brauchst Du auf jeden Fall eine Programmiersprache, die es erlaubt, auf Register und I/O-Ports zuzugreifen und Interrupts zu behandeln.
Außerdem sollten die einzelnen Chips auf dem Mainboard korrekt bedient werden.
Das geht nur mit Assembler, C mit Inlineassembler, oder statt C auch Delphi.
Ein Spezialist schreibt auch ein Betriebssystem auch mit einem Basic-compiler.
Um auf einem PC ein Betriebssystem zu starten, sind mehrere Schritte und Kenntnisse notwendig.
0. Die jeweilige Assembler-Sprache muß beherrscht werden.

  1. Bios-Interrupts müssen behandelt werden.
  2. Eine Beschreibertabelle muß erstellt werden, der Real-Mode muß ausgeschaltet werden, der Protected Mode muß eingeschaltet werden und das was vorher das Bios machte, muß jetzt das Betriebssystem machen oder ein Interface zum Bios bereitstellen.
    Unter anderem müssen Beschreibertabellen(Descriptor Tables) für jedes neue Programm erstellt werden werden.
  3. Du brauchst dann außer einigen Programmen eine Benutzeroberfläche, also minimal ist das ein Eingabefenster.
  4. Die Treiber, Zeichensätze und Dateiformate brauchst Du auch noch, und mindestens letztere sind ein guter Grund, ein fertiges kostenloses System zu wählen, und dieses nach eigenen Vorstellungen zu verändern und zu erweitern. Hier fallen mir Linuxsysteme oder Free-Dos ein).

Für ein minimales System(z.B. bootbare Spieldiskette) würde ich vorschlagen, ein FreeDos umzubasteln.(Auf Lizensvorschriften achten)

Wenn Du jetzt ganz naiv fragen solltest, „Welches Buch soll ich denn kaufen?“, dann muß ich leider enttäuschen, denn eins reicht mit Sicherheit nicht, und vieles gibts überhaupt nicht in Büchern.

MfG
Matthias

Da hast Du Dir für einen 12-jährigen eine gewaltige Aufgabe vorgenommen.

Und ich wüsste auch schon das richtige Buch für Dich. Das selbe, mit dem Linus Torvalds angefangen hat.
Bloß solltest Du dazu schon etwas mehr Programmiererfahrung haben, als dieses in Deinem Alter möglich ist.

Mein Rat ist deshalb: Lerne erst einmal richtig programmieren.
Beim Programmieren hast Du den Vorteil, recht einfach zu Erfolgserlebnissen zu kommen und an leicht verständliche Einführungen.
Ganz nebenbei lernst Du dann auch die Grundstrukturen des Betriebssystem kennen.

Die wichtigste Programmiersprache für Betriebssystementwicklung ist C. Wobei die Unterschiede zu C++ und Java vergleichsweise gering sind.
Wichtiger als die Sprache ist, dass Du viel Praxis beim Programmieren bekommst.

Denn die Literatur in Sachen Betriebssystementwicklung richtet sich an gestandene Informatiker.

Ciao, Allesquatsch

Den Traum vom eigenen Betriebssystem hat wohl jeder kleine Programmieranfänger^^ ich hatte ihn übrigens auch :wink:

Ein Kollege beim Trainingscamp für die Internationale Olympiade für Informatik hat mir einmal erzählt, ein kleines bootfähiges Programm geschrieben zu haben, mit dem er dann in weiterer Folge eine Art Benchmark durchführen wollte. Das Programm konnte „zwar nur“ Hello World auf dem Bildschirm anzeigen und schaltete den Rechner bei Tastendruck wieder aus, konnte aber erfolgreich von einer Diskette gestartet werden. Wenn ich mich richtig erinnere, hatte er dafür einige Wochen, wenn nicht Monate gebraucht, bis er das soweit hingekriegt hat. Ist also sicher ein ziemlich aufwendiges Unterfangen.

Neben seinen möchte ich auch dir ein paar Tipps mitgeben, wie du das vielleicht eines Tages bewerkstelligen kannst:

  1. Lerne Programmieren. logisch. Als Sprache würde ich dir dabei besonders C ans Herz legen, vielleicht auch ein bisschen C++. Aber pass auf, C ist eine sehr maschinennahe Sprache und auch dementsprechend kompliziert; für Anfänger zumindest. Sei dir im Klaren, dass es dich Jahre kosten wird, eine Programmiersprache hin und auswenig beherrschen zu lernen. Das ist für größere Projekte, besonders bei einem Betriebssystem, unerlässlich. Ich habe zwar von Meinungen gehört, die behaupten, dass man mindestens 5 Jahre programmierne muss, damit man beginnen kann, ordentlich etwas auf die Beine zu stellen, aber da hab ich mich selbst eines besseren belehrt. Wenn du genügend Ehrgeiz hast, schaffst du es locker in ein bis zwei Jahren deine ersten mehrmonatigen Projekte durchzuziehen.
    Wenn du C im Griff hast, würde ich mit Assembler fortfahren. Erste Erfahrungen solltest du ohnehin beim Debuggen deiner C Programme machen. Beachte dabei besonders die verschiedenen Rechnerarchitekturen. Nicht jedes Assemblerprogramm läuft auf jedem Prozessor!
    Zum Programmieren braucht man natürlich eine Entwicklungsumgebung. Mein Kollege hat mir damals geraten NICHT die Compiler von Microsoft zu verwenden, da er im Vergleich zur Linux Konkurrenz was das Compilieren bootfähiger Anwendungen angeht schlechte erfahren gemacht hat. Wenn du bereits Linux verwendest ist dir GCC vielleicht bereits ein Begriff, andernfalls ist er als MinGW oder CygWin auch unter Windows verfügbar. Ich selbst verwende auch MinGW und zwar mit der Entwicklungsumgebung Code::Blocks. Sie ist relativ praktisch, klein, hat ziemlich alles, was eine Entwicklungsumgebung braucht und kann bequem auf jedem USB Stick mitgenommen werden. Von größere Entwicklungsumgebungen (Visual Studio) würde ich zu Beginn eher abraten, da sie mich zu Beginn meiner Karriere eher überfordert haben.
    Codeblocks kannst du hier herunterladen: http://www.codeblocks.org/downloads Vergiss nicht die Version MIT Compiler zu downloaden, also MIT MinGW.
    Gut jetzt hast du eine Entwicklungsumgebung, aber womit fangst du an? Mit einem Tutorial: http://www.tutorials.at/c/c-oder-cplusplus.html Hast du die Basics halbwegs verstanden, ist Eigeninitative gefragt. Ich habe dann begonnen, mich mit Netzwerkprogrammierung auseinanderzusetzten, also ein Chatprogramm geschrieben. Dann hat es mir die Win API angetan. Benutzeroberflächen sind entstanden (Fenster, Buttons, Icons etc.). Dann Grafik (Windows GDI, OpenGL …). und derzeit spiele ich mich mit Disassemblern und ein paar DLLs, von denen ich nur zugern wüsste, wie sie funktionieren. Deinen Vorstellungen sind keine Grenzen gesetzt. Leg einfach los. Sei kreativ. Frag deine Freunde, was sie schon immer am Benutzen des PCs stört und versuche Lösungen dafür zu finden. Es gib immer was Neues zu lernen =)

  2. Lerne Englisch. Wozu, Tutorials gibts doch massenweise auf Deutsch? Das stimmt schon, aber ich habe die Erfahrung gemacht, dass wenn es wirklich ans eingemachte geht (komplexe Probleme, API Funktionen, Bibliotheken Dritter etc.) englischsprachige Dokumentationen bei weitem überwiegen. Außerdem sind auch die Ergebnisse beim Googlen wesentlich ergiebiger, wenn man gleich auf Englisch googlet. Gewöhn dir auch an, in Englisch zu programmieren, damit das irgendwann einmal die ganze Welt lesen und versteh kann, wenn du einmal was richtig großes bastelst^^

  3. Versuche zu verstehen, wie Betriebssysteme funktionieren. Da kann ich dir leider nur sehr wenig helfen. Ich vermute einmal, dass du erste Einsichten ohnehin beim Programmieren lernen wirst. Sei es bei der Erstellungen von grafischen Benutzeroberflächen oder bei der Benutzung diverser API Funktionen. Weiteres sollte auch Wikipedia einen kurzen Überblick über die Materie geben. Alles weitere wirst du dir wahrscheinlich selbst aus dem Internet und aus Büchern zusammensuchen müssen. Ich habe einmal währen der Suche nach einem Tutorial wie man Gerätetreiber unter Windows programmiert eine tolle Beschreibung gefunden, wie der Windows Kernel (Betriebssystemkern) arbeitet und Treiber lädt bzw. verwaltet. Also google einfach einmal ein bisschen. Ich glaube aber zu meinem Leidwesen (bin totaler Windowsfan), dass du auf der Linuxseite mehr Erfolg haben wirst, da es hier einen Kernel gibt, dessen Quellcode du dir downloaden und ansehen kannst, solltest du einmal fähig sein, zu verstehen, was da drinnen steht^^ Es gibt da bestimmt auch zahlreiche Dokumentationen über diesen.

  4. Noch ein kleiner Tipp am Rande, wenns einmal wirklich so weit ist: Erspar dir die Mühe, einen eigenen Bootloader zu schreiben sondern verwende einen bereits existierenden wie GRUB. Damit ersparst du dir sicherlich auch einiges an Arbeit.

  5. … Tja was soll ich vorerst noch mehr sagen als, jetzt heißts einfach einmal mächtig ins Zeug legen und Programmieren lernen. Alle anderen Fragen können dir unsere Experten und anderen Forumsmitglieder sicherlich dann beantworten, wenn es so weit ist.

In diesem Sinne, viel Erfolg!
Wir sehn uns im C/C++ Board wieder =)

mfg dixxi

Hi,

Ich habe einmal währen der Suche nach einem Tutorial wie man Gerätetreiber unter Windows programmiert eine tolle Beschreibung gefunden, wie der Windows Kernel (Betriebssystemkern) arbeitet und Treiber lädt bzw. verwaltet.

Wo hast du denn das gefunden?

Ansonsten sehr schön geschrieben.

Gruss
Joey

Schau, hab ich grad gegooglet:

http://www.codeproject.com/KB/tips/boot-loader.aspx

Das weiß ich leider nicht mehr =(

Aber ich bin auch irgendwann einmal beim Googlen darüber gestolpert.

Den Traum vom eigenen Betriebssystem hat wohl jeder kleine
Programmieranfänger^^ ich hatte ihn übrigens auch :wink:

Dann müsste es zehntausende Betriebssysteme geben - wo sind die bloss alle?

Aber man lernt was dabei, auch wenn man letztlich kein besseres Windows zustande bringt. Immer an das chinesische Sprichwort denken: auch die längste Reise beginnt mit einem einzigen Schritt.

Ich habe übrigens tatsächlich ein mal Floppy-Betriebssystem geschrieben, aber den Prozessor gibt es nicht mehr. Was aber das Knowhow nicht wertlos macht.

Gruss Reinhard