This is news to me. I was always under the impression that 32-bit OS could only address 2^32 i.e. 4GB of RAM. Period.
But what's this - http://www.crucial.com/uk/kb/answer.aspx?qid=3743&click=true ?
How is this possible? And does this still mean > 4GB per process? i.e. if I have IIS, can ASP.NET be allocated more than 4GB?
Edit: Thanks for the responses. To put this in context, this is for web development. So it looks like w3wp.exe (ASP.NET Worker Process) will still be limited to 4GB? Is this true?
Thanks Duncan
The MMU on some 32-bit processors can actually support more than 4GB of physical RAM, although a single process can only see 4GB at a time in its virtual address space. A CPU of this sort can be fitted with more than 4GB of RAM and can support multiple processes using more than 4GB of RAM in total. However, a single process can only use 4GB of RAM (minus some overhead from the operating system) at any given time.
On the Xeon this facility is known as Physical Address Extension (PAE) and some operating systems have APIs that allow a process to manipulate the MMU to swap physical memory in and out of the virtual address space of the process. On Windows this API is known as Address Windowing Extensions (AWE) but it is not available on all versions of Windows. Linux and other species of Unix support a similar mechanism.
In order to use this facility the program must be explicitly designed to support it - AWE does not automatically expand the virtual address space of the process. For example, certain versions of SQL Server support it, although I'm not aware of IIS doing so.
EDIT: Here we go. Found it. This posting on Stackoverflow links out to more detail on the mechanics of PAE.
Edit 2: If this forum posting is to be believed then IIS has no support for AWE.
Addressing more than 4GB on 32bit is possible with PAE. For process memory limit you can read Bruce Sanderson's General Windows Information; RAM, Virtual Memory, PageFile and all that stuff
For memory per-process, read sections 1.2 ("Address Spaces and Process") and 2.5 ("Application Memory Tuning - /3GB switch") at the General Windows Information link above.
Just to note it here for the record, the higher end versions of Windows 2003 (Enterprise and Data Center), do work with >4GB. I had an HP DL380 with 14GB of RAM and W2K3 EE saw all 14GB. VMWare Server was able to use more than 4GB. We replaced W2K3 with ESXi 3.5 U3 and it is able to use all 14GB.
From my reading, Microsoft tried enabling it on other versions of Windows (such as XP) and found that many drivers had problems when memory was >4GB. At least part of the problem was DMA (memory addresses to hardware would be truncated to 32bit and start corrupting memory). So there was an SP that got rid of PAE for most older versions of Windows to prevent stablility problems.