3 GB barrier
The 4 GB limit (also 4 GiB limit) is the maximum size of an address space (for example, the working memory ) that can be used with 32-bit wide addresses for byte-wise addressing, for example, by a process on a 32-bit operating system. Some 32 -bit architectures can provide a larger address space by means of segmentation techniques.
The problem occurs in particular in computer architectures that use for addressing data in memory 32-bit addresses (unsigned integer). Due to this limitation, it is the affected processors not possible to have more than 232 bytes, so 4 GiB to speak. This restriction applies to both the logical (virtual ) address space that appeals to the programs, as well as for the physical address space - the actually installed in the system memory. Even if the real amount of RAM installed on a computer is less than 4 GiB, the 4 GiB limit can have an impact on some programs, such as on applications that use large memory-mapped files.
3 GB barrier
Sometimes the problem is exacerbated even on a 3-GB barrier or even a 2 GB barrier.
Real address space
The usable range of the real address space can be further restricted by other influences of hardware (motherboard, I / O devices ~ in particular the amount of video RAM) and / or the operating system. Integrated computer architectures branch real address space for the display of system ROM and IO ranges from, eg onboard and expansion hardware such as graphics and sound card (shared memory / Unified Memory Architecture). In the x86 environment are usually available from 2.0 to 3.75 GiB RAM, the exact values depend on the motherboard and the expansion of internal expansion cards, or from the BIOS settings. Also, the usable range is sometimes not consistently available, but is between 2.0 and 4.0 GiB fragmented.
Virtual Address Space
In addition, under the usual 32 -bit operating systems, a single 32 -bit process no more than 2 GiB (Windows) or 3 GiB (Linux) virtual address space occupy, because the upper part of the 4 GiB address space is assigned permanently to the operating system and can not be allocated by application programs.
On 32- bit Windows operating systems, the fixed allocation of 2 GiB can be reduced to the operating system to 1 GiB ( / 3GB switch). To use this feature must also be enabled in the header of the application IMAGE_FILE_LARGE_ADDRESS_AWARE flag; then up to 3 GiB on 32- bit Windows, or 4 GiB virtual address space on a 64 -bit Windows are available with a 32- bit application.
4 GiByte limit does not exist, when a 64-bit system (operating system and application) is used. Here, the theoretical limit of the address space is 264 bytes, or 16 exabytes. Many processors, such as the AMD64 architecture, have more than 32 but less than 64 address lines and can therefore respond less than 16 exabytes of RAM. The physical address space is thus also much smaller. A problem of the widening of the addresses is that 64 -bit operating systems can only use 64 -bit kernel drivers, because in this case, the operating system kernel is implemented 64- bit mode and kernel drivers are running directly in the address space of the operating system kernel, the one mixture of 32 - and 64 -bit software does not allow in themselves. Apart from kernel drivers there under actual operating systems yet user-mode driver, which in principle are normal application software and then operate according to the operating system as a 32- bit version. For devices such as video cards, etc. Such drivers are currently not available. 64 -bit kernel drivers were rare after the introduction of these operating systems and are there for everyone today, special and rare hardware still. This issue is practically mainly proprietary software because manufacturers especially with inexpensive devices such as printers, scanners, etc. driver no longer than strictly necessary to maintain and usually have no interest to let others care for older drivers. Basically, however, free software to 64- bit must be adapted to function correctly, with a simple recompilation of the software, but it must not be done. Whether or software for 64-bit is not suitable, thus depends entirely on the software and not directly from their development model, free software only has the theoretical advantage that they could be easily adapted. Modern 64 -bit operating systems run applications that were compiled for 32- bit, usually continue from Windows systems for example by WOW64. Is available but depending on the application, only a maximum of 2 to 4 GiB of memory.
On 32- bit systems are available with PSE36 PAE and ways to exceed the 4 GiB limit ( the limit of 2 GiB or 4 GiB per process remains ). However, this processor upgrades increase only the physically addressable memory, each process can still only address 4 GiB data simultaneously. Under Microsoft Windows also exists the option of displaying a AWE -called interface physical memory pages beyond the 4 GiB limit in the logical address space of the process, so a 32 -bit process can address a total of more than 4 GiB. However, only some special versions of Windows 2000 and Windows Server 2003 allow the use of RAM beyond the 4 GiB limit on a 32 -bit system; the consumer operating systems Windows XP ( SP2 ), Windows Vista and Windows 7 allow this in their 32 -bit versions willed not to avoid incompatibilities with various drivers from other companies. For normal users of Windows therefore remains only the change to a 64 -bit version of the operating system as a problem solution.