Reply 840 of 856, by ElectroSoldier
- Rank
- Oldbie
spiroyster wrote on 2026-09-14, 18:57:Windows XP 32-bit limits processes to 2GB unless built with laa (Large Address Aware, which is a compiler flag), in which (as an app) you can access 3GB, no more. If you want/need more within a single process, you have to use file memory mapping, not RAM (which is kinda application version of using a swap file). Swapping, RAM mapping (address translation) etc is all handled by the OS since we have something called protected memory, and have done for a number of decades now.
The PAE was only really useful for server/enterprise grade since it allowed multiple processes (which used say 2GB), not allowing a single process to use > 2GB (3GB with laa), so irrelevant for 'devs' unless they were implementing multiple processes and handling inter-process communication themselves (but each process was still limited to 2GB... or 3GB with laa).
This limitation was lifted for 64-bit windows which are no longer limited to 2GB process (it is an internal OS limitation, you would have to ask MS why they chose this limit for 32-bit Windows).
Mostly correct, and the closest to reality Ive seen.
a normal 32 bit process gets 4Gb virtual address space because 32 bit pointers can address 2³² locations.
By default on 32 bit XP that 4Gb is split between 2Gb user space and 2Gb Kernel space.
So a normal app can only allocate roughly 2Gb.
The /3Gb switch can be used to make that split 3Gb user space 1Gb kernel space however the app also needs LLA support to use it otherwise Windows limits it to 2Gb.
/PAE is often misunderstood, it increases the amount of physical RAM the OS can manage. It does not make 32 bit pointers larger, a process still sees 2Gb normally and 3Gb with the /3Gb switch and LLA.
What /PAE really does is allow that "process" of RAM usage many times over, so app 1 gets 2Gb, app 2 gets 2Gb, app 3 gets 2Gb, app 4 gets 2Gb etc etc. Without /PAE the system is limited to "4Gb"
So the short version is /PAE increases how much RAM Windows can manage, not how much memory a single 32 bit process can directly address. The per process limit is fundamentally an address space issue, not a physical RAM issue.
But all of that doesnt really correct what you said, it irons it out.