Autor Thema: Physische Speicherverwaltung- Bitmaps  (Gelesen 6615 mal)

üäpöol

  • Beiträge: 110
    • Profil anzeigen
Gespeichert
« am: 27. January 2013, 18:55 »
Hi,
ich hab eine Frage zu den Bitmaps. Ich verstehe leider nicht, was eine Seite bedeuten soll.
Das Bitmap ist doch ein Array, bei dem ein Element für einen 4kB groß ist. Wenn ich Speicher anfordere, möchte ich doch auch 4kB, oder? Wozu gibt es dann noch die Seiten?
Tut mir Leid, dass ich so blöd frage.

Martin Erhardt

  • Beiträge: 165
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 27. January 2013, 19:09 »
Also jetzt mal ganz von vorne: Das Bitmap ist ein Puffer indem jedes bit für einen Speicherblock steht und zwei Werte haben kann(z.b 0 für Blockfrei und 1 für Blockbelegt)Was verstehst du jez nich? die Anzahl der zu verwaltenden Blöcke ist sizeof(Bitmap)*8
« Letzte Änderung: 27. January 2013, 19:12 von Martin Erhardt »

üäpöol

  • Beiträge: 110
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 27. January 2013, 19:10 »
Ich verstehe die Größe nicht. Wie groß ist ein solcher Block?

Martin Erhardt

  • Beiträge: 165
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 27. January 2013, 19:14 »
Ein zu verwaltender Block oder eine zu verwaltende Speicherseite kann so groß, klein sein wie du willt 4kb ist aber gerade günstig wegen Paging blablabla
PATCH weil der Begriff "Speicherseite" beim Paging verwendet wird :)
-Ein zu verwaltender Block oder eine zu verwaltende Speicherseite kann so groß, klein sein wie du willt 4kb ist aber gerade günstig wegen Paging blablabla
+Ein zu verwaltender Block kann so groß, klein sein wie du willt 4kb ist aber gerade günstig wegen Paging blablabla
« Letzte Änderung: 27. January 2013, 19:57 von Martin Erhardt »

Martin Erhardt

  • Beiträge: 165
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 27. January 2013, 19:18 »
Ich verstehe Speicherverwaltung schon(habs auch schon umgesetzt) aber ich weiß nicht ganz wie ich das testen kann. Wenn was nich funzt dann merk ich das ja nicht sofort sondern ich wundere mich bloß wenn meinKernel größer ist, dass er ständig abstürzt wegen den RaceConditions die so entstehen können.
« Letzte Änderung: 27. January 2013, 19:20 von Martin Erhardt »

üäpöol

  • Beiträge: 110
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 27. January 2013, 19:30 »
Okay, danke schon mal. Wenn ich überprüfe, welche Blöcke frei sind, sind das doch auch 4kB Blöcke, oder? Bietet es sich dann nicht so, eine Speicherseite auch 4kB groß zu machen, oder was spricht dagegen?

Martin Erhardt

  • Beiträge: 165
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 27. January 2013, 19:47 »
sry ich meinte mit Block und Speicherseite das selbe. Die Speicherseiten fürs PAGING müssen 4kb 4mb oder 2mb groß sein, steht jedenfalls im Wiki.
« Letzte Änderung: 27. January 2013, 19:50 von Martin Erhardt »

Martin Erhardt

  • Beiträge: 165
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 27. January 2013, 19:53 »
Okay, danke schon mal. Wenn ich überprüfe, welche Blöcke frei sind, sind das doch auch 4kB Blöcke, oder? Bietet es sich dann nicht so, eine Speicherseite auch 4kB groß zu machen, oder was spricht dagegen?
Belegte Brotchen sind gleichgroß wie nichtbelegte ;) In der Bitmap ist aber steht natürlich nur ein Bit für einen Block.

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 27. January 2013, 22:00 »
ich hab eine Frage zu den Bitmaps. Ich verstehe leider nicht, was eine Seite bedeuten soll.
Bei der physischen Speicherverwaltung spielt der Begriff keine Rolle. Speicherseiten (Pages) spielen aber beim Paging eine große Rolle - dort wird der Speicher in solche Pages eingeteilt.

Das Bitmap ist doch ein Array, bei dem ein Element für einen 4kB groß ist.
Was ist jetzt ein Element? :-) Normalerweise baust du die Bitmap aus Integern zusammen, dann hast du 32 Bit pro Array-Eintrag. Jedes Bit steht für ein Stück Speicher, welches belegt oder frei sein kann (wenn diese Stücke dann 4 KB groß sind, sind das 128 KB pro Arrayeintrag).

Die physische Speicherverwaltung kann mit beliebig großen Blöcken arbeiten. Die virtuelle Speicherverwaltung (Paging) kann nur mit Blöcken bestimmter Größe umgehen (bei x86 sind das 4 KB, 2 MB oder 4 MB pro Block). Darum ist es sinnvoll, die physische Speicherverwaltung auf Blöcke gleicher Größe zu eichen. :-)

Gruß,
Svenska

 

Einloggen