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

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 内核 内存管理虚拟地址空间布局架构 ⑤ ( Linux 内核中对 “ 虚拟地址空间 “ 的描述 | task_struct 结构体源码 )相关的知识,希望对你有一定的参考价值。

文章目录





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



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

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

每个进程只有 1 1 1mm_struct 结构体数据 , 用于描述 整个 " 虚拟地址空间 " ;

则 对应的 " 进程描述符 task_struct " 中 , 有 1 1 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.12\\include\\linux\\sched.h#483 位置 ;

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

	struct mm_struct		*mm;
	struct mm_struct		*active_mm;


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

以上是关于Linux 内核 内存管理虚拟地址空间布局架构 ⑤ ( Linux 内核中对 “ 虚拟地址空间 “ 的描述 | task_struct 结构体源码 )的主要内容,如果未能解决你的问题,请参考以下文章

Linux 内核 内存管理虚拟地址空间布局架构 ① ( 虚拟地址空间布局架构 | 用户虚拟地址空间划分 )

Linux 内核 内存管理虚拟地址空间布局架构 ⑦ ( Linux 内核地址空间布局简介 )

Linux 内核内存布局与堆管理

Linux 内核 内存管理虚拟地址空间布局架构 ⑥ ( mm_struct 结构体源码 | vm_area_struct 结构体源码 )

虚拟地址空间布局架构

Linux 内核 内存管理虚拟地址空间布局架构 ③ ( 内存描述符 mm_struct 结构体成员分析 | mmap | mm_rb | task_size | pgd | mm_users )