Virtual Memory
-
Hallo!
So wie ich es verstehe sieht es mit dem Virtual Memory unter Windows so aus:
Jedes Programm hat seinen eigenen Virtual Address Space (der mit Adresse 1 beginnt). In diesen Address Space werden außer den eigenen Programmdaten auch noch DLLs wie kernel32.dll, usw. gemappt. Der Prozessor mappt die virtuellen Adressen zu den eigentlichen Adressen, die entweder im physischen Speicher, im CPU Cache oder im Paging File liegen.
Ist diese Vorstellung korrekt?
-
Ja im Prinzip schon.
Der virtuelle Adressraum fängt allerdings sogar bei 0 an. Der Prozessor mappt die Adressen imme rauf physikalische Adressen die im Speicher liegen. Wenn die Daten im Pagefile liegen, werden die Seiten als nichtvorhanden markiert, bei einem Zugriff meldet der Prozessor dies dem Betriebssystem und das Betriebssystem lädt dann die Seite wieder in den Speicher hinein. Der Cache schwebt zwischen Prozessor und Speicher rum, ist aber für diese Sache "unsichtbar", hat also keine speziellen eigenen Adressen.
-
DerUnwissende schrieb:
Der Prozessor mappt die virtuellen Adressen zu den eigentlichen Adressen, die entweder im physischen Speicher, im CPU Cache oder im Paging File liegen.
Die MMU wandelt virtuelle in reale Addressen um. Wenn ein Element nicht im Speicher vorhanden ist, wirde ein Fehler ausgelöst und der Kernel kann die Datei aus dem Swap-Space (bzw. Auslagerungsdatei) nachladen.
-
Das heißt aber eigentlich auch, dass wenn ein Computer die maximal adressierbaren RAM eingebaut hat (was bei 32-Bit mit 4GB leicht möglich ist) kein Swapping der Daten auf die Festplatte stattfinden kann, da es ja keine Adressen gibt, die auf das Paging File zeigen können, oder?
-
DerUnwissende schrieb:
Das heißt aber eigentlich auch, dass wenn ein Computer die maximal adressierbaren RAM eingebaut hat (was bei 32-Bit mit 4GB leicht möglich ist) kein Swapping der Daten auf die Festplatte stattfinden kann, da es ja keine Adressen gibt, die auf das Paging File zeigen können, oder?
Nein, wenn eine virtuelle Addresse nicht im Speicher ist, dann findet die MMU dafür keinen Eintrag in der TLB. Das hat nichts mit der Menge des verfügbaren Speichers zu tun.
-
OK, jetzt ist mir alles klar. Vielen Dank noch mal an euch beide.