Autor Thema: physische Speicherverwaltung (Anfang)  (Gelesen 4557 mal)

Thunder

  • Beiträge: 24
    • Profil anzeigen
Gespeichert
« am: 13. August 2009, 19:16 »
Hallo Community,
Ich habe mich vor ein paar Tagen angemeldet, da ich schon immer ein OS schreiben wollte. Ich habe auch schon einige Tutorials gelesen und habe jetzt aber eine Frage zur physischen Speicherverwaltung mit einer Bitmap. Wie bekomme ich heraus welche Adressen frei sind? Es sind ja schließlich der Kernel und seine Daten im Speicher.

mfg Thunder

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 13. August 2009, 20:38 »
Willkommen im Forum erstmal. :)

Du kannst dir mal die physische Speicherverwaltung von tyndur anschauen. Im großen und ganzen gibt es da drei Sachen zu beachten, wenn ich nichts vergesse:

  • GRUB (bzw. das BIOS) liefert eine Memory Map, die beschreibt, welche Speicherbereiche benutzbar und welche reserviert sind (z.B. für MMIO-Bereiche von Geräten). Das ist zunächst einmal die Grundlage, von der man ausgeht.
  • Als nächstes weiß man, dass der eigene Kernel belegt ist. Dazu baut man im Linkerskript jeweils an den Anfang und das Ende des Kernels ein Symbol ein, auf das man dann im Kernel zugreifen kann. Dieser Bereich wird als belegt markiert.
  • Dann bleiben noch alle Bereiche außerhalb des Kernels übrig, die schon belegt sind. Je nachdem, was dein Kernel bis zur Initialisierung der physischen Speicherverwaltung gemacht hat, könnten das GDT, IDT, Page Tables, Multiboot-Module oder irgendwas anderes sein. Da du ja weißt, was du angelegt hast oder welche Informationen vom Bootloader du weiterverwenden willst, kannst du die belegten Bereiche hier relativ einfach aufzählen.
Beantwortet das deine Frage so ungefähr?
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

Thunder

  • Beiträge: 24
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 13. August 2009, 22:13 »
Ja, vollkommen. Danke sehr!

 

Einloggen