Hallo!
In der letzten Woche habe ich mich wieder mal verstärkt mit OS-Dev auseinandergesetzt. Zuerst hab ich mir das mit dem Kernel überlegt, Monlithisch oder Mikro. Aber da man beim Monlithischen Kernel ja auch immer den Kernel als Prozess aufrufen soll, sehe ich da keinen Vorteil in der Geschwindikeit (muss mir den PM nochmals genau ansehen). Auf jeden Fall hab ich jetzt eine vernünftige Lösung für das Multitasking mit Mikrokernel gefunden. Jetzt kommt eigentlich die Programmierschnittstelle, also die HAL (ist immer noch alles theoretisch. existiert noch kein code).
Wie macht man eine HAL (hardware abstraction layer)? Das Problem für mich, dass wenn ich neue Eigenschaften wie z.B. einen Grafiktreiber hinzufüge, dass dann die HAL anders aussieht und sie ja eigentlich auch Rückwärtskompatibel sein muss. D.h. der Code müsste immer noch an der gleichen Speicherstelle liegen.
Ich habe mir mal etwas in der Art überlegt, dass ich Indexes setzt für die jeweiligen Indexes und das dann so wie die Interrupts mache. D.h.: das Dateisystem wird immer über den Index 1 angesprochen. Mittels eines weiteren Indexes findet man dann die richtige Funktion. Jeder Index hat dann genau x Bytes zur Verfügung, um in den richtigen Selektor zu wählen. Dann wird dorthin gesprungen.
Zu den Treibern noch: Was findet ihr besser? einen GDT Eintrag für alle Treiber und darin eine LDT sowie das gleiche für die Programme? Oder für jeden einzeln einen Deskriptor und dann vermerken, ob es ein Treiber od. Programm ist?
mfg, jeb