Autor Thema: OS-64 Kernel soll Mikrokernel werden!!!  (Gelesen 5029 mal)

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« am: 14. January 2007, 19:58 »
Hallöchen!

Zurzeit befindet sich bei OS-64 noch alles (Dateisystem, Treiber, Programme) im Kernel. Ich arbeite gerade an einer Vernünftigen Speicherverwaltung und habe die Treiber schon aufs externisieren vorbereitet. Soweit klappt auch alles recht gut. Nur stehe ich jetzt vor einem Problem. Der Kernel soll ein Mikrokernel sein, also lediglich Speicherverwaltung, Prozesseverwaltung beinhalten und Kommunikationsfähig sein. Aber das Problem bei der Sache ist, wie bringe ich dem Kernel dazu einen Prozess auszuführen? Also nehmen wir an, mein Kernel ist schon ein Mikrokernel. Wie bringe ich dem Kernel jetzt beim Booten bei einen Treiber anzunehmen oder Programme im Taskwechsel einzubeziehen?

Vielen dank!!!

bitmaster
In the Future everyone will need OS-64!!!

nooooooooos

  • Beiträge: 734
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 14. January 2007, 20:26 »
Ich habs so gelöst, indem mein Init halt noch einen Task namens Taskverwaltung lädt und ihn ins Multitasking einträgt.

Nachher kann ich dann diesen Task benutzen (auch wieder aus der Init heraus) um andere Tasks zu laden.

Vielleicht seh ich auch das Problem nicht...
Gruss
Nooooooooos

Korona

  • Beiträge: 94
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 14. January 2007, 22:29 »
Wenn ich dich richtig verstanden habe liegt das Problem beim Laden der Treiber aus dem Dateisystem, wärend kein Treiber dafür geladen ist, oder? Ich würde essentielle Treiber (HD-Driver und FS) ins OS-Image einbinden oder als Module vom Bootloader laden lassen.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 14. January 2007, 23:03 »
Letzteres unterstützt der ach so böse GRUB übrigens von Haus aus. ;)
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #4 am: 15. January 2007, 22:05 »
Letzteres unterstützt der ach so böse GRUB übrigens von Haus aus. ;)
Nein, ich progge mein OS selbst (ja ich zähle auch einen Loader zum OS).

Genau das verstehe ich nicht ganz. Wie mache ich dem Kernel mittels Loader klar das der Module annehmen soll? Evt. was macht grub genau?

thx

bitmaster
In the Future everyone will need OS-64!!!

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #5 am: 15. January 2007, 22:08 »
grub lädt die module mittels bios in den ram, erstellt eine multiboot header, wechselt in den pmode und springt zu deinem kernel. Dem kernel wird die addresse der multiboot header dabei übergeben. Die multiboot header sieht so (siehe 3.3 Boot information format) aus.
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 15. January 2007, 23:36 »
Sicher, daß GRUB das BIOS auch über Stage 1 hinaus benutzt?
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #7 am: 15. January 2007, 23:40 »
Ja in der bochslog (wenn man mal bei der cpu das loglevel ändert) wird ständig ein switch zwischen real & protected mode angezeigt und zwischendrin ein paar bios interrupts.
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 16. January 2007, 00:13 »
Wieder was gelernt.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #9 am: 16. January 2007, 07:10 »
Naja, dann ist Grub schlechter als ich dachte. Aber erstmal thx.

bitmaster
In the Future everyone will need OS-64!!!

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #10 am: 16. January 2007, 08:10 »
Was für einen Sinn würde es denn machen in einen bootloader Treiber für diverse Medien zu integrieren? Das ist doch sinnloser Aufwand... und dann schreit wieder jeder "oh, grub ist ja sooooo ne bloatware". Wenns dann mit BIOS Interrupts (die ja keinen Nachteil haben :wink: ) gelöst wird, isses auch wieder nicht recht...
Vorteil ist halt ganz klar, dass grub von allem bootet was das bios unterstützt und dann darauf aufbauend noch von sehr vielen Dateisystemen.

btw. wie willst dus nun lösen?
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #11 am: 16. January 2007, 18:34 »
Also ich muss mal nachfragen ob ich das Ganze richtig verstanden habe. GRUB läd mittels int 13h Dateien nur bis zur 1 MByte Grenze???

@bluecode: Wie ich es lösen kann ist ja meine Frage an euch.

bitmaster
In the Future everyone will need OS-64!!!

Korona

  • Beiträge: 94
    • Profil anzeigen
Gespeichert
« Antwort #12 am: 16. January 2007, 18:47 »
Nein, GRUB läd mittels int 13h Daten und switcht in den PM um die Daten an ihre richtige Stelle zu kopieren. Das wird dann je nach Dateigröße halt relativ oft wiederholt.
Bei Grub sind die Module so implementiert:
Durch einen Befehl in der Configdatei oder direkt in der Shell, kann man ein Modul laden. Dem Kernel wird dann eine Struktur übergeben, welche die Anzahl der Module und deren Start und End-Addresse angibt.

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #13 am: 16. January 2007, 19:55 »
Minix basiert ebenfalls auf einem Mikrokernel und hat im Kernel-Image bereits drei Tasks enthalten.
Das sind kernel, mm, fs. Im Kernel enthalten sind das Prozessmanagement und diverse Treiber (die also einkompiliert werden müssen). Der Memory Manager (mm) ist ein extra Programm, welches im Image vorhanden ist und die Speicherverwaltung erledigt und das File System (fs) ist ebenfalls so eingebunden.

Obwohl es externe Programme sind, sind sie notwendig für das System. Du kannst mit "kill" drauf losgehen - aber dann steht das System komplett.

Ohne diese Programme kann der Kernel nichts tun, aber zu dritt ist es möglich, auf die Festplatte zuzugreifen und weitere Programme zu starten. Vorher befinden sie sich an Positionen im Speicher, die vorher vom Bootmonitor an eine feste Adresse geschrieben bzw. im Image schon vorhanden sind.

Gruß,
Svenska

 

Einloggen