Kann mir bitte jemand klar machen, was der Unterschied zwischen virtuellem Speicher und Swap Space ist ?
Und warum sagen wir, dass für eine 32-Bit-Maschine maximal 4 GB virtueller Speicher verfügbar sind?
operating-system
terminology
Algo-Geeks
quelle
quelle
Antworten:
Es gibt eine hervorragende Explantation des virtuellen Speichers im Superuser .
Einfach ausgedrückt ist der virtuelle Speicher eine Kombination aus RAM und Speicherplatz, die von laufenden Prozessen verwendet werden kann.
Der Swap Space ist der Teil des virtuellen Speichers auf der Festplatte, der verwendet wird, wenn der RAM voll ist.
Warum die 32-Bit-CPU auf 4 GB virtuellen Speicher beschränkt ist, wird hier gut angesprochen :
quelle
Der Begriff virtueller Speicher ist verwirrend und bezieht sich tatsächlich auf die folgenden zwei sehr unterschiedlichen Konzepte
Swap Space (OTOH) ist der Name des Teils der Festplatte, auf dem zusätzliche RAM-Seiten gespeichert werden, wenn sie nicht verwendet werden.
Eine wichtige Erkenntnis ist, dass Ersteres aufgrund der Hardware- und Betriebssystemunterstützung des Letzteren transparent möglich ist.
Um dies alles besser zu verstehen, sollten Sie überlegen, wie der "virtuelle Speicher" (wie in Definition 2) von der CPU und dem Betriebssystem unterstützt wird.
Angenommen, Sie haben einen 32-Bit-Zeiger (64-Bit-Punkte sind ähnlich, verwenden jedoch leicht unterschiedliche Mechanismen). Sobald "Virtueller Speicher" aktiviert wurde, betrachtet der Prozessor diesen Zeiger als dreiteilig.
Nun, wenn die CPU versucht , den Inhalt eines Zeiger zuzugreifen, konsultiert er zunächst die Seite Verzeichnistabelle - eine Tabelle , bestehend aus 1024 Einträge (in der X86 - Architektur der Ort , von denen durch das CR3 - Register gerichtet ist). Der 10-Bit-Seitenverzeichniseintrag ist ein Index in dieser Tabelle, der auf den physischen Speicherort der Seitentabelle verweist . Dies ist wiederum eine weitere Tabelle mit 1024 Einträgen, von denen jeder ein Zeiger im physischen Speicher und mehrere wichtige Steuerbits ist. (Wir werden später darauf zurückkommen). Sobald eine Seite gefunden wurde, werden die letzten 12 Bits verwendet, um eine Adresse innerhalb dieser Seite zu finden.
Es gibt viele weitere Details (TLBs, große Seiten, PAE, Selektoren, Seitenschutz), aber die kurze Erklärung oben fasst den Kern der Dinge zusammen.
Mit diesem Übersetzungsmechanismus kann ein Betriebssystem für jeden Prozess einen anderen Satz physischer Seiten verwenden, wodurch jedem Prozess die Illusion entsteht, den gesamten Speicher für sich zu haben (da jeder Prozess sein eigenes Seitenverzeichnis erhält).
Zusätzlich zu diesem virtuellen Speicher kann das Betriebssystem auch das Konzept des Paging hinzufügen . Mit einem der zuvor diskutierten Steuerbits kann angegeben werden, ob ein Eintrag "Vorhanden" ist. Wenn es nicht vorhanden ist, führt ein Versuch, auf diesen Eintrag zuzugreifen, zu einer Seitenfehlerausnahme . Das Betriebssystem kann diese Ausnahme erfassen und entsprechend handeln. Betriebssysteme, die Swapping / Paging unterstützen, können daher entscheiden, eine Seite aus dem Swap Space zu laden , die Übersetzungstabellen zu korrigieren und dann den Speicherzugriff erneut zu erteilen.
Hier kombinieren sich die beiden Begriffe. Ein Betriebssystem, das virtuellen Speicher und Paging unterstützt, kann Prozessen die Illusion vermitteln, mehr Speicher als tatsächlich vorhanden zu haben, indem Seiten in den Auslagerungsbereich und aus diesem heraus ausgelagert werden.
Zu Ihrer letzten Frage (Warum heißt es, dass die 32-Bit-CPU auf 4 GB virtuellen Speicher beschränkt ist). Dies bezieht sich auf den "virtuellen Speicher" von Definition 2 und ist ein unmittelbares Ergebnis der Zeigergröße. Wenn die CPU nur 32-Bit-Zeiger verwenden kann, haben Sie nur 32 Bit, um unterschiedliche Adressen auszudrücken. Dies ergibt 2 ^ 32 = 4 GB adressierbaren Speicher.
Hoffe das macht die Sache etwas klarer.
quelle
IMHO ist es furchtbar irreführend, das Konzept des Swap Space als Äquivalent zum virtuellen Speicher zu verwenden. VM ist ein Konzept, das viel allgemeiner ist als der Swap Space. Mit VM können Prozesse unter anderem virtuelle Adressen während der Ausführung referenzieren, die mithilfe von Hardware- und Seitentabellen in physische Adressen übersetzt werden. Daher kümmern sich Prozesse nicht darum, wie viel physischen Speicher das System hat oder wo sich der Befehl oder die Daten tatsächlich in der Hierarchie des physischen Speichers befinden. VM ermöglicht diese Zuordnung. Das referenzierte Element (Anweisung oder Daten) kann sich in L1 oder L2 oder RAM oder schließlich auf der Festplatte befinden. In diesem Fall wird es in den Hauptspeicher geladen.
Swap Space ist nur ein Ort im Sekundärspeicher, an dem Seiten gespeichert werden, wenn sie inaktiv sind. Wenn nicht genügend RAM vorhanden ist, kann das Betriebssystem entscheiden, Seiten eines Prozesses auszutauschen, um Platz für andere Prozessseiten zu schaffen. Der Prozessor führt niemals Anweisungen aus oder liest / schreibt Daten direkt aus dem Swap-Bereich.
Beachten Sie, dass in einem System ohne VM möglicherweise Swap-Speicher vorhanden ist. Das heißt, Prozesse, die direkt auf physische Adressen zugreifen, können noch Teile davon auf der Festplatte haben.
quelle
Obwohl der Thread ziemlich alt ist und bereits beantwortet wurde. Ich möchte diesen Link trotzdem teilen, da dies die einfachste Erklärung ist, die ich bisher gefunden habe. Der folgende Link enthält Diagramme zur besseren Visualisierung.
Unterschied zwischen virtuellem Speicher und Swap-Speicher
quelle
"Virtueller Speicher" ist ein Oberbegriff. In Windows wird es als Paging oder Paginierung bezeichnet. Unter Linux wird es als Swap bezeichnet.
quelle