Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Low-Level-Programmierung und Experimenteller Kernel; Ansprechpartner: Dirty Oerti
Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Beitrag von Dirty Oerti » Fr Jul 11, 2008 5:21 pm

Tag! :)

Also ich hab mich dazu entschieden, dass ich das schon ganz gerne nutzen würde.
Vielleicht fang ich auch schon früher mit dem Programmieren am Projekt wieder an.

Wenn jemand mitmachen möchte oder helfen möchte oder sonst iwelche Ideen dazu hat, dann einfach hier rein. :)

MfG
Daniel
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Beitrag von Dirty Oerti » Do Jul 17, 2008 5:04 pm

Mal ein Update über den derzeitigen Status:

Es existiert jetzt ein SVN-Repository, das unter svn.proggen.org/kernel/ zu erreichen ist. :)
Viel befindet sich noch nicht im Repository, nur ein ganz (wirklich nur ganz!) grundsätzliches Gerüst für das Betriebssystem.
Aktiv dran arbeiten werde ich so gegen nächste Woche.
In der Zwischenzeit kann es sein, dass ich kleine Änderungen vornehme, aber viel wird nicht passieren.

Nochwas:
Die Dateien im Repository sollten zwar schon compilierbar sein, allerdings gibt es noch kein Makefile o.ä., um sie wirklich zu compilieren.
Ich rate im Moment also davon ab, den "Kernel" wirklich auszuprobieren!

Repository: svn://svn.proggen.org/kernel/
Status: Nicht lauffähig

Ich überlege im Moment auch, wie denn die spätere innere Verwaltung aussehen soll.
Derzeit bin ich für ein komplett modulares System, in dem grundlegende Module beim Hochfahren geladen werden und fehlende bei Bedarf nachgeladen werden.
Außerdem soll jedes Modul neu geladen werden können, sollte ein Fehler auftreten.
Das soll durch einen "Modullader" funktionieren, der bei einem Programmfehler ggf. von der Interruptroutine aufgerufen wird.
Was ich dazu noch nicht weiß: Wie lasse ich den Modullader die Module laden.
Evtl ist dazu ja ein anderes Modul ("Lesen von der Festplatte") notwendig.
Was aber, wenn das abstürzt?

Was ich mir demnächst auch mal überlege: Wie die Interprozesskommunikation aussehen soll.
Ich tendiere zur Zeit eher zu einem System mit Nachrichten.
Werde mich aber mal über "Pipes" informieren, kann mir dazu leider noch nicht allzu viel vorstellen.

MfG
Daniel
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Beitrag von Kerli » Do Jul 17, 2008 5:31 pm

Dirty Oerti hat geschrieben:Viel befindet sich noch nicht im Repository, nur ein ganz (wirklich nur ganz!) grundsätzliches Gerüst für das Betriebssystem.
Da ist ja wirklich nicht sehr viel drinnen, und außer am Funktionsnamen kann man auch noch nicht erkennen, dass es ein Betriebssystem werden sollte ;)
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Beitrag von Dirty Oerti » Do Jul 17, 2008 5:34 pm

Kerli hat geschrieben:
Dirty Oerti hat geschrieben:Viel befindet sich noch nicht im Repository, nur ein ganz (wirklich nur ganz!) grundsätzliches Gerüst für das Betriebssystem.
Da ist ja wirklich nicht sehr viel drinnen, und außer am Funktionsnamen kann man auch noch nicht erkennen, dass es ein Betriebssystem werden sollte ;)

Zu mehr hatte ich bisher noch keine Zeit :)
Das Codegerüst und alles befindet sich schon alles hier auf meinem Rechner. Nur halt noch nicht im Repository.
Dazu muss ich es nur in eine saubere Form bringen und besser strukturieren.

MfG
Daniel
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Beitrag von Kerli » Do Jul 17, 2008 5:51 pm

Dirty Oerti hat geschrieben:Zu mehr hatte ich bisher noch keine Zeit :)
Das Codegerüst und alles befindet sich schon alles hier auf meinem Rechner. Nur halt noch nicht im Repository.
Dazu muss ich es nur in eine saubere Form bringen und besser strukturieren.
Das hab ich mir eh schon gedacht, dass das nicht alles sein kann :D
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Beitrag von Dirty Oerti » Do Jul 17, 2008 5:54 pm

