Physical memory barrier for a process running on a 32-bit operating system
The 2 GB limit refers to a physical memory barrier for a process running on a 32-bit operating system, which can only use a maximum of 2 GB of memory.[1] The problem mainly affects 32-bit versions of operating systems like Microsoft Windows and Linux, although some variants of the latter can overcome this barrier.[2] It is also found in servers like FTP servers or embedded systems like Xbox.[3] The use of Physical Address Extension (PAE) can overcome this barrier by extending the addresses used to represent mappings between virtual and physical memory.
The limit is created by the 32-bit integer limit (2,147,483,647), which is the largest possible integer that can be represented by 32 binary digits. In a computer with a 32-bit architecture, the memory address stored in one of the CPU registers will be limited to this number, thus the number of possible memory locations that can be addressed is limited to exactly 2 gibibytes, or roughly 2GB.
While Linux, FreeBSD, and most Unix-like operating systems support PAE so long as the hardware does,[4][5] Windows needs this boot option enabled manually because many device drivers are incompatible with PAE. This is known as 4-gigabyte tuning (4GT), or the /3GB
switch. Once enabled, executables can have the "large address aware" flag set to increase their memory limit to 3 GB. 32-bit processes on 64-bit Windows are also limited to 2 GB. However, they can use the "large address aware" flag as well, except that it doesn't require the /3GB
switch and increases the limit to 4 GB.[6]
See also
References