Autor Thema: Nicht durch das Multiboot-MMap beschriebene Adressräume  (Gelesen 5401 mal)

tiger717

  • Beiträge: 84
    • Profil anzeigen
Gespeichert
Hallo,

beim Auslesen des Multiboot-MMap ist mir aufgefallen, dass die beschriebenen Addressen nicht zusammenhängen. (d.h. Limit (Base + Length) von Eintrag n ist nicht Base von Eintrag n+1)
Ich gehe deshalb  davon aus, dass der gesamte Addressraum zwischen 0 und dem Ende des höheren Speichers (multiboot_lower_mem * 1024 + multiboot_upper_mem * 1024, oder?) frei ist, solange kein Blocked-Eintrag dazu im MMap vorhanden ist. Ist das so richtig?

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 14. October 2012, 15:37 »
Du kannst davon ausgehen, dass der Bereich zwischen 0 und multiboot_lower_mem * 1024 und zwischen 1 MB (=0x100000) bis 0x100000+multiboot_upper_mem * 1024 als RAM zur Verfügung steht.

Insbesondere hat multiboot_lower_mem maximal den Wert 640 (KB). Das heißt es gibt eine Lücke zwischen 640 KB und 1 MB, die vom BIOS, Video Speicher, etc. belegt ist, und nicht als Speicher zur Verfügung steht. Außerdem entspricht der Wert multiboot_upper_mem nicht unbedingt dem maximalen Speicherausbau deines Systems, sondern nur der Größe bis zur ersten Lücke im Speicher. Diese Lücken sind auch der Grund, warum die Speicherbereiche durch Einträge nicht direkt aufeinander folgen. Wenn du deine Speicherverwaltung anhand der Memory Map initialisierst, darfst du nur die Speicherbereiche als frei ansehen, die auch tatsächlich so definiert sind. Du darfst nicht die Lücken mitbenutzen, weil diese Bereich keinen RAM enthalten.

Übrigens: Bereiche, die als RAM zur Verfügung stehen, sind nicht unbedingt frei. Zum Beispiel ist der Speicher bereits durch deinen Kernel und die Multiboot-Informationen teilweise belegt. Diese Bereiche musst du ebenfalls berücksichtigen, wenn du die Speicherverwaltung initialisierst.
Dieser Text wird unter jedem Beitrag angezeigt.

tiger717

  • Beiträge: 84
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 14. October 2012, 15:59 »
Danke, jetzt macht das ganze irgendwie mehr Sinn.   :-)

Dimension

  • Beiträge: 155
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 15. October 2012, 06:10 »
Dazu hätte ich dann auch eine Frage: die reservierten/gemappten Bereiche liegen nach dem Bootvorgang doch ausschließlich unterhalb von 1MB sowie irgendwo knapp unter 4GB, oder liege ich da falsch?

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 15. October 2012, 10:26 »
Hallo,

es gibt klassisch drei Speicherlöcher:
- 640K-1M (wegen 8-Bit-ISA)
- 15-16M (wegen 16-Bit-ISA, EISA oder VLB)
- irgendwo unter 4G (wegen PCI)

aber niemand hindert einen Systemdesigner, noch weitere Löcher einzuführen.

Gruß,
Svenska

 

Einloggen