文章目录
- 一、task_struct 结构体字段分析
- 1、state 字段
- 2、stack 字段
- 3、pid字段
- 4、tgid 字段
- 5、pid_links 字段
在 Linux 内核 中 , " 进程控制块 " 是通过 task_struct
结构体 进行描述的 ; Linux 内核中 , 所有 进程管理 相关算法逻辑 , 都是基于 task_struct
结构体的 ;
task_struct
结构体在 linux-5.6.18includelinuxsched.h
头文件中 第
~
行定义 ;
一、task_struct 结构体字段分析
1、state 字段
state
字段表示 进程状态 ,
-1
时表示不可执行 ,0
表示可执行 ,>0
表示已经停止 ;
/* -1 unrunnable, 0 runnable, >0 stopped: */
volatile long state;
2、stack 字段
stack
是一个指针 , 指向 " 内核栈 " ;
void *stack;
3、pid字段
pid
表示该进程的 " 全局进程号 " ;
pid_t pid;
pid_t
是 int 类型的数据 ;
typedef int __kernel_pid_t;
#ifndef __kernel_pid_t
typedef int __kernel_pid_t;
#endif
4、tgid 字段
tgid
表示 " 全局线程组 " 标志 ;
pid_t tgid;
5、pid_links 字段
pid_links
字段 是一个 哈希表 , 其中存放的是 " 进程号 " , 是 " 进程组标识符 " 和 " 会话标识符 " ;
/* PID/PID hash table linkage. */
struct pid *thread_pid;
struct hlist_node pid_links[PIDTYPE_MAX];
struct list_head thread_group;
struct list_head thread_node;