Kerli hat geschrieben:
Dirty Oerti hat geschrieben:Zu mehr hatte ich bisher noch keine Zeit :)
Das Codegerüst und alles befindet sich schon alles hier auf meinem Rechner. Nur halt noch nicht im Repository.
Dazu muss ich es nur in eine saubere Form bringen und besser strukturieren.
Das hab ich mir eh schon gedacht, dass das nicht alles sein kann :D
Das kann noch nichtmal per GRUB gebootet werden.^^ :)
Fehlt noch der Multibootheader...
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Beitrag von Dirty Oerti » Fr Jul 18, 2008 1:37 pm

Derzeitiger Status:
Multibootheader eingebaut
Global Descriptor Table wird initialisiert
Interrupt Descriptor Table wird initialisiert
Die Interrupt Service Routinen werden installiert

Grundlegende Kernelfunktionen (Lesen und schreiben von Hardwareports, Speicheraktionen)

*Bis jetzt noch nicht getestet!


Was für die nächste Zeit ansteht:
-Makefiles erstellen
-Erster Test
- mit GRUB von Festplatte
- mit GRUB auf Diskette von Diskette
-Zu Diagnosezwecken einfache Zeichenausgabe (Zeichenausgabe soll später evtl. ausgegliedert werden)


MfG
Daniel
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Beitrag von Dirty Oerti » Fr Jul 18, 2008 9:42 pm

Kleines Update:

Es existiert jetzt ein Makefile im Ordner /trunk/src/basic-kernel/
Mit Hilfe von diesem lässt sich der Kernel problemlos (unter Linux, Ubuntu) kompilieren.
Dazu benötigt:
gcc (Compiler)
nasm (Assembler)
ld (Linker)

Getestet ist der Kernel allerdings noch nicht.

Um den Kernel laufen zu lassen muss man mit Hilfe von GRUB booten.
Dazu den Kernel (basic-kernel.bin) an eine leicht auffindbare Stelle im Dateisystem schieben (am besten in /boot/kernel/ )
Dann neu starten.
In die GRUB-Kommandozeile wechseln.
Eingeben

root (hdX,Y)
kernel PFAD
boot

X = Festplatte
Y = Partition
(Ich hoffe das ist verständlich)
PFAD = Pfad zum Kernel ( /boot/kernel/basic-kernel.bin )

Dann sollte eigentlich nichts passieren.
Und zwar genau das.
Wenn der Rechner neugestartet wird, dann ist ein Fehler im Kernel.

Ich warne mal wieder: Ich übernehme keine Haftung für das, was durch den Kernel verursacht werden könnte.
Es dürfte aber eigntl nichts passieren. :)

Wer möchte kann ja mal testen.

MfG
Daniel
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Beitrag von Kerli » Fr Jul 18, 2008 11:37 pm

Dirty Oerti hat geschrieben:Ich warne mal wieder: Ich übernehme keine Haftung für das, was durch den Kernel verursacht werden könnte.
Es dürfte aber eigntl nichts passieren. :)

Wer möchte kann ja mal testen.
Ich werds probieren, aber heute bin ich irgendwie schon zu müde ;)
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Beitrag von Kerli » Sa Jul 19, 2008 2:41 pm

Ich hab deinen Kernel einmal ausprobiert, aber irgendwas passt da noch nicht. Hier sind einmal die Ausgaben die ich erhalten habe:
Make Ausgabe hat geschrieben: gcc -m32 -fno-builtin -fno-leading-underscore -fno-strict-aliasing -fno-stack-protector -Wall -O0 -c -g -I ./inc/ *.c
gdt-loader.c: In Funktion »GDT_install«:
gdt-loader.c:26: Warnung: Zuweisung erzeugt Ganzzahl von Zeiger ohne Typkonvertierung
idt-loader.c: In Funktion »IDT_install«:
idt-loader.c:21: Warnung: Zuweisung erzeugt Ganzzahl von Zeiger ohne Typkonvertierung
nasm -f elf *.asm
ld -m elf_i386 -Map linker-output-map.txt -T linkerscript.ld -o basic-kernel.bin *.o
Grub Ausgabe hat geschrieben: , <0x80000000:0x9a2:0x3044>

Error 28: Selected item cannot fit into memory
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Antworten