61
Lowlevel-Coding / Re: Frage zu OS Entwicklung - Wie viel Erfahrung braucht man ?
« 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.
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.