| Zeile 8: | Zeile 8: | ||
=== Bitmap === | === Bitmap === | ||
| − | Dabei wird eine Bitmap der Größe ''Speichergröße / (Größe einer Speicherseite * 8)'' erstellt. Das x-te Bit dieser Bitmap gibt an ob die x-te Speicherseite (bzw. die Speicherseite an Adresse ''Größe einer Speicherseite * x'') frei oder belegt ist. Bei 4GB RAM benötigt man dafür eine 128kB große Bitmap.<br> | + | Dabei wird eine Bitmap der Größe ''Speichergröße / (Größe einer Speicherseite * 8)'' erstellt. Das x-te Bit dieser Bitmap gibt an ob die x-te Speicherseite (bzw. die Speicherseite an Adresse ''Größe einer Speicherseite * x'') frei oder belegt ist. Bei 4GB RAM und einer Speicherseiten-Größe von 4kB benötigt man dafür eine 128kB große Bitmap.<br> |
==== Allokation & Freigabe von Speicherseiten ==== | ==== Allokation & Freigabe von Speicherseiten ==== | ||
Um eine Speicherseite zu allozieren wird die Bitmap solange durchsucht, bis man ein Bit mit dem Wert 0 gefunden hat. Dieses Bit setzt man dann auf 1, um anzuzeigen, dass diese Speicherseite ab jetzt belegt ist. Dann errechnet man anhand der Position dieses Bits in der Bitmap die Adresse der Speicherseite. Anschließend kann man die Adresse an die aufrufende Funktion zurückgeben.<br> | Um eine Speicherseite zu allozieren wird die Bitmap solange durchsucht, bis man ein Bit mit dem Wert 0 gefunden hat. Dieses Bit setzt man dann auf 1, um anzuzeigen, dass diese Speicherseite ab jetzt belegt ist. Dann errechnet man anhand der Position dieses Bits in der Bitmap die Adresse der Speicherseite. Anschließend kann man die Adresse an die aufrufende Funktion zurückgeben.<br> | ||