Kann der Win7-32-Bit-Kernel noch 2 GB mit einem Large Address Aware-Programm verwenden?

3303
White Phoenix

Ich verwende derzeit Windows 7 Professional 32-Bit mit 6 GB RAM.

Ich verwende einen PAE-Patch, um die Verwendung von mehr als 3,5 GB RAM in 32-Bit-Windows zu ermöglichen. Eine ähnliche Diskussion fand hier statt: Wie kann ich PAE unter Windows 7 (32-Bit) aktivieren, um mehr als 3,5 GB RAM zu unterstützen?

Der Link zum Patch für Win7 SP1 ist hier: https://wj32.wordpress.com/2011/02/23/pae-patch-updated-for-windows-7-sp1/

Um es kurz zu machen, ich habe den Patch installiert, aber wenn einer von Ihnen Skyrim gespielt haben mag, ist in der neuesten Version von Skyrim (1.3.10) das Flag Large Address Aware standardmäßig aktiviert, damit er verwendet werden kann auf 3 GB Arbeitsspeicher in 32-Bit-Windows und 4 GB Arbeitsspeicher in 64-Bit-Windows. Um dies zu nutzen, müssen Sie natürlich auch eine Benutzerumgebungsvariable in Ihrem BCD-Eintrag festlegen (userva = 3072), damit die Anwendung die vollen 3 GB in 32-Bit-Windows verwenden kann.

Hier die Frage: Nach meinem Verständnis von einem Freund kann der 32-Bit-Windows-Kernel nur bis zu 2 GB Speicher für sich selbst adressieren. Wenn der PAE-Patch aktiviert ist und eine LAA-fähige Anwendung wie Skyrim verwendet wird, hätte der 32-Bit-Windows-Kernel Probleme, den verfügbaren zusätzlichen Speicherplatz zu nutzen (z. B. könnte er aufgrund dessen nur 1 GB adressieren.) das ursprüngliche Limit von 4 GB) oder würde Windows in der Lage sein, ausreichend Speicher für sich selbst zuzuweisen, damit der Kernel die erforderlichen 2 GB nutzen kann? Denken Sie daran, ich habe 6 GB in meiner ursprünglichen Konfiguration.

Nach allem, was ich sagen kann, kann eine Anwendung selbst dann, wenn Anwendungen nicht für PAE konzipiert sind, bis zu 2 GB nutzen, bevor sie ihr "Limit" erreicht. Theoretisch kann ich also bis zu 3 Anwendungen haben, die bis zu 2 GB benötigen Jeder (Windows zu tun, nimmt keinen Speicherplatz in Anspruch, sondern nur ein theoretisches Szenario), und es wäre immer noch in Ordnung, da Windows den Speicherplatz dieser Anwendungen berücksichtigt.

Fühlen Sie sich bitte frei, mich zu korrigieren, wenn ich falsch liege. Ich bin kein Programmierer, aber ich bin neugierig, welche Arten von Decken oder Wänden ich mit dieser Konfiguration anfangen kann.

2

2 Antworten auf die Frage

4
David Schwartz

Die physischen und die virtuellen Speichergrenzen sind völlig unabhängig. Der eine hat nichts mit dem anderen zu tun. PAE hebt die Beschränkung auf 4 GB des physischen Speichers auf. Es hat keinerlei Verbindung zu den 3GB / LAA-Problemen, die virtuellen Speicher betreffen.

Es gibt jedoch ein unangenehmes Problem. Wenn der 3-GB-Modus aktiviert ist, stehen dem Kernel nur 1 GB Adressraum zur Verfügung. Bestimmte Systemeinträge, einschließlich der Einträge zum Nachverfolgen der Verwendung und Zuordnung des physischen Speichers und des gesamten nicht ausgelagerten Pools, müssen sich in diesem Adressraum befinden. Ihr Betriebssystem kann also auf den Adressraum beschränkt sein. Dies kann Probleme für 32-Bit-Betriebssysteme verursachen, insbesondere wenn andere Dinge viel Adressraum beanspruchen, wie beispielsweise High-End-Grafikkarten.

Wenn dies Auswirkungen auf Sie hat, wird das erste Symptom ein mysteriöses Networking mit seltsamen Fehlern sein. Siehe beispielsweise diesen Microsoft-Thread .

