Windows – Does the /3GB switch increase the user address space per process or total processes

Architecturememorywindows

It was my understanding that it's per process, not the total processes. But according to Large memory support is available in Windows Server 2003 and in Windows 2000 (KB283037):

Typically, a process running under
Windows 2000 or Windows Server 2003
can access up to 2 GB of memory
address space (assuming the /3GB
switch was not used) with some of the
memory being physical memory and some
being virtual memory. The more
programs (and, therefore, more
processes) that run, the more memory
you commit up to the full 2 GB of
address space.

That to me says the more programs you run the more chance you will hit the 2GB address space limit i.e. Program A uses 500MB, Program B uses 1GB, so you've only got 500MB of address space for the rest of your programs.

However an MSDN article http://msdn.microsoft.com/en-us/library/ms189334.aspx refers to this as Process Address Space and to me implies that each application gets its own address space, be it 2GB or 3GB, depending what switch is being used in the boot.ini.

So is it per process or total process? And is the knowledge base article wrong (or badly worded)?

(Please note I'm talking about 32-bit systems only)

Best Answer

It's virtual address space per process, as per the MSDN article, and the superb series of articles on this written by Raymond Chen and archived at his blog.

Here is his index page for this series of articles - very well worth a read if you're dealing with large memory support as a senior system admin or a developer.