Autor Thema: Was muss alles in einen Kernel?  (Gelesen 7736 mal)

quarkie

  • Beiträge: 2
    • Profil anzeigen
Gespeichert
« 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

thetrue

  • Beiträge: 216
    • Profil anzeigen
    • http://www.the-true.net
Gespeichert
« Antwort #1 am: 28. August 2006, 18:48 »
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 ^^
thetrue way is my way

nooooooooos

  • Beiträge: 734
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 28. August 2006, 18:52 »
Jo, nur das Filesystem würd ich als Modul auslegen....

thetrue

  • Beiträge: 216
    • Profil anzeigen
    • http://www.the-true.net
Gespeichert
« Antwort #3 am: 28. August 2006, 19:01 »
nja, wie willst du module ohne FS laden?:D
hmm
thetrue way is my way

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 28. August 2006, 19:12 »
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.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

DarkThing

  • Beiträge: 652
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 28. August 2006, 19:12 »
Zitat von: thetrue
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.

quarkie

  • Beiträge: 2
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 28. August 2006, 19:22 »
Vielen Dank wollte ja nur mal sehen wie man so was aufbaut

Coffee

  • Beiträge: 470
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 28. August 2006, 19:26 »
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, ...)

stultus

  • Beiträge: 486
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 28. August 2006, 20:46 »
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 :)
MSN: planetconquestdm@hotmail.de
ICQ: 190-084-185

... Wayne?

n3Ro

  • Beiträge: 288
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 28. August 2006, 22:31 »
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ß ^^
Agieren statt Konsumieren!

nooooooooos

  • Beiträge: 734
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 29. August 2006, 18:32 »
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...

n3Ro

  • Beiträge: 288
    • Profil anzeigen
Gespeichert
« Antwort #11 am: 29. August 2006, 18:58 »
Speicherverwaltung soll garnicht in den Kern, nur Mechanismen die Speicherverwaltung im Userspace ermöglichen ;) Wie soll sonst ein Programm aufs Paging zugreifen?
Agieren statt Konsumieren!

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #12 am: 29. August 2006, 19:03 »
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

n3Ro

  • Beiträge: 288
    • Profil anzeigen
Gespeichert
« Antwort #13 am: 29. August 2006, 20:00 »
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.
Agieren statt Konsumieren!

frizzz

  • Beiträge: 4
    • Profil anzeigen
Gespeichert
« Antwort #14 am: 19. October 2006, 01:30 »
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

nooooooooos

  • Beiträge: 734
    • Profil anzeigen
Gespeichert
« Antwort #15 am: 19. October 2006, 09:51 »
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

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #16 am: 19. October 2006, 11:42 »
Vielen Dank übrigens für das Wiederbeleben einer Threadleiche. :roll: ;)
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

 

Einloggen