Lowlevel
Lowlevel => OS-Design => Thema gestartet von: quarkie am 28. August 2006, 18:30
-
Hallo,
ich bin zimlich neu hier und habe noch nciht viel Erfahrung mit os devlopment. Mich würde mal der allgeimeine Aufbau eines Kernels(Multitasking, später mit GUI) Interresieren, was wann geladen wird und wie er im groben aufgebaut ist.
Vielen Dank quarkie
-
also das ist deine Sache ;) mach du es so wie du willst ...
ICh mache so:
Kernel:
Pmode,
FileSystem,
Module-System (um FDC, und andere Treiber zu laden)
PIT,
Interrupts/Irqs,
A20Gate,
MUltitasking,
Paging,
joa merh fellt mir net ein ^^
-
Jo, nur das Filesystem würd ich als Modul auslegen....
-
nja, wie willst du module ohne FS laden?:D
hmm
-
Dafür gibt es ja zum Glück GRUB. ;)
Deine Auflistung soll aber nicht irgendwie eine Reihenfolge darstellen, oder? Ansonsten würde ich die für sehr seltsam halten.
-
nja, wie willst du module ohne FS laden?:D
hmm
Mit Grub oder einem anderen Bootloader. Macht meiner Meinung nach wesentlich mehr Sinn, so kann der Kernel sowohl auf einer ext2 Partition liegen als auch auf einer FAT32 ohne dass er dafür geändert werden muss.
EDIT:
taljeth war schneller :roll:
Man könnte aber btw noch ne API ergänzen.
-
Vielen Dank wollte ja nur mal sehen wie man so was aufbaut
-
naja das kommt hauptsächlich an was für ein os du coden willst..... sag mal welche richtung (komplex wie windows/linux, mediaplayer-os, testmode-os wie dos, ...)
-
Kommt im Grunde ganz drauf an was für ne Kernelart das ganze sein soll... typisch wäre Monolithisch Modularisiert wie Windows/Linux, also schon ne ganze ecke mehr drin als in nem Kernel ganz allg. drin sein müsste, allerdings trotzdem noch erweiterbar. Alternativ (und das wär das was hier bisher beschrieben worden wäre), Microkernel -> Nur alles was man fürs Multitasking braucht kommt rein, ne Kleine Kommunkationsmöglichkeit für Anwendungen dazu, und rest läuft nur als Programm. Sehr klein, sehr anpassungsfähig, und vorallem seeehr stabil :)
-
In einen Mikrokernel würde ich allerdings noch ein einfaches Speicherverteilsystem einbauen, was sich auch um die Abgrenzung der einzelnen "Prozesse" kümmert, sonst machts keinen Spaß ^^
-
Jo....kann man auch ein Speicherverwaltungsmodul machen....
Ich empfehle dir einen Microkernel als Hobby-OS, da du wenn du mal fortgeschritten bist, eine Komponente einfach verbessern kannst, ohne das ganze System neu zu proggen....
Allerdings dauerts da länger bis man ein erstes grossens Erfolgserlebnis hat...
-
Speicherverwaltung soll garnicht in den Kern, nur Mechanismen die Speicherverwaltung im Userspace ermöglichen ;) Wie soll sonst ein Programm aufs Paging zugreifen?
-
Nun ja, man könnte ja aufs Paging verzichten und Segmentierung verwenden :)
Andererseits sollte doch die Speicherverwaltung tiefste Betriebssystemarbeit sein - warum sollte ein Programm aufs Paging zugreifen können? Für den Userspace ist doch nur ein "Gib mir Speicher!" und "Kannste wiederhaben!" interessant ... die darunterliegende Organisation ist Aufgabe des Kernels.
So zumindest stell ich mir das vor...
Gruß,
Svenska
-
Wenn man die Speicherverwaltung einem Programm überlässt muss es sagen können "Lieber Kern, bitte gib doch dem Programm X die Speicherseite Y an die Adresse Z". Der Kern muss dann überprüfen ob das sein darf und wenn ja dies durchführen. So kann man die Verwaltung sicher in den Userspace verfrachten. Bei Segmentierung weis ich nicht wie man das bewerkstelligt, allerdings halte ich das auch nicht für so relevant.
Wie man dieses Speicherverwaltungszeug gut löst hat Jochen Liedtke gut beschrieben, Gucksdu hier (http://l4ka.org/publications/1996/towards-ukernels.pdf).
-
Ein Kernel muss mindestens die Speicherverwaltung machen, weil ein Programmstart nicht ohne einen vorher gefertigten descriptor sein kann.
Ansonsten ist sehr beliebig, was man draufpackt, aber natürlich muss ein bisschen I/O gleich sein können - also Tastatur, FD, IDE-HD.
Du solltest aber an einen eigenen Kernel nur denken, wenn Du sehr spezielle Sachen machen willst, die Du auf keinem anderen Weg lösen kannst!
Ansonsten schau Dich nach Beispielen um - gleich zwei (das eine brandneu) findest Du auf meiner homepage:
www.rcfriz.de
-
Naja....muss ja nich unbedingt ein Mikrokernel sein. Du kannst auch alles in Ints und Funktionen verpacken und im Kernel haben.
Und Fritz...du könntest deine Hompageady auch einfach in die Signatur schreiben (wie Toasta^^), dann hättest du weniger Schreibarbeit.
Gruss
Noooooooooooos
-
Vielen Dank übrigens für das Wiederbeleben einer Threadleiche. :roll: ;)