Ws macht eigentlich (m)ein kernel? ist eine Frage die mir nun zum ersten mal in den Kopf schießt.
Als ich Anfing mit OS-Dev dachte ich es wäre klar. Er reagiert auf interrupts, bietet eine shell zum interaggieren(dazu muss gesagt sein das ich noch lange nicht an graka-modi denke, dahe rnur shell mit farbe
).
Mittlerweile hat sich mein Bild vom kernel geändert (gott sei dank)...
Aber vieles ist mir noch unklar:
Ich beziehe mcih hierbei auf Tee-Jays Tutorial zum c-Kernel.
Also ich möchte meinen Kernel wo es eben möglich ist mit C schreiben.
Daher habe ich nun den Bootloader von tee-Jay genommen, der meine Kernel.bin in den Arbeitspeicher läd.
Nun beginnt die tolle Fragestunde: What can I do for you?
Der Kernel hat nach meinem Verständnis die Aufgabe:
a. in den PM zu schalten (ja. Stichwort Grub. aber nein.)
b. GDT, IDT zu erstellen und zu laden
c. Treiber zu laden (in meinem Fall lediglich für die Tastatur)
d. Tasks zu verwalten (hab noch keine ahnung wie das geht, aber tutorial ist schon gefunden)
e. printk()
f. Fehlerroutinen bereitstellen auf die die diskriptoren Zeigen (ich hoffe das ich das nun richtig kapiert habe)
g. mein programm shell laden und damit den Benutzer mit einbinden.
Soweit korrekt?
Was muss noch alles rein? Ich mein das kann ja bei weitem nicht alles sein, auch wenn mich mindestens die hälfte derzeit noch überfordert.
Auch die logische Vorgehensweise beim Programmieren. Hab mir zwar die kleine einleitung für den Os-Dev-Newbie durchgelesen, aber besonders eindeutig finde ich sie nicht. Oben wird zwar von einem C-Kernel gesprochen aber weiter unten ist das garnicht mehr zu wort gekommen.
Egal.
Stell ich mich jetzt einfach zu blöd an im Verständnis? Ich mein, ich hab dank dem low level Magazin meine ersten schritte im realmode gehen können. bootloader schreiben, kernel laden und zack stand die message aufm bildschirm. Dann kam die Frage wie weiter?!
Ich hab jetzt das Protected Mode tut, das c-kernel tut, Bootloader tut, PIC tut, ect. schon durch (mehr als einmal) und kann aber einfahc keinen Anfang finden. Hab keine Struktur.
Anders ausgedrückt ich brauch Hilfe, sonst platzt mein kopf noch von dem ganzen hinundher.
Als ich Anfing mit OS-Dev dachte ich es wäre klar. Er reagiert auf interrupts, bietet eine shell zum interaggieren(dazu muss gesagt sein das ich noch lange nicht an graka-modi denke, dahe rnur shell mit farbe
).Mittlerweile hat sich mein Bild vom kernel geändert (gott sei dank)...
Aber vieles ist mir noch unklar:
Ich beziehe mcih hierbei auf Tee-Jays Tutorial zum c-Kernel.
Also ich möchte meinen Kernel wo es eben möglich ist mit C schreiben.
Daher habe ich nun den Bootloader von tee-Jay genommen, der meine Kernel.bin in den Arbeitspeicher läd.
Nun beginnt die tolle Fragestunde: What can I do for you?
Der Kernel hat nach meinem Verständnis die Aufgabe:
a. in den PM zu schalten (ja. Stichwort Grub. aber nein.)
b. GDT, IDT zu erstellen und zu laden
c. Treiber zu laden (in meinem Fall lediglich für die Tastatur)
d. Tasks zu verwalten (hab noch keine ahnung wie das geht, aber tutorial ist schon gefunden)
e. printk()
f. Fehlerroutinen bereitstellen auf die die diskriptoren Zeigen (ich hoffe das ich das nun richtig kapiert habe)
g. mein programm shell laden und damit den Benutzer mit einbinden.
Soweit korrekt?
Was muss noch alles rein? Ich mein das kann ja bei weitem nicht alles sein, auch wenn mich mindestens die hälfte derzeit noch überfordert.
Auch die logische Vorgehensweise beim Programmieren. Hab mir zwar die kleine einleitung für den Os-Dev-Newbie durchgelesen, aber besonders eindeutig finde ich sie nicht. Oben wird zwar von einem C-Kernel gesprochen aber weiter unten ist das garnicht mehr zu wort gekommen.
Egal.
Stell ich mich jetzt einfach zu blöd an im Verständnis? Ich mein, ich hab dank dem low level Magazin meine ersten schritte im realmode gehen können. bootloader schreiben, kernel laden und zack stand die message aufm bildschirm. Dann kam die Frage wie weiter?!
Ich hab jetzt das Protected Mode tut, das c-kernel tut, Bootloader tut, PIC tut, ect. schon durch (mehr als einmal) und kann aber einfahc keinen Anfang finden. Hab keine Struktur.
Anders ausgedrückt ich brauch Hilfe, sonst platzt mein kopf noch von dem ganzen hinundher.

Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken

Gespeichert




Aber genau diese Funktionen in c zu schreiben sehe ich als erste herausforderung. Bloß diese ganze addressierung, naja. muss ich durch...
Ich habs in lightOS so gemacht, dass der der das die Datei startet angeben muss ob es ein Treiber oder Programm ist (Die von Grub geladenen Module wurden automatisch als Treiber gestartet). Das ist vielleicht nicht glorreich, aber es reicht für den Anfang. Man könnte auch init eine Liste von Treibernamen in den Kernel laden lassen und den Kernel dann immer überprüfen lassen, ob das nun ein Treiber sein soll oder ein Programm (anhand des Dateinamens). Man könnte da auch noch feiner festlegen welche Treiber zugriff auf welche Ressourcen haben sollen, ohne den Aufwand zu betreiben bei jedem Linken die ELF/PE sections manuell zu verändern.
