Ich brauche mal ein paar Tipps und Antworten
-
Ich bin grad so weit, dass mein Betriebssystem in den pmode schaltet und erstmal ´n paar treiber für das nötigste lädt. Jetzt will ich das ganze modular weiterbauen. dh. ich möchte alles in einzelnen Prozessen weiterbasteln. Die Prozesse müssen jetzt von disk ins Ram geladen werden. dazu muss man einen Eintrag in der gdt machen und vielleicht eine ldt aufmachen. Meine erste Frage:
Wie stell ich es am besten an einen neuen Eintrag in der gdt? geht das am besten, wenn ich im ersten richtigen Eintrag der gdt ein Sektor schreibe, der auf die gdt selbst zeigt? Also einen read/write datensektor, wo ich dann einfach die tabelle editiere.
zweite Frage:
Woher weiß ich an welcher Stelle ich in die gdt schreiben muss? Ich dachte mir ein Stacksegment, wo ich mir halt immer alle nummern von 1 bis max. der Einträge anlege. Immer das obenliegende Adresse wird für den nächsten eintrag benutzt. Wird ein Segment frei, dann wird es oben wieder draufgelegt.
dritte Frage:
Nach ewigem gebastel hab ich es tatsächlich geschafft, dass das Paging angeschaltet wird. Jetzt hab ich aber wieder ein Problem. In der GDT is ja als Basisadresse eine virtuelle-Adresse angegeben, die dann auf die physische umgebastelt wird. Woher weiß ich jetzt eigendlich wenn ich ein neues Segment anlegen will, was ich als basisadresse angeben soll? bzw. Welche Pages noch zur benutzung frei sind.
und zu guter letzt:
Wie kann ich rausfinden, welches gerät an welchem interrupt hängt?
-
Zum letzten Teil:
Bei den Geräten musst du halt wissen an welcher Speicheradresse die hängen (Stichwort: Treiber). evtl. debuggste einfach mal die Biosinterrupts. Naja welche Interrupts die haben musste auch wissen genauso wie die Daten über die Funktionen. Aber wofür gibts denn schöne Interrupttabellen?Welche Pages noch frei sind musste dir intern irgendwie merken. Der Prozessor weiß überhaupt nichts über den Speicher dafür bist du als Programmierer ja da.