【Linux 内核 内存管理】虚拟地址空间布局架构 ⑤ ( Linux 内核中对 “ 虚拟地址空间 “ 的描述 | task_struct 结构体源码 )

2023-03-30 14:26:49 浏览数 (1)

文章目录

  • 一、Linux 内核中对 " 虚拟地址空间 " 的描述
  • 二、task_struct 结构体源码

一、Linux 内核中对 " 虚拟地址空间 " 的描述


进程 的 " 虚拟地址空间 " 由 mm_structvm_area_struct 两个数据结构描述 ;

  • mm_struct 是 “最高层次 " 上描述 ” 整个虚拟地址空间 “ 的结构体 ; 该结构是对 ” 整个 “ ” 用户空间 " 进行描述 ;
  • vm_area_struct 是 " 较高层次 " 上的描述 " 虚拟地址空间 " 的区间 的 ;

每个进程只有

1

mm_struct 结构体数据 , 用于描述 整个 " 虚拟地址空间 " ;

则 对应的 " 进程描述符 task_struct " 中 , 有

1

个指针指向 mm_struct 结构体 ;

task_struct -> mm_struct -> vm_area_struct ;

task_struct 结构体中 , 有指针指向 mm_struct 结构体 ,

mm_struct 结构体中 , 有指针指向 vm_area_struct 结构体 ;

二、task_struct 结构体源码


task_struct 进程描述符 结构体 , 定义在 Linux 内核源码的 linux-4.12includelinuxsched.h#483 位置 ;

task_struct 中的 mm active_mm 是 描述 " 整个虚拟空间 " mm_struct 类型的结构体 ;

代码语言:javascript复制
	struct mm_struct		*mm;
	struct mm_struct		*active_mm;

mm_struct 进程描述符 参考如下博客 :

  • 【Linux 内核】进程管理 task_struct 结构体 ① ( task_struct 结构体引入 | task_struct 代码示例 )
  • 【Linux 内核】进程管理 task_struct 结构体 ② ( state 字段 | stack 字段 | pid 字段 | tgid 字段 | pid_links 字段 )
  • 【Linux 内核】进程管理 task_struct 结构体 ③ ( real_parent 字段 | parent 字段 | group_leader 字段 | real_cred、cred字段 )
  • 【Linux 内核】进程管理 task_struct 结构体 ④ ( comm 字段 | 进程优先级字段 | cpus_ptr 字段 | mm、active_mm 字段 | fs 字段 )
  • 【Linux 内核】进程管理 task_struct 结构体 ⑤ ( files 字段 | nsproxy 字段 | 信号处理相关字段 | 信号量和共享内存相关字段 )

0 人点赞