I know that Windows XP 32-bit can be configured, through PAE, to support more than 3.5 GB of RAM. Is there a good tutorial to do this with Windows 7 32-bit?
As to why I don't simply use 64-bit Windows 7: The software for my Internet connection (cell phone-as-modem) will only work in 32-bit environments.
Best Answer
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.