Ein einzelner 32-Bit-Prozess unter einem 64-Bit-Betriebssystem ist auf 2 GB beschränkt. Wenn es jedoch zu einer EXE-Datei mit IMAGE_FILE_LARGE_ADDRESS_AWARE
gesetztem Bit kompiliert wird, hat es ein Limit von 4 GB, nicht von 2 GB - siehe https://msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx
Die Dinge, die Sie über spezielle Startflags, 3 GB, /3GB
Switches oder /userva
alles über 32-Bit-Betriebssysteme hören, gelten nicht für 64-Bit-Windows.
Weitere Informationen finden Sie unter https://msdn.microsoft.com/en-us/library/aa366778(v=vs.85).aspx .
Bei den 32-Bit-Betriebssystemen gibt es entgegen der Annahme keine physische Grenze von 4 GB für 32-Bit-Betriebssysteme. Beispielsweise können 32-Bit-Server-Betriebssysteme wie Microsoft Windows Server 2008 32-Bit auf bis zu 64 GB zugreifen(Windows Server 2008 Enterprise- und Datacenter-Editionen) - Mithilfe der Physical Address Extension (PAE), die zuerst von Intel im Pentium Pro und später von AMD im Athlon-Prozessor eingeführt wurde, wird eine Seitentabellenhierarchie mit drei Ebenen definiert. Mit Tabelleneinträgen von jeweils 64 Bit anstelle von 32 können diese CPUs direkt auf einen physischen Adressraum zugreifen, der größer als 4 Gigabyte ist. Theoretisch kann ein 32-Bit-Betriebssystem also theoretisch auf 2 ^ 64 Byte oder 17.179.869.184 Gigabyte zugreifen, das Segment jedoch begrenzt durch 4GB. Aus Marketinggründen hat Microsoft den maximal verfügbaren Speicher auf Nicht-Server-Betriebssystemen jedoch auf nur 4 GB oder sogar 3 GB effektiv beschränkt. Somit kann ein einzelner Prozess auf einem 32-Bit-Betriebssystem auf mehr als 4 GB zugreifen - und Microsoft SQL Server ist ein Beispiel.
32-Bit-Prozesse unter 64-Bit-Windows haben keinen Nachteil im Vergleich zu 64-Bit-Prozessen bei der Verwendung des virtuellen Adressraums des gemeinsam genutzten Kernels (auch als Systemraum bezeichnet ). Alle Prozesse, sei es 64-Bit oder 32-Bit, unter 64-Bit-Windows teilen sich den gleichen 64-Bit-Systemspeicher.
Angesichts der Tatsache, dass der Systemspeicher unter 32-Bit-Windows von allen Prozessen gemeinsam genutzt wird , belegen Prozesse, die eine große Anzahl von Handles erstellen (wie Threads, Semaphoren, Dateien usw.) , den Systemspeicherplatz von Kernelobjekten und können sogar keinen Speicher mehr haben wenn Sie insgesamt viel Speicher zur Verfügung haben. Im Gegensatz dazu ist der Kernelspeicher unter 64-Bit-Windows 64-Bit und nicht auf 4 GB beschränkt. Alle Systemaufrufe von 32-Bit-Anwendungen werden im Benutzermodus in native 64-Bit-Aufrufe konvertiert .