4285ch01.fm Draft Document for Review May 4, 2007 11:35 am
12 Linux Performance and Tuning Guidelines
Figure 1-10 Linux kernel memory layout for 32-bit and 64-bit systems

Virtual memory addressing layout

Figure 1-11 shows the Linux virtual addressing layout for 32-bit and 64-bit architecture.
On 32-bit architectures, the maximum address space that single process can access is 4GB.
This is a restriction derived from 32-bit virtual addressing. In a standard implementation, the
virtual address space is divided into a 3GB user space and a 1GB kernel space. There is
some variants like 4G/4G addressing layout implementing.
On the other hand, on 64-bit architecture such as x86_64 and ia64, no such restriction exits.
Each single process can enjoy the vast and huge address space.
Figure 1-11 Virtual memory addressing layout for 32bit and 64-bit architecture

32-bit Architecture 64-bit Architecture

16MB
1GB
64GB
ZONE_NORMAL
ZONE_DMA
ZONE_HIGHMEM
“Reserved”
128MB
896MB
Pages in ZONE_HIGHMEM
must be mapped into
ZONE_NORMAL
1GB
64GB
ZONE_DMA
ZONE_NORMAL
~~
~~
Reserved for Kernel
data structures
32-bit Architecture64-bit Architecture
3GB
3G/1G kernel
User space Kernel space
0GB
User space Kernel space
0GB
4GB
512GB or more
x86_64