32-bit Windows Server address > 4GB RAM - How?

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.