内核程序通过进程表对进程进行管理,每个进程在进程表中占有一项。在Linux 系统中,进程表项是一个task_struct 任务结构指针。任务数据结构定义在头文件include/linux/sched.h 中。有些书上称其为进程控制块PCB(Process Control Block)或进程描述符PD(Processor Descriptor)。其中保存着用于控制和管理进程的所有信息。主要包括进程当前运行的状态信息、信号、进程号、父进程号、运行时间累计值、正在使用的文件和本任务的局部描述符以及任务状态段信息。该结构每个字段的具体含义如下所示
struct task_struct {
long state; //任务的运行状态(-1 不可运行,0 可运行(就绪),>0 已停止)
long counter; //任务运行时间计数(递减)(滴答数),运行时间片。
long priority; //运行优先数。任务开始运行时counter=priority,越大运行越长。
long signal; //信号。是位图,每个比特位代表一种信号,信号值=位偏移值+1。
struct sigaction ;