$linuxjunkies
>

address space

also: memory space, virtual address space, VAS

The range of memory addresses available to a process, including code, data, heap, and stack segments. Each process has its own isolated address space, typically managed by virtual memory.

Address space is the complete set of memory locations that a process can access. It includes the program's executable code, static data, dynamically allocated memory (heap), and the call stack. On modern Linux systems, each process has its own virtual address space, isolated from other processes by the kernel and Memory Management Unit (MMU).

Virtual address space allows processes to use addresses starting from 0 regardless of actual physical RAM location. For example, two different programs can both access memory address 0x08048000 without conflict—the kernel translates each virtual address to a different physical location. This isolation is crucial for system stability and security.

The layout typically follows: code segment (lowest), initialized data, uninitialized data, heap (growing upward), memory-mapped regions, and stack (growing downward). You can view a process's address space using /proc/[pid]/maps to see all mapped regions and their permissions.

Related terms