Ich bin nicht sicher, ob virtueller Speicher tatsächlich eine physische Komponente ist, oder ob die Leute ihn einfach als Methode zur Optimierung von Speicherprozessen bezeichnen.
Ich bin nicht sicher, ob virtueller Speicher tatsächlich eine physische Komponente ist, oder ob die Leute ihn einfach als Methode zur Optimierung von Speicherprozessen bezeichnen.
Antworten:
Virtueller Speicher ist ein Konzept.
Wie anrieff sagt, haben Systeme, die virtuellen Speicher unterstützen, eine MMU, die das Mapping tatsächlich handhabt. Der Prozessor verwendet virtuelle Adressen. Dies kann eine beliebige Adresse im unterstützten 32- oder 64-Bit-Adressraum sein. Virtuelle Adressen sind nicht durch die Größe des physischen Speichers begrenzt.
Wie ich in meinem Kommentar erwähnt habe, muss der virtuelle Speicher auf nichts abgebildet werden. Es gibt zwei Arten von Tabellen:
das MMU-Seitentabellen Dies kann sich auf den realen physischen Speicher beziehen oder auch nicht, je nach dem "vorhandenen" Bit. Sie können Seiten haben, die nicht "vorhanden" sind; Die MMU weiß nicht, was sie möglicherweise enthält, und kümmert sich auch nicht darum, aber sie sind keinem echten physischen DRAM zugeordnet. Wenn Sie versuchen, auf eine davon zuzugreifen, generiert das System eine Seitenfehler zum Betriebssystem.
Das Betriebssystem verfolgt die Speicherzuordnung zu Prozessen und sich selbst und übernimmt die Verantwortung für die Behandlung von Seitenfehlern. Es kann entscheiden, was mit nicht vorhandenen Seiten geschehen soll, während der Prozess, der auf den Speicher zugreift, angehalten wird. Mögliche Auswahlmöglichkeiten sind:
Tauschen: Die Seite wird ausgetauscht. Ordnen Sie einen echten DRAM zu, lesen Sie ihn von der Festplatte und kehren Sie dann zum Prozess zurück.
Speicherzugeordnetes E / A: Ähnlich, aber Lesen aus einer bestimmten Datei.
PCI / AGP-Raum: Die Anforderung geht über den Bus an z. eine GPU statt Hauptspeicher.
Nullen: Entweder hält das Betriebssystem einen DRAM mit Nullen bereit, oder es stoppt, um Nullen auf eine Seite zu schreiben, bevor Sie ihn an Sie weitergeben.
Ungültig: Schließlich ist es durchaus möglich, dass das Betriebssystem überhaupt nicht zurückkehrt und nur den Prozess beendet, der diese Seite angefordert hat. Ein häufiges Beispiel ist "Überbelegung" des Linux-Speichers: Prozesse können mehr Speicher anfordern und zuweisen als verfügbarer DRAM + Swap-Speicher. Das ist in Ordnung, solange sie es nicht benutzen. Wenn sie tun Alle verwenden es und das System verfügt nicht mehr über genügend realen Speicher. Dadurch werden Prozesse abgebrochen, um das System wiederherzustellen. Andere Krisensituationen können das Zuordnen von E / A-Speicher zu einer Datei über das Netzwerk, die nicht mehr vorhanden ist, oder das Austauschen eines ausgefallenen Laufwerks sein.
Sie können eine unbrauchbare Seite absichtlich zuweisen (mmap-Option PROT_NONE unter Linux). Dies ist gelegentlich nützlich, um bestimmte Arten von Fehlern zu finden.