The 32-bit versions of Windows use a flat, 32-bit virtual address space, limiting the amount of virtual memory that can be addressed directly to 4 GB (232). By default, this 4 GB is divided into two equal buckets: 2 GB that can be addressed by a process, and 2 GB that is addressable by the operating system and shared across all processes. These buckets can be reconfigured to give 3 GB to an application by using the boot time /3GB switch, thus limiting the operating system to only 1 GB. This requires that an application be compiled to take advantage of the extra space. Squeezing the operating system into only 1 GB is a significant constraint, and this will not be an improvement for all workloads or programs.
It is possible to use additional physical memory in Windows Server 2003 by taking advantage of the Physical Address Extensions (PAEs) of current x86 processors. The use of PAE, however, imposes a significant overhead and requires programmers to use the Address Windows Extensions (AWE) application programming interface (API) to take advantage of the memory. Total physical memory available using PAE is 32 GB for Windows Server 2003, Enterprise Edition, and 64 GB for Windows Server 2003, Datacenter Edition. It is important to note, however, that even using PAE, the total virtual memory address space does not change. It is still limited to 4 GB.
As databases and applications have grown increasingly complex, and even ordinary users have literally gigabytes of digital media on their PCs and access to sophisticated digital content authoring tools, the limitation of 2 GB of virtual memory address space has become a major bottleneck. Using the /3GB switch can help for some scenarios, but it forces the Windows kernel to operate in only 1 GB of virtual address space. This space is shared by the system PTE, page pool, non-paged pool, and system cache. This can be a major limitation as disks get larger because it limits the address space available to the Cache Manager or for video-intensive applications.