PAE-Vorteile für Thread-Programme in einem 32-Bit-Windows-System

1769
gjsmo

Wenn ein System mit mehr als 4 GB RAM und PAE (auf einer 64-Bit-CPU) aktiviert ist, kann eine 32-Bit-Thread-Anwendung insgesamt 4 GB oder 4 GB pro Thread verwenden?

Ich frage, weil ich DAW-Software (Digital Audio Workstation) verwende, die nur mit Windows XP 32-Bit kompatibel ist (7 oder XP x64 kann aufgrund fehlerhafter Treiber nicht verwendet werden) und meine DAW-Software (Sonar X1 Producer) ein Thread ist App. Ich habe vor, bald von 4 GB auf 12 GB zu aktualisieren, und ich würde gerne alles nutzen können (ich kann alles auf meiner Win7 x64-Installation verwenden). Da ich nur eine Anwendung ausführen werde, ist es meistens nur für die XP-Installation nützlich, wenn für jeden Thread 4 GB verwendet werden können, im Gegensatz zu der Anwendung, die 4 GB verwendet.

4

3 Antworten auf die Frage

2
David Schwartz

Der Prozess kann jedes einzelne Byte des physischen RAMs verwenden. Es gibt keine Begrenzung dafür, wie viel physischer RAM ein Prozess verwenden kann, solange das Betriebssystem auf diesen physischen RAM zugreifen kann.

Der gemeinsam genutzte Adressraum aller Threads im Prozess ist jedoch grundsätzlich auf weniger als 4 GB (und in der Praxis auf 2 GB oder 3 GB) beschränkt, da dies der maximal unterstützte Adressraum für einen 32-Bit-Prozess ist. 32-Bit-Prozesse verwenden 32-Bit-Zeiger und 2 ^ 32 = 4 GB. Alle Threads teilen ihren gesamten Adressraum, ansonsten könnten Sie keinen Zeiger von einem Thread zu einem anderen übergeben.

Diese Einschränkung gilt unabhängig von PAE und unabhängig davon, wie viel physischer Speicher Sie haben. Normalerweise beträgt der Adressraum 2 GB für 32-Bit-Prozesse. Sie können es mit dem /3GBSwitch auf 3 GB einstellen .

Dies hat wiederum nichts mit der Verwendung des physischen Speichers zu tun - jeder Prozess kann immer jedes einzelne Byte des physischen Speichers verwenden. Es ist streng eine Beschränkung des Adressraums. Mit PAE kann das Betriebssystem mehr physischen Speicher verwenden. Die Adressraumbeschränkung beeinflusst, wie Prozesse virtuellen Speicher verwenden.

Wie interessant ... Gibt es Gründe dafür, warum nur 2 oder 3 GB adressierbar sind, selbst in einem virtuellen Adressraum von 4 GB (ich denke, das ist der richtige Begriff ...)? Ich werde sicherlich das 3GB-Limit aktivieren. gjsmo vor 12 Jahren 0
Dies liegt daran, dass 32-Bit-Betriebssysteme zu einem Zeitpunkt entwickelt wurden, als 4 GB mehr waren, als man sich vorstellen könnte. Sie sollten also sowohl die Kernel-Ansicht als auch die Benutzerraumansicht im selben Adressraum platzieren, um den Kernelcode und insbesondere das Verschieben von Informationen zwischen Benutzerraum und Kernelraum zu optimieren. Standardmäßig ist ein Benutzer / Kernel-Split mit 2 GB / 2 GB vorhanden. David Schwartz vor 12 Jahren 1
Ich bin mir ziemlich sicher, dass es mehr mit der Seitentabelle zu tun hat als alles andere. Die 2/2-Aufteilung ist die Standardeinstellung, da nur wenige Programme gleichzeitig mehr als 2 GB Speicher benötigen. Und technisch gesehen kann ein x86-Betriebssystem mehr als 4 GB RAM von RAM adressieren. Es erfordert nur eine viel größere Seitentabelle. Beachten Sie, dass die x86-Version von Windows Server und Red Hat mehr als 4 GB RAM verwenden kann. surfasb vor 12 Jahren 0
@surfasb: Ihre Kernel konnten aufgrund von PAE auf mehr als 4 GB physischen RAM zugreifen. Das hat jedoch nichts mit der Frage zu tun, wie viel Adressraum ein Prozess haben kann. Die 2/2-Aufteilung und die Grenze für 32-Bit-Prozesse beziehen sich auf den Adressraum und nicht auf den physischen Arbeitsspeicher. (Diese beiden völlig unterschiedlichen Ausgaben sind * sehr * häufig verwirrt.) David Schwartz vor 12 Jahren 1
1
Chris Thompson

MSDN behandelt Physical Address Extension und andere Erweiterungen für große Speicheradressierung. Grundsätzlich kann jede 32-Bit-Anwendung nur ~ 2 GB Arbeitsspeicher abbilden (dies hängt von der jeweiligen Maschine ab). Während das Betriebssystem viel mehr Zugriff hat, ist jede einzelne Anwendung noch auf den 2-GB-Adressraum beschränkt. Hinweis: Das Limit von 2 GB gilt für jeden 32-Bit-Prozess, nicht für jeden Thread.

Windows XP Professional unterstützt einen 4GT-Modus (4-Gigabyte-Tuning), mit dem Anwendungen bis zu 3 GB Adressraum adressieren können. Dies kann mit dem Schalter / 3GB in der Datei boot.ini aktiviert werden.

Technisch gesehen sind 2 GB das Limit von ** zugeordnetem ** Speicher. Sie können jedoch bis zu 4 GB ansprechen. Es gilt auch ** nur für 32-Bit-Prozesse **. http://blogs.msdn.com/b/ericlippert/archive/2009/06/08/out-of-memory-does-not-refer-to-physical-memory.aspx. Ich habe Änderungen hinzugefügt. surfasb vor 12 Jahren 0
Hinzugefügt: Es zeigt nur, wie verwirrend der physische Speicher im Vergleich zum physischen Adressraum im Vergleich zum virtuellen Adressraum im Vergleich zum virtuellen Speicher geworden ist. surfasb vor 12 Jahren 0
0
steve b

Standardmäßig 32-Bit-Apps. kann auf 2 GB Adreßraum zugreifen, unabhängig davon, wie viel physischer RAM-Speicher oder welche 'Flags' (wie / 3G / PAE) gesetzt sind.

Apps. Wenn das Flag LARGEADDRESSAWARE im .exe-Header gesetzt ist, kann auf den gesamten Adressraum (Summe aller Threads) auf einem 32-Bit-System ein 3Gb-Speicherplatz (4 Gb) und auf einem 64-Bit-System 4 Gb zugreifen.