Autor Thema: Frage zu OS Entwicklung - Wie viel Erfahrung braucht man ?  (Gelesen 6258 mal)

Kingofkings

  • Beiträge: 1
    • Profil anzeigen
Gespeichert
Hallo,

Erstmal stell ich mich kurz vor ^^ Ich bin 16 Jahre alt (werde bald 17) und komme aus der nähe von Köln. Mit Computern habe ich bereits mein ganzes Leben was zu tun, damals habe ich hauptsächlich gespielt. Seit ca 4 Jahren bin ich nun am Programmieren in Java und C/C++.
Vor ein paar Wochen habe ich mich entschieden, das ich ein eigenes OS entwickeln möchte. Ich habe mich schon immer für Betriebssysteme intressiert.

Ich habe jetzt noch eine Frage: Wie lange dauert es wohl, bis ich genug wissen habe umanzufangen. Ist es mit 16 Jahren noch viel zu früh, oder kann man sich dort einarbeiten, auch wenn man nur so wenig Erfahrung hat wie ich ? (Ich habe mal die Überschriften des Wiki's überflogen, von GDT und IDT z.B habe ich noch nie etwas gehört.)

Außerdem habe ich grad Probleme mit Eclipse, ich weiss nicht wie ich den Assembler Code compilieren soll, da Eclipse überall den Code wie C Code behandelt, egal wie die Datei endet. Habt ihr da ein Plugin mit dem das funntioniert, oder muss ich selber eines schreiben ? (Ich wollte bei "Install new Software" suchen, die Funktion ist aber komplett vebuggt :/)
« Letzte Änderung: 05. June 2015, 15:01 von Kingofkings »

OsDevNewbie

  • Beiträge: 282
    • Profil anzeigen
    • YourOS Kernel
Gespeichert
« Antwort #1 am: 17. February 2015, 22:12 »
Hallo und herzlich willkommen im Forum xD.
Ich habe auch mit 17 angefangen mein OS zu programmieren.
Bevor ich richtig angefangen habe mein OS zu entwickeln habe ich so einen kleinen Testkernel geschrieben, der einfach im Realmode läuft und nichts anderes macht wie "Hello World" ausgeben. Das hat mich motiviert. Dieser Kernel war rein in Assembler geschrieben und somit hatte ich dann auch gleich eine grundlegende Assemblerkenntniss.

Als ich begonnen habe zu programmieren, dachte ich ich beherrsche C relativ gut. Aber während der Entwicklung lernte ich immer wieder neue Dinge hinzu und mein Programmierstil hat sich auch ziemlich verändert. In meinem OS kann man das relativ gut nachvollziehen: während der älteste Code noch kaum Struktur und Kommentare enthält sieht der neuere Code schon sauberer aus und enthält mehr Kommentare. Wobei die Kommentare bei mir ein elendiges Thema sind. Ich muss mich immer überwinden Kommentare zu schreiben.

Aller Anfang ist schwer wie es heisst und so ist es auch bei der OS-Entwicklung. Ich hatte zu Beginn auch keine Ahnung von der Materie. Nach meinem ersten kleinen "Kernel" habe ich seeeeehhhhr lange gesucht bis ich schliesslich über das Lowlevel-Wiki gestolpert bin. Ich bin sehr froh, dass ich absolut zufällig auf diese Seite kam. Im Wiki habe ich dann alles durchgelesen. Vor allem hat mich auch das Tutorial geholfen. Welches ich dann aber nicht einfach kopiert habe, sondern selber implementiert habe. So entsteht der grösste Lerneffekt. Zusätzlich wollte ich für die x86-64 Architektur entwickeln und nicht für die x86-32 Architektur. Dazu musste ich mich durch das AMD64 Manual durchwühlen. Ich lese sogar heute noch manchmal im Manual nach, weil mir einige Sachen nicht klar sind. So habe ich z.B. einige Zeit nicht verstanden wieso man eine TSS im 64-Bit-Modus benötigt.

Für einen richtigen Kernel mit allem drum und dran, muss man mindestens eine lowend-Sprache (am besten C) beherrschen und Assembler sollte man zumindest auch lesen können. Beim Debuggen ist Assembler sehr praktisch. Während dem Debuggen lernte ich auch Assembler dazu: Sobald ich einen Befehl nicht kannte, schaute ich nach was dieser macht.

Auf welcher Plattform entwickelst du denn?
Ich verwende nämlich auch Eclipse als Entwicklungsumgebung und ich entwickle unter Linux (Linux Mint 17 x64). Ich habe mir dort alles eingerichtet und es funktioniert eigentlich sehr zuverlässig. Für Assembler benötigst du eigentlich kein eigenes Plugin. Du musst nur auf die Endung der Assemblerdateien achten, denn diese lauten .S und nicht .asm, wenn du gcc nutzt. Bei mir hat Eclipse dann automatisch erkannt, dass es sich um eine Assemblerdatei handelt.

Ich hoffe ich konnte dir helfen und dir meine Erfahrungen ein bisschen weitergeben und wünsche dir viel Spass, Zeit und Geduld bei der Entwicklung.
Viele Grüsse
OsDevNewbie

Ein Computer ohne Betriebsystem ist nicht mehr wert als ein Haufen Schrott.
Ein Computer ist eine Maschine, die einem Lebewesen das kostbarste klaut, was sie selber nicht hat:
DIE ZEIT DES LEBENS

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 18. February 2015, 11:33 »
Ich habe jetzt noch eine Frage: Wie lange dauert es wohl, bis ich genug wissen habe umanzufangen. Ist es mit 16 Jahren noch viel zu früh, oder kann man sich dort einarbeiten, auch wenn man nur so wenig Erfahrung hat wie ich ? (Ich habe mal die Überschriften des Wiki's überflogen, von GDT und IDT z.B habe ich noch nie etwas gehört.)
Also erst einmal: Dein Alter spielt eine absolut untergeordnete Rolle. Was zählt, ist Programmiererfahrung. Und davon abgesehen bist du ohnehin nicht wesentlich jünger als der Durchschnitt hier in der Community, was den OS-Dev-Einstieg angeht.

Davon, dass du noch nie etwas von GDT und IDT gehört hast, solltest du dich auch nicht entmutigen lassen. Das sind Dinge, mit denen man in der Regel keine Berührung hat, wenn man nicht gerade einen Kernel schreibt. Das ist also kein Wissen das du mitbringen musst, sondern das jedes OS-Dev-Tutorial erklärt. Wenn du mal anfängst, wirst du sehr bald wissen, was das ist.

Vier Jahre Programmiererfahrung könnte reichen oder auch nicht, je nachdem wie intensiv du das in dieser Zeit betrieben hast und ob das C/C++ einen signifikanten Anteil hatte oder ob es doch hauptsächlich Java war. Im Zweifelsfall probier es einfach aus, kostet ja nichts.

Wir empfehlen natürlich immer unser eigenes Tutorial im Wiki: http://www.lowlevel.eu/wiki/OS-Dev_für_Einsteiger - es gibt auch einige andere, aber die leisten sich gern mal gröbere Schnitzer, weswegen wir uns irgendwann entschieden haben, dass wir lieber ein eigenes schreiben.

Dazu musste ich mich durch das AMD64 Manual durchwühlen. Ich lese sogar heute noch manchmal im Manual nach, weil mir einige Sachen nicht klar sind.
Das ist kein Makel, kaum jemand weiß das alles auswendig. Man muss nur mit dem Manual umgehen können. Eine der wichtigsten Fähigkeiten, die man beim OS-Dev lernt (lernen sollte), ist deswegen auch, Spezifikationen zu lesen. Ich habe heute auch schon was im C-Standard nachgeblättert.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

 

Einloggen