Frage

sah ich, dass auf einem 64-Bit-Windows der virtuellen Benutzer OS verfügbare Adressraum ist 8 terra Bytes. Aber wenn das Programm, das wir auf diesem ausführen, um in 32-Bit-Kompatibilitätsmodus ausgeführt ist dies viel von User-Space noch verfügbar? oder verhält es wie ein normales 32-Bit-OS und gibt nur 2 GB Benutzeradressraum?

War es hilfreich?

Lösung

Microsoft ein Diagramm zeigt die verschiedenen Grenzen hat: Memory Limits für Windows Mitteilungen

Um zusammenzufassen nur den Benutzer-Modus virtuellen Adressraum:

  • 32-Bit-Windows:
    • 32-Bit-Prozess: 2 GB standardmäßig; 3 GB mit /LARGEADDRESSAWARE:YES und 4GT
  • 64-Bit-Windows (x64-Architektur):
    • 32-Bit-Prozess: 2 GB standardmäßig; 4 GB mit /LARGEADDRESSAWARE:YES
    • 64-Bit-Prozess: 8 TB standardmäßig; 2 GB mit /LARGEADDRESSAWARE:NO

4GT 4-Gigabyte-Tuning:

  • XP: /3GB boot.ini Schalter
  • Vista: bcdedit /set increaseuserva 3072

Mark Russinovich hat einen Blog-Post viele diese Grenzen zu erklären: Pushing die Grenzen von Windows: Virtueller Speicher

Andere Tipps

Ihr Prozess sieht nur einen 4 GB virtueller Adressraum, wenn er als 32-Bit-Prozess ausgeführt wird. Es wird nicht an Adressen etwas höher sein kann.

Meine ursprüngliche Antwort war ziemlich schlecht. Hier ist ein Link, der erklärt, was JaredPar war ziemlich gut sagen.

http://msdn.microsoft.com/en-us/library /ms189334.aspx

Was die Hardware betrifft, wenn Sie im Kompatibilitätsmodus ausführen (das heißt IA32_EFER.LMA eingestellt ist und das L-Bit ist in CS des Segment-Descriptor klar) die Segmente wie 32-Bit-Segmente verhalten. Das heißt:

  • die Segmentbasis wird auf 32 Bit beschränkt.
  • wird die Segmentgrenze wie auch auf 32 Bits begrenzt (den G-Bit verwendet wird).

Dies begrenzt effektiv Sie bis zu 4 GB virtuellen Adressen. Ich bin mir nicht bekannt, wie die OS-Partitionen virtuellen Speicher in den verschiedenen Modi, aber das ist das Hardware-Limit. (Sorry ... Ich bin ein Hardware-Kerl, kein OS-Experte)

Wenn Ihr Programm als 32-Bit-Prozess auf dem Subsystem Wow64 läuft, wird es genau die gleichen Adressraum sieht, dass es auf einem tatsächlichen 32-Bit-OS sehen würde. Ohne spezielle Optionen, wird ein 32-Bit-Prozess 2 GB Speicher zur Verfügung.

Der einzige Unterschied ist der verfügbare Speicher, wenn Sie die LARGEADDRESSAWARE Option. In einem normalen 32-Bit-Prozess ermöglicht dies für 3 GB Speicher. In einem Wow64 Prozess kann es zu 4GB siehe oben ( Quelle )

Es sollte beachtet werden, dass ein 32-Bit-Prozess auf IIS 6.0 oder höher mit einem 64-Bit-Maschine / OS ausgeführt wird, ein Verfahren zu 4 GB Speicher adressieren kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top