Processes and Address Spaces |
All processes (e.g. application executables) running under 32 bit Windows gets virtual memory addresses (a Virtual Address Space) going from 0 to 4,294,967,295 (2*32-1 = 4 GB), no matter how much RAM is actually installed on the computer.
In the default Windows OS configuration, 2 GB of this virtual address space are designated for each process’ private use and the other 2 GB are shared between all processes and the operating system. Normally, applications (e.g. Notepad, Word, Excel, Acrobat Reader) use only a small fraction of the 2GB of private address space. The operating system only assigns RAM page frames to virtual memory pages that are in use.
Physical Address Extension (PAE) is the feature of the Intel 32 bit architecture that expands the physical memory (RAM) address to 36 bits (see KB articles 268363 and 261988). PAE does not change the size of the virtual address space, which remains at 4 GB, just the amount of actual RAM that can be addressed by the processor.
The translation between the 32 bit virtual memory address used by the code running in a process and the 36 bit RAM address is handled automatically and transparently by the computer hardware according to translation tables maintained by the operating system. Any virtual memory page (32 bit address) can be associated with any physical RAM page (36 bit address).
Here's a list of how much RAM the various Windows versions and editions support (as of Nov 2004):
Windows NT 4.0: 4 GB
Windows 2000 Professional: 4 GB
Windows 2000 Standard Server: 4 GB
Windows 2000 Advanced Server: 8GB
Windows 2000 Datacenter Server: 32GB
Windows XP Professional: 4 GB
Windows Server 2003 Web Edition: 2 GB
Windows Server 2003 Standard Edition: 4 GB
Windows Server 2003 Enterprise Edition: 32 GB
Windows Server 2003 Datacenter Edition: 64 GB
An expanded version of this article is available at http://members.shaw.ca/bsanders/Wind...ageFileEtc.htm
2.2. Address Spaces and Processes |
A process is essentially, the combination of:
* Some executable code
* A virtual address space
* One or more threads of execution.
The only way to increase the size of the virtual address space for a process beyond 4 GB is by using 64 bit hardware with an operating system and application built for that hardware.
The nub of it is, that no matter how much physical RAM is in the computer, the amount of memory available in the process’ private part of the virtual address space in 32 bit Windows implementations is limited to:
* 2 GB - without the /3GB switch - this is the normal, default maximum private virtual address space
* 3GB with the /3GB switch (also called Application Memory Tuning) AND the application modification mentioned in http://www.microsoft.com/whdc/system...AE/PAEmem.mspx (See 2.5 Application Memory Tuning - /3GB switch for additional information.)
any physical RAM not used by the OS and other applications by designing the application to use the AWE (Address Windowing Extensions) API. See 2.6 Address Windowing Extensions for additional information.
So... if I understand correctly, 4 GB of total system ram is addressable (as it would be in any 32 bit OS) but individual processes are limited to 2 GB (unless you tinker the system to get individual process limit up to 3 GB as alluded to above.)
Now, I think
if your app is well designed and needs huge amounts of memory it may well run as separate threads and processes, but I'm no bitslinger (though I do develop business apps... whole different can o' worms).
BTW... "majortom" -- my actual name is Tom Major and I can't tell you how irritating it is when all you fake Major Tom's show up instead of me when I search on my own name...
(Mind you, there ARE two much better known Tom Major's in the biz, one who played with Bo Diddley and the other who played with the Tonight Show band... so I decided a long time ago to go by my initials, "TK.")