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?
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?
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 :
Per Definition verwendet ein 32-Bit-Prozessor 32 Bit, um auf die Position jedes Speicherbytes zu verweisen. 2 ^ 32 = 4,2 Milliarden, was bedeutet, dass eine 32 Bit lange Speicheradresse nur auf 4,2 Milliarden eindeutige Speicherorte (dh 4 GB) verweisen kann.
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.
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.
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.
Hauptunterschied: Der virtuelle Speicher ist eine Abstraktion des Hauptspeichers. Es erweitert den verfügbaren Speicher des Computers, indem die inaktiven Teile des Inhalts-RAM auf einer Festplatte gespeichert werden. Wann immer der Inhalt benötigt wird, ruft er ihn zurück in den RAM. Auslagerungsspeicher oder Auslagerungsspeicher ist ein Teil des Festplattenlaufwerks, das für den virtuellen Speicher verwendet wird. Somit werden beide auch austauschbar verwendet.
Der virtuelle Speicher unterscheidet sich leise vom physischen Speicher. Programmierer erhalten direkten Zugriff auf den virtuellen Speicher und nicht auf den physischen Speicher. Der virtuelle Speicher ist eine Abstraktion des Hauptspeichers. Es wird verwendet, um die Informationen des realen physischen Speichers des Systems zu verbergen. Es erweitert den verfügbaren Speicher des Computers, indem die inaktiven Teile des RAM-Inhalts auf einer Festplatte gespeichert werden. Wenn der Inhalt benötigt wird, wird er zurück in den RAM abgerufen. Der virtuelle Speicher erzeugt eine Illusion eines gesamten Adressraums mit Adressen, die mit Null beginnen. Es wird hauptsächlich wegen seiner Optimierungsfunktion bevorzugt, durch die der Platzbedarf reduziert wird. Es besteht aus dem verfügbaren RAM und dem verfügbaren Speicherplatz.
Der Swap-Speicher wird im Allgemeinen als Swap-Speicher bezeichnet. Swap Space bezieht sich auf den Teil des virtuellen Speichers, der als temporärer Speicherort reserviert ist. Der Swap-Speicher wird verwendet, wenn der verfügbare RAM die Anforderungen des Systemspeichers nicht erfüllen kann. In einem Linux-Speichersystem findet der Kernel beispielsweise jede Seite im physischen Speicher oder im Swap-Bereich. Der Kernel verwaltet auch eine Tabelle, in der die Informationen zu den ausgelagerten Seiten und Seiten im physischen Speicher gespeichert sind. Die Seiten, auf die seit langer Zeit nicht mehr zugegriffen wurde, werden an den Swap Space-Bereich gesendet. Der Prozess wird als Auslagern bezeichnet. Falls dieselbe Seite benötigt wird, wird sie im physischen Speicher ausgetauscht, indem eine andere Seite ausgetauscht wird. So,
"Virtueller Speicher" ist ein Oberbegriff. In Windows wird es als Paging oder Paginierung bezeichnet. Unter Linux wird es als Swap bezeichnet.