Sie haben nie erwähnt, dass Sie / 3 GB verwenden. Ohne sie sind LAA-Prozesse immer noch auf 2 GB beschränkt.

Nach allem, was ich sagen kann, kann eine Anwendung selbst dann, wenn Anwendungen nicht für PAE konzipiert sind, bis zu 2 GB nutzen, bevor sie ihr "Limit" erreicht. Theoretisch kann ich also bis zu 3 Anwendungen haben, die bis zu 2 GB benötigen Jeder (Windows zu tun, nimmt keinen Speicherplatz in Anspruch, sondern nur ein theoretisches Szenario), und es wäre immer noch in Ordnung, da Windows den Speicherplatz dieser Anwendungen berücksichtigt.

Nein! Das Limit von 2 GB gilt für den virtuellen Speicher. Sie verfügen über 6 GB physischen Speicher. Sie können 50 Prozesse mit jeweils 2 GB verwenden, und Sie werden an keine Grenze stoßen, abgesehen von der pro-Prozess-Grenze für jeden dieser 50 Prozesse.

Danke für die Erklärung. Deshalb habe ich gefragt, da ich durch die beiden Konzepte etwas verwirrt wurde und ob sie überhaupt miteinander verbunden sind. Ich verwende nicht den Schalter / 3GB. Wie gesagt, die einzige Änderung, die ich an meinem BCD-Eintrag vorgenommen habe (abgesehen von der notwendigen Änderung, um die gepatchten Dateien winload.exe und ntkrnl.exe auszuführen) bestand darin, die Option userva dauerhaft auf 3072 (3 GB) zu setzen. White Phoenix vor 12 Jahren 0
Dann haben Sie den physischen Speicher erhöht, den das Betriebssystem verwenden kann, es wurden jedoch keine Änderungen am virtuellen Speicher vorgenommen. Prozesse sind immer noch auf 2 GB VM pro Stück beschränkt. David Schwartz vor 12 Jahren 1
Die Option userva = 3072 ist das BCD-Äquivalent von / 3 GB. es wirkt sich auf den Prozess-VM-Speicherplatz aus. Eine LAA-App auf diesem System kann einen virtuellen Adressraum von bis zu 3 GB nutzen, und der Kernel-vas beträgt nur 1 GB. Es lohnt sich, darauf hinzuweisen, dass der Kernel-vas bei einem auf diese Weise gebooteten Betriebssystem nur 1 GB beträgt, selbst wenn Sie niemals eine LAA-App ausführen. Windows 7 32-Bit fügte jedoch "dynamische Zuordnung von Kernelspeicherplatz" hinzu, sodass der Adressraum des Kernels weitaus effizienter genutzt wird als früher. Und das Betriebssystem kann natürlich weiterhin den gesamten RAM verwalten. Jamie Hanrahan vor 10 Jahren 0
2
Mehrdad

The 32-bit Windows kernel can only address up to 2 GB of memory for itself.

Yes -- the kernel won't take more than the upper 2 GB from a program's 4 GB of virtual address space (or more than 1 GB, if you have the /3GB flag and the program is large-address aware). So each app is guaranteed the lower 2 GB of virtual memory (or 3 GB in the latter case).

With PAE, the kernel can use up to 64 GB of physical memory. But each program still has a 4 GB virtual address space. You can't get around this in any way other than by upgrading to a 64-bit system.

From what I can tell, even if applications aren't designed to work with PAE, one application can still use up to 2 GB before it hits its "limit", so in theory, I can have up to 3 applications using up 2 GB each (pretending Windows isn't taking up any memory, but just a theoretical scenario) and I'd still be fine since Windows is handling where in the memory space these applications are in.

Yup.

If an application needs more than 2 GB of physical memory, it must use AWE, but I seriously doubt that the game does this (it's not easy to program for it).

Um genau zu sein, muss AWE verwendet werden, wenn auf mehr physischen Speicher zugegriffen werden muss, als dies mit seinen 2 GB Adressraum möglich ist. (Wenn zum Beispiel eine 1 GB-Datei im Speicher zugeordnet ist, bleibt nur noch 1 GB Adressraum für die Zuordnung des physischen Speichers.) David Schwartz vor 12 Jahren 1