United States (change)
Shortcuts: Downloads Fedora Red Hat Network
Release found: Red Hat Enterprise Linux 3, 4 and 5 on PC (x86) hardware
How large is the virtual address space for a process, i.e. how much memory can a process address?
This depends on the capabilities of the CPU, the kernel running on the CPU, and how the application was compiled.
CPUs such as the Intel Pentium 4 and the AMD Athlon are 32-bit processors, will use 32-bit kernels, and will run applications that are compiled and linked for a 32-bit environment.
In contrast, most later processor models are capable of running 64-bit code (see What is the difference between 32-bit and 64-bit? and How can I find out if I have a 64-bit capable CPU?). This is often indicated as "AMD64", "EM64T", "x86-64" or even "x64". They can boot either 32-bit or 64-bit kernels, and, when using a 64-bit kernel, can execute both 32-bit and 64-bit applications.
In each of these cases, the virtual address space available to the executing application is different, as shown in the table below:
CPU Kernel Application Virtual Address Size
32 or 64 bit 32 bit (smp *) 32 bit slightly under 3GB
32 or 64 bit 32 bit (hugemem **) 32 bit slightly over 3.7GB
64 bit 64 bit 32 bit 4GB
64 bit 64 bit 64 bit more than 256GB
(*) An SMP-capable kernel. "kernel-smp" for Red Hat Enterprise Linux 3 and 4; for Red Hat Enterprise Linux 5, this functionality is included in the regular "kernel" package.
(**) The "hugemem" kernel is no longer provided in Red Hat Enterprise Linux 5. If a virtual address size of 3GB or larger is needed for a 32-bit process on Red Hat Enterprise Linux 5, the process must be run under a 64-bit kernel, i.e. on a 64-bit installation of Red Hat Enterprise Linux 5.
Note that shared libraries occupy the virtual address space of a running process, so the actual virtual address space available to the core application code itself will be lower than the values listed here.