previous | start | next

Memory Layout of a Linux Process

For 32 bit Linux, the virtual memory layout of a process:

Kernel Virtual Memory Address Range: 0xc0000000 - 0xffffffff

Process Virtual Memory Address Range: 0x00000000 - 0xbfffffff

Process specific data structures
(Different for each process)
Physical memory
(Identical for each process)
0xc0000000 ___ Kernel code and data
(Identical for each process)
User stack
(Unmapped)
Memory mapped region
for shared libraries
brk ___ (Unmapped)
Run-time heap (via malloc)
Uninitalized data (.bss)
Initialized data (.data)
0x08048000__ Program text (.text)
0x00000000___ (Unmapped)

How can multiple process ALL exist with their program text, stack, etc. at the same virtual addresses?

 



previous | start | next