How can I enable PAE on Windows 7 (32-bit) to support more than 3.5 GB of RAM?
A few years ago, a group of programmers have released a kernel patch for Windows 7 to allow the usage of more than 4 GB of RAM under Windows 7. Recently, due to some virus scanners detecting the patch as a false positive, the download was removed from the website. Fortunately, I have saved a copy of the patch (which uses the RTM Windows 7 kernel), and uploaded it to my website here (see option #1 when I discuss the two methods to patch your Windows kernel). Furthermore, the authors have posted instructions on how to patch your kernel manually.
Even if you have Windows 7 SP1 (Build 7601), you can install the patch which contains kernel 7600. This is because your default kernel is not modified; a new one is copied to your system folder, and an additional boot menu option is added to boot Windows with the new, patched kernel instead of the older one. While I haven't found any problems running Windows 7 SP1 with the older kernel, if you do wish to use build 7601 of ntkrnlpa.exe
, you need to manually patch your kernel (see the link above).
The patch basically modifies the Windows 7 Kernel to be more like the Windows Server 2003 Datacenter Edition, which is compatible with up to 8 GB of RAM under 32-bit mode. This allows you to extend the PAE well into 8 GB of RAM under Windows 7 32-bit. For more information about why Microsoft implemented this technical limitation, see Licensed Memory in 32-Bit Windows Vista (requires JavaScript to be allowed from www.geoffchappell.com).
As mentioned above, note that individual processes will still be limited to 4 GB even if the system can access more... Although if you had 8 GB of RAM, then at least you'd still have another 4 GB for other processes ;)
For those interested in the technical aspects, this happens because of memory-mapped input/output (MMIO for short). This allows a CPU to access both peripherals and RAM through the address bus itself. Usually this is done though the higher-order memory addresses to avoid lower-order address conflicts. However, this gave rise to the commonly known 3 GB Memory Barrier in all consumer variants of 32-bit Windows operating systems.
This article at Microsoft's MSDN site shows the memory limits for versions of Windows and Windows 7 32-bit is listed as a 4 GB limit.
You used to be able to use PAE to see more than 4 GB of RAM with Windows XP but this option was disabled in Service Pack 2.
The reason was that most drivers weren't PAE aware and threw their toys out of their pram if they ended up in memory above the 4 GB boundary.
If you use the /PAE
switch now on Windows XP you'll make DEP available, but you won't be able to see more than 4 GB of RAM.
This 4 GB limit is still in place for Windows 7 32-bit. If you want to see more than 4 GB of RAM you will have to use a 64-bit version of Windows.
(This option to use PAE to see more than 4 GB of RAM is still available on 32-bit Server versions of Windows which I assume is down to a better quality of drivers expected for the kind of hardware you'd run Windows Server on.)