task_struct是Linux内核的一种数据结构,它用task_struct结构体来描述进程的信息。下面来剖析一下进程中保存的主要的信息有哪些?
struct task_struct {
//进程的运行时状态
volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */
void *stack;
atomic_t usage;
//进程当前的状态
/*
0x00000002表示进程正在被创建;
0x00000004表示进程正准备退出;
0x00000040 表示此进程被fork出,但是并没有执行exec;
0x00000400表示此进程由于其他进程发送相关信号而被杀死 。
*/
unsigned int flags; /* per process flags, defined below */
unsigned int ptrace;
int on_rq;
//表示此进程的运行优先级,prio表示动态优先级,根据static_prio和交互性奖罚算出,static_prio是进程的静态优先级,在进程创建时确定,范围从-20到19,越小优先级越高。
int prio, static_prio, normal_prio;
//进程的运行优先级
unsigned int rt_priority;
//list_head结构体
struct list_head tas