Cała przestrzeń adresowa procesu jest określona przez jego deskryptor pamięci będący strukturą wskazywaną przez pole mm deskryptora procesu.
Typ deskryptora pamięci:
struct mm_struct {
struct vm_area_struct * mmap, * mmap_avl, * mmap_cache;
pgd_t * pgd;
atomic_t mm_users, mm_count;
int map_count;
struct semaphore mmap_sem;
spinlock_t page_table_lock;
unsigned long context;
unsigned long start_code, end_code, start_data, end_data;
unsigned long start_brk, brk, start_stack;
unsigned long arg_start, arg_end, env_start, env_end;
unsigned long rss, total_vm, locked_vm;
unsigned long def_flags;
unsigned long cpu_vm_mask;
unsigned long swap_cnt;
unsigned long swap_address;
void * segments;
};
Aktualnie najważniejszymi polami deskryptora pamięci procesu są:
Do stworzenia nowego deskryptora pamięci sluży funkcja mm_alloc(), która alokuje nowy obiekt w pamięci podręcznej alokatora płytowego.