进程 的 " 虚拟地址空间 " 由 mm_struct
和 vm_area_struct
两个数据结构描述 ;
mm_struct
是 “最高层次 " 上描述 ” 整个虚拟地址空间 “ 的结构体 ; 该结构是对 ” 整个 “ ” 用户空间 " 进行描述 ;vm_area_struct
是 " 较高层次 " 上的描述 " 虚拟地址空间 " 的区间 的 ;每个进程只有
个 mm_struct
结构体数据 , 用于描述 整个 " 虚拟地址空间 " ;
则 对应的 " 进程描述符 task_struct " 中 , 有
个指针指向 mm_struct
结构体 ;
task_struct
-> mm_struct
-> vm_area_struct
;
task_struct
结构体中 , 有指针指向 mm_struct
结构体 ,
mm_struct
结构体中 , 有指针指向 vm_area_struct
结构体 ;
task_struct
进程描述符 结构体 , 定义在 Linux 内核源码的 linux-4.12\include\linux\sched.h#483 位置 ;
task_struct
中的 mm
active_mm
是 描述 " 整个虚拟空间 " mm_struct
类型的结构体 ;
struct mm_struct *mm;
struct mm_struct *active_mm;
mm_struct
进程描述符 参考如下博客 :