学号:077
转载请注明出处 + https://github.com/mengning/linuxkernel/
一、阅读理解task_struct数据结构
sched.h中task_struct的定义有几百行,其主要结构如下:
进程是程序执行时的一个实例,为了管理进程,内核必须对每个进程所做的事情进行描述,这些信息就保存在进程控制块PCB,在Linux中就是task_struct,其中包含进程状态,调度信息,通讯状况,父子兄弟的指针(也是task_struct),时间信息,标号,文件信息, 进程上下文和内核上下,处理器上下文和内存信息。
volatile long state; //进程的状态
unsigned long flags; //进程号
mm_segment_t addr_limit; //进程地址空间
volatile long need_resched;//调度标志
long nice; //进程的基本时间片
unsigned long policy;//进程的调度策略
struct mm_struct *mm; //进程内存管理信息
struct task_struct *next_task, *prev_task; //进程的双向循环链表
struct thread_struct thread;//进程的CPU状态