Task Structs
task_struct
进程主要由以下几部分组成:
- 代码段:编译后形成的一些指令
- 数据段:程序运行时需要的数据
- 只读数据段:常量
- 已初始化数据段:全局变量,静态变量
- 未初始化数据段(bss):未初始化的全局变量和静态变量
- 堆栈段:程序运行时动态分配的一些内存
- PCB:进程信息,状态标识等
Linux 内核中进程用 task_struct结构体表示,称为进程描述符,该结构体相对比较复杂,有几百行代码,记载着该进程相关的所有信息,比如进程地址空间,进程状态,打开的文件等。对内核而言,进程或者线程都称为任务 task。内核将所有进程放入一个双向循环链表结构的任务列表(task list)。
|
|
进程运行在内核态时,需要相应的堆栈信息, 则 linux kernel 为每个进程都提供一个内核栈 kernel stack.
详细版
|
|
thread_info
Linux 通过 slab 动态生成 task_struct,那么在栈顶或栈底创建新的结构体 thread_info 即可,其中 task 指向其真正的 task_struct结构体。
|
|
Reference
Linked Mentions
-
No backlinks found.