Virtueller Adressraum

Im Computer, a Virtueller Adressraum (Vas) oder Adressraum ist die Reihe von Bereichen virtuelle Adressen, die an Betriebssystem stellt einem Prozess zur Verfügung.[1] Der Bereich der virtuellen Adressen beginnt normalerweise mit einer geringen Adresse und kann sich auf die höchste Adresse erstrecken, die vom Computer zulässig ist Anweisungsset Architektur und unterstützt von der BetriebssystemImplementierung der Zeigergröße, die 4 sein kann Bytes zum 32-Bit oder 8 Bytes zum 64-Bit OS -Versionen. Dies bietet mehrere Vorteile, von denen eine Sicherheit durch die Sicherheit ist Prozessisolation Angenommen, jeder Prozess wird separat gegeben Adressraum.
Beispiel
- In der folgenden Beschreibung ist die verwendete Terminologie spezifisch zu der Windows NT Betriebssystem, die Konzepte sind jedoch für andere Betriebssysteme für virtuelle Speicher anwendbar.
Wenn eine neue Anwendung auf a 32-Bit OS wird ausgeführt, der Prozess hat a 4 Gib Vas: Jeder der der Speicheradressen (von 0 bis 232 - 1) in diesem Raum kann ein einzelnes Byte als Wert haben. Anfangs hat keiner von ihnen Werte ('-' keinen Wert). Die Verwendung oder Einstellung von Werten in einem solchen VAS würde a verursachen a Speicherausnahme.
0 4 gib vas | ----------------------------------------------------- -|
Anschließend wird die ausführbare Datei der Anwendung in die VAS zugeordnet. Adressen im Prozess VAS werden in der EXE -Datei Bytes zugeordnet. Das Betriebssystem verwaltet die Zuordnung:
0 4 Gib vas | --- vvv ------------------------------------ | Mapping ||| Datei -Bytes -App
Die V sind Werte von Bytes in der Zugeordnete Datei. Dann erforderlich DLL Dateien werden zugeordnet (dies umfasst benutzerdefinierte Bibliotheken sowie Systeme wie z. B. kernel32.dll
und user32.dll
):
0 4 gib vas | --- vvv -------- vvvvvv --- vvvv ------------------- | Mapping ||| |||||| |||| Datei -Bytes -App -Kernel -Benutzer
Der Prozess beginnt dann mit der Ausführung von Bytes in der EXE -Datei. Der Prozess kann jedoch nur den Prozess verwenden oder festlegen. Eine häufige Möglichkeit, VAS -Speicher auf diese Weise zu verwenden, besteht darin, ihn dem abzubilden Datei Datei. Die Seite Datei ist eine einzelne Datei, aber mehrere unterschiedliche Sätze von zusammenhängenden Bytes können in einen VAS abgebildet werden:
0 4 gib vas | --- vvv -------- vvvvvv --- Mapping ||| |||||| |||| || | ||| Datei Bytes App Kernel User System_Page_file
Und verschiedene Teile der Datei können in die VAs verschiedener Prozesse zugeordnet werden:
0 4 gib vas 1 | --- vvvv ------- vvvvvv --- vvvv ---- vv --- v ---- vvv-- | Mapping |||| |||||| |||| || | ||| Datei -Bytes App1 App2 Kernel Benutzer system_page_file Mapping |||| |||||| |||| || | Vas 2 | -------- Vvvv-vvvvvv --- vvvv ------- vv --- v ------ |
An Microsoft Windows 32-Bit nur standardmäßig, 2 Gib werden Prozessen für ihre eigene Verwendung zur Verfügung gestellt.[2] Das andere 2 Gib werden vom Betriebssystem verwendet. Bei späteren 32-Bit-Editionen von Microsoft Window 3 Gib Nur während 1 Gib wird für den virtuellen Kern-Modus-Adressraum gelassen, indem die Programme als Image_File_Large_address_aware markiert werden und den /3GB-Switch in der Datei boot.ini aktiviert werden.[3][4]
Auf Microsoft Windows 64-Bit wird bei einem Prozess eine ausführbare Datei ausgeführt, die mit /largeaddressaware verknüpft wurde: Nein, das Betriebssystem schränkt den Teil des Benutzermodus des virtuellen Adressraums des Prozesses auf 2 Gib künstlich ein. Dies gilt sowohl für ausführbare 32- als auch für 64-Bit.[5][6] Prozesse, die ausführbare Ausführungen ausgeführt werden, die mit der Option /largeaddressaware: Ja verknüpft waren, was der Standard für 64-Bit Visual Studio 2010 und später ist.[7] haben Zugang zu mehr als 2 Gib des virtuellen Adressraums: bis zu 4 Gib für 32-Bit-ausführbare Säle bis zu 8 Tib Für 64-Bit-Ausführbare in Windows über Windows 8 und bis zu 128 Tib Für 64-Bit-Ausführbare in Windows 8.1 und später.[4][8]
Speicher durch C's Malloc Erstellt die Datei als Backing -Store für einen neuen virtuellen Adressraum. Ein Prozess kann jedoch auch ausdrücklich Karte Datei -Bytes.
Linux
Zum x86 CPUs, Linux 32-Bit ermöglicht die Aufteilung der Benutzer- und Kerneladressbereiche auf unterschiedliche Weise: 3G/1G -Benutzer/Kernel (Ursprünglich), 1G/3G -Benutzer/Kernel oder 2G/2G -Benutzer/Kernel.[9]
Siehe auch
Anmerkungen
- ^ IBM Corporation. "Was ist ein Adressraum?". Abgerufen 24. August, 2013.
- ^ "Virtueller Adressraum". Msdn. Microsoft.
- ^ "Loaded_image Struktur". Msdn. Microsoft.
- ^ a b "4-Gigabyte-Tuning: bcdededit und boot.ini". Msdn. Microsoft.
- ^ "/Largeaddressaware (große Adressen bearbeiten)". Msdn. Microsoft.
- ^ "Virtueller Adressraum". Msdn. Microsoft.
- ^ "/Largeaddressaware (große Adressen bearbeiten)". Msdn. Microsoft.
- ^ "/Largeaddressaware (große Adressen bearbeiten)". Msdn. Microsoft.
- ^ "Linux -Kernel - x86: Speicherspaltung".
Verweise
- "Erweiterte Fenster"Von Jeffrey Richter, Microsoft Press