Virtueller Speicher vs. Virtueller Adressraum

3

Ich weiß, dass virtueller Speicher eine Auslagerungsdatei ist, die der Computer verwendet, um einen Teil des Arbeitsspeichers auf der Festplatte für einen laufenden Prozess zu speichern. Wie unterschiedlich ist der virtuelle Adressraum? Ist es der RAM oder die Festplatte oder beides?

Karen15
quelle
3
Der virtuelle Speicher ist NICHT nur eine "Auslagerungsdatei". Sie verwenden immer noch virtuellen Speicher, auch wenn Sie keine Paginedatei haben.
Jamie Hanrahan
Es gibt Systeme mit virtuellem Speicher und ohne Auslagerungsdatei (wie die meisten SoHo-Router) und Systeme mit Auslagerungsdateien und ohne virtuellen Speicher (Auslagerungsdateien wurden auf vielen frühen Computern verwendet, die keinen virtuellen Speicher unterstützen). Dies ist ein weit verbreitetes Missverständnis.
David Schwartz

Antworten:

8

Der virtuelle Adressraum ist das, was ein einzelnes Programm sieht, wenn es ausgeführt wird. Je nachdem, wie das Programm konfiguriert wurde, ist dieser Adressraum so groß wie das vom Betriebssystem unterstützte Maximum.

Der Betriebssystemkern ist dann für die Zuordnung von Adressen in den vas zum physischen Speicher (RAM oder System-Auslagerungsdateien) verantwortlich.

Bei diesem Entwurf sind sich die Programme selbst nicht der Ressourcen und der realen Adressen bewusst und können so arbeiten, als ob sie den gesamten Systemspeicher oder zumindest den maximalen Speicher, den ein einzelner Prozess verwenden kann, für sich alleine hätten.

Kurz gesagt, ein Programm arbeitet mit VAS, und das Betriebssystem verwaltet die Zuordnung von VAS zu realem Speicher, sodass dies für das ausgeführte Programm nicht sichtbar ist. Das laufende Programm sieht nur seinen VAS.

gview
quelle
0

Der virtuelle Adressraum ist eine Beschränkung der Speichergröße, die ein Programm adressieren kann.

Dies wird an der äußeren Grenze durch den Stil der Zeiger eingeschränkt - ein reiner 32-Bit-Zeiger kann theoretisch 4 GB virtuellen Raum adressieren. Die tatsächliche Grenze hängt vom Betriebssystemdesign ab, da neben dem Benutzerbereich ein erheblicher Teil des Adressraums verwendet wird.

Unter Win32 ist die Standardeinstellung, einen virtuellen Adressraum von 2 GB als Benutzerraum zuzulassen.

Ein 64-Bit-Zeiger kann weit mehr adressieren, in der Praxis sind normalerweise 48 Bit zulässig, und es gibt viele Details zu dieser Superuser-Antwort .

Theoretisch könnte jemand einen physischen Computer mit genügend RAM bauen, so dass 2 GB Speicherplatz direkt dem physischen Speicher zugeordnet werden können (wahrscheinlich mindestens 3 GB physischen Speicher), sodass 32-Bit-Prozesse vorhanden sind, bei denen der virtuelle Speicher nicht sehr virtuell ist.

Andy Dent
quelle
Für 2 GB Speicherplatz sind nur 2 GB physischer Speicher erforderlich. Die Beschränkung auf 2 GB ist in hohem Maße auf das Betriebssystemdesign zurückzuführen, mehr jedoch auf die Tatsache, dass Zeiger in C / C ++ standardmäßig angemeldet sind.
Surfasb
-1

Der Prozess sieht den virtuellen Adressraum. Beispielsweise befindet sich Ihre E-Mail in einem Posteingang mit einer Größe von beispielsweise 25 GB. Das ist Ihr virtueller Adressraum.

Virtueller Adressraum soll die Tatsache kennzeichnen, dass nicht jeder virtuelle Adressraum einem physischen Adressraum entspricht. Nehmen wir an, Sie haben 20 E-Mail-Benutzer mit 25 GB Posteingang. Sie haben jedoch nur 100 GB Festplattenspeicher auf Ihrem Server. Nun, Sie können alte E-Mails nehmen und archivieren und nur die neuesten auf Ihrem Server behalten, da die Leute normalerweise nur die neuesten E-Mails abrufen.

Das Archivieren von E-Mails vom Server auf einem Bandlaufwerk ähnelt dem Auslagern von RAM-Teilen auf eine Festplatte durch den Computer. Wenn sich jemand alte E-Mails ansieht, "paginieren" Sie einfach die alte E-Mail vom Band zurück auf Ihren Server. Der E-Mail-Benutzer wird den Unterschied nie erfahren.

Auf die gleiche Weise verfügt jeder Prozess auf Ihrem Computer über einen virtuellen X- Adressraum, auch wenn möglicherweise weniger X * number of processesphysischer Speicher vorhanden ist.

Virtueller Speicher ist genau das. Virtueller Adressraum. Der virtuelle Speicher ist jedoch nur der von Ihnen verwendete virtuelle Adressraum.

surfasb
quelle
Das ist völlig falsch.
Andy Dent
"Ja wirklich?" Bitte erklären Sie ...
Surfasb
Die Größe eines 25-GB-Posteingangs auf der Festplatte hat überhaupt nichts mit dem virtuellen Adressraum zu tun. Es gibt eine sehr einfache Definition und ich verstehe, dass Sie versucht haben, eine Analogie zu verwenden. Viele Leute, die Ihre Antwort lesen und noch nicht wissen, was ein virtueller Adressraum ist, würden nicht erkennen, dass es sich lediglich um eine Analogie handelt.
Andy Dent
1
"Virtueller Speicher ist nur der virtuelle Adressraum, den Sie verwenden." Nein ist es nicht. Der virtuelle Adressraum ist der Bereich, den Ihr Programm theoretisch als Kombination aus den Einschränkungen der Zeigergröße und den Einschränkungen des Betriebssystems adressieren kann.
Andy Dent
Ich denke, es ist eine sehr gute Analogie, wenn man bedenkt, dass die meisten Leute, die die Antwort lesen, aus dem Bereich "Was bedeuten der virtuelle Speicher und der Adressraum des virtuellen Speichers für mich als durchschnittlicher Benutzer" kommen. Wenn dies nun ein Stapelüberlauf ist, würde diese Analogie nicht ausreichen und die Frage selbst würde mehr Kontext benötigen. Beachten Sie, dass dies der Superuser und nicht die Gruppe der Gerätetreiber-Programmierer ist.
Surfasb