Betriebssystem Selber Programmieren PC/Smartphone

4 Antworten

Welche Programmiersprache wären die besten?

Du wirst auf jeden Fall Assembler brauchen. Ansonsten wird ein Großteil bei modernen Betriebssystemen noch in C geschrieben. Es gibt aber auch Betriebssysteme, die rein in Assembler geschrieben sind.

Ohne Assembler läuft aber definitiv nichts.

Andere Programmiersprachen außer C sind zumindest für den Systemkern kaum brauchbar, zumal sich diese nur schlecht mit Assembler mischen lassen.

Welche Programme/Tools brauch man dafür?

PC: Theoretisch reicht der GNU C Compiler und die dabei mitgelieferten Tools völlig aus.

Ich selbst nehme eine virtuelle Maschine (z.B. VMWare), um so etwas zu testen. Dadurch wird das Risiko, dass man etwas kaputt macht, minimiert. Nachdem mein letztes OS meine ganze Festplatte gelöscht hat (war irgendwo ein Fehler drin), boote ich meinen Rechner nie wieder mit einem selbstgeschriebenen OS.

Smartphone: Siehe unten.

Wie lange würde es dauern damit fertig zu werden?

Das hängt davon ab, was du als "Betriebssystem" bezeichnest. Ich selbst habe mal einen MS-DOS-Clone geschrieben und habe in den Schulferien etwa 3 Wochen gebraucht (hatte aber in diesen drei Wochen nichts anderes gemacht).

Ich hatte allerdings damals bereits gute Assemblerkenntnisse.

Jetzt - 15 Jahre später - will ich ein 32-Bit-Betriebssystem schreiben und bin bereits seit über 1/2 Jahr dran (habe aber pro Woche nur etwa 4-8 Stunden Zeit).

Ein einfaches Betriebssystem kann man innerhalb von einem Tag hinbekommen. Das ist dann aber wesentlich simpler als MS-DOS.

Es kommt also ganz darauf an, was deine Ansprüche sind.

Als Anfänger (wie du es wahrscheinlich bist), wirst du aber erst mal mehrere Jahre üben müssen, um überhaupt die Fähigkeiten zu haben, ein OS anfangen zu können - auch ein einfaches.

Brauch man wirklich einen Bootloader/Bootmenü?

Nein.

Was wäre leichter, besser und schneller ein PC oder ein Smartphone Betriebssystem zu Programmieren? ... womit sollte ich anfangen?

Du kannst natürlich auch ein Betriebssystem für Smartphones entwickeln, hast dann aber das Problem dass es keine Hardware gibt, auf die man dieses System aufspielen könnte. Ein Betriebssystem für existierende Smartphones kann man aus zwei Gründen nicht schreiben:

Erstens sind die Betriebssysteme verschlüsselt und nur der Hersteller kennt den für das entsprechende Modell passenden Verschlüsselungscode.

Zweitens muss man zum Schreiben eines Betriebssystems den Aufbau eines Gerätes kennen; bei PCs ist dieser gut dokumentiert, bei Smartphones ein Firmengeheimnis.

Du müsstest also auch noch dein eigenes Smartphone bauen!

Gibt es ein Buch/Website wo man die Programmierer Sprache findet um ein Betriebssystem zu Programmieren (Titel und Verlag/Link der Website)

Buch: Nein

Du musst wie gesagt C und Assembler beherrschen.

Ich selbst verwende den MinGW GNU C Compiler und die damit mitgelieferten Binutils für mein OS. Diese kann man im Internet herunterladen. Zum Beispiel in dem man sich die alte "Bloodsheed Dev-C++ IDE" in der Version mit Compiler herunterläd (12 MB). Die neuste Version des Compilers (ohne IDE) sind schon über 400 MB.

Sonstige nützliche Links:

Auf wiki.osdev.org findest du hilfreiche Informationen zum Schreiben eines Betriebssystems.

Die BIOS-Interrupts (beim Hochfahren des Rechners, während die CPU noch im 16-Bit-Modus ist oder wenn du "nur" (in Anführungszeichen) ein 16-Bit-OS schreiben willst) sind in "Ralph Browns Interrupt List" (einfach bei Google suchen) gut dokumentiert.

Ich sage dir eins: Vergiss es!

Ist nicht böse gemeint, aber ich will dich vor großen Frust bewahren.

An Betriebssystemen wie Linux, Windows, IOS, Android wird Jahre lang entwickelt, von Profis und dass sind meist 30-150 Leute die dahinter regelmäßig entwickeln und schreiben. Was glaubst du, was man dann alleine als Anfänger hinbekommt... ;)

Fang mit kleinen Sachen an.. Taschenrechner usw. das ist schon kniffig genug.

GameHackLP 
Fragesteller
 21.09.2014, 08:09

OK Danke aber könntest du meine Fragen Trotzdem Beantworten? oder wenigstens zusagen womit ich wenn du es für richtig hältst mit einem Taschenrechner anzufangen was man da brauch und welche Programmier Sprache, Tools und so Danke

0
Struggler87  21.09.2014, 08:23
@GameHackLP

Als Anfänger eignetsich wahrscheinlich Java. Würde aber nicht drauf hängen bleiben und auf C++ umsteigen. Aber C++ ist fürn Anfang meist einfach ein Genickbruch. Java vermittelt schon recht gut die Basics. Falls das noch zu kompliziert ist, könnte auch Visual Basic auch herhalten.

Bücher gibt es mittlerweile sooo viele. Höre aber gutes von den Büchern von Galileo Computering.

Am besten erst immer die Grundlegenden Dinge draufhaben und erst dann, quasi am Ende der Kette sich dann auch mal mit Debugging befassen. Nicht zu früh, sont verlässt man sich nur noch daruaf und macht ein Leben lang fehler...

0

Es ist eine schwierige Aufgabe, ein Betriebssystem zu programmieren. So werden sie regelmäßig von Gruppen programmiert, die auch Experte haben. Für ein Mensch wäre es nicht nur schwierig, sondern auch zu langsam. Es benötigt wirklich seinen Bootloader/Bootmenü, und wird meistens in C programmiert, aber man kann auch andere Sprachen benutzen. Es gibt Betriebssyteme in Ada, Lisp, Pascal, Perl auch.

Ich hatte einmal einige Seite für Systemprogrammierung gefunden. Vielleicht würdest du nicht eines selbst programmiertes Betriebssystem, sondern eines sogenanntes Remaster; das bedeutet, dass du das System schon hast, aber die Packete selbst zusammenwählst. Wenn du eher dein Linux haben willst, dann kannst du nach LFS greifen:

http://www.linuxfromscratch.org/

  1. Assembler und C.

  2. Geht auch mit einem reinen Texteditor und entsprechenden Compilern, ansonsten IDE nach Wahl.

  3. Alleine, ein vernünftiges multiuser, multitasking Betriebssystem, welches alle nötigen Schnittstellen und co. anspricht? Nicht während deiner Lebenszeit.

  4. Ein Menü brauchst du sicher nicht, irgendein Code muss aber letztlich zum Start des Ganzen führen, der Bootloader ist lediglich ein bestimmter Teil des Codes, ob du ihn nun Bootloader oder Startpunkt oder Anfang nennst ist dabei relativ egal.

  5. Leichter wahrscheinlich ein PC Betriebssystem, weil es mehr Informatoinen dazu gibt, willst du es in deiner Lebenszeit fertig kriegen, dann reden wir aber eher von einen Mix aus DOS und Windows 95 als Endprodukt, nix was mit aktuellen Sachen konkurrieren könnte.

  6. Damit zu lernen, wie ein Betriebssystem aufgebaut ist, ggf. versuchst du dich mal an einer eigenen Linux Distribution und compilerst dir selbst den Kernel.

Der letzte Punkt, siehe 6. Abgesehen davon natürlich die Sprachen lernen, dich mit der Rechnerarchitektur bzw. den Aufbau einer CPU beschäftigen, dich in Themen wie die Speicherverwaltung aktueller und alter Betriebssysteme einzulesen, von Heap und Stack über virtuelle Speicher, die Adressierung usw.

Woher ich das weiß:Berufserfahrung – Softwareentwickler/Projektleiter seit 2012