文章目录
- 一、task_struct 结构体字段分析
- 1、comm 字段
- 2、进程优先级字段
- 3、cpus_ptr 字段
- 4、mm、active_mm 字段
- 5、 fs 字段
在 Linux 内核 中 , " 进程控制块 " 是通过 task_struct
结构体 进行描述的 ; Linux 内核中 , 所有 进程管理 相关算法逻辑 , 都是基于 task_struct
结构体的 ;
task_struct
" 进程描述符 " 结构体在 linux-5.6.18includelinuxsched.h
头文件中 第
~
行定义 ;
一、task_struct 结构体字段分析
1、comm 字段
comm
字段 , 用于存储 进程的名称 ;
/*
* 进程名称
* 可执行文件名,不包括路径。
*
* - 一般情况下在 setup_new_exec() 函数进行初始化
* - 调用 [gs]et_task_comm() 函数获取
* - lock it with task_lock()
*/
char comm[TASK_COMM_LEN];
2、进程优先级字段
prio , static_prio , normal_prio , rt_priority
字段 , 是 进程调度策略 中 , 与 优先级 相关的字段 ;
int prio;
int static_prio;
int normal_prio;
unsigned int rt_priority;
3、cpus_ptr 字段
cpus_ptr
字段是一个指针 , 指向 CPU 资源 , 表示 该进程 被允许在哪个 CPU 上运行 ;
const cpumask_t *cpus_ptr;
4、mm、active_mm 字段
mm
字段是一个指针 , 指针指向 mm_struct
结构体 , 这是 " 内存描述符 " , 与 tsak_struct
进程描述符性质相似 ;
对于 进程 来说 , active_mm
字段 与 mm
字段 指向同一个 " 内存描述符 " ;
但对于 " 内核线程 " 来说 , mm
字段 指向 空指针 , active_mm
字段 指向 从进程借用的 " 内存描述符 " ;
struct mm_struct *mm;
struct mm_struct *active_mm;
5、 fs 字段
fs
字段 , 指向 " 虚拟文件系统 ( VFS ) " , 主要是指向 " 根目录 " 和 " 当前工作目录 " ;
/* Filesystem information: */
struct fs_struct *fs;