您的位置:首页 > 其它

调研task_struct结构体, 理解结构体中的各个字段的含义.

2018-02-19 14:18 363 查看

task-stuct是什么

1.Linux内核通过一个被称为进程描述符的task_struct结构体来管理进程,这个结构体包含了一个进程所需的所有信息。 它定义在linux-2.6.38.8/include/linux/sched.h文件中

task_struct都可能包含哪些成员信息?

1.进程状态,记录进程在等待,运行,或死锁

2.调度信息,由哪个调度函数调度,怎样调度等

3.进程的通讯状态

4.因为要插入进程树,必须有联系父子兄弟的指针,当然是tast_struct型

5.时间信息,比如计算好执行的时间 以便cpu分配

6.标号,决定进程归属

7.可以读写打开的一些文件信息

8.进程上下文和内核上下文

9.处理器上下文

10.内存信息

因为每一个PCB都是这样的,只有这些结构,才能满足一个进程的所有要求,它定义在linux2.6.38.8/include/linux/sched.h文件中。

1.进程状态:

volatile long state;
int exit_state;


2.state成员的可能取值如下:

#define TASK_RUNNING 0
#define TASK_INTERRUPTIBLE 1
#define TASK_UNINTERRUPTIBLE 2
#define __TASK_STOPPED 4
#define __TASK_TRACED 8
/* in tsk->exit_state */
#define EXIT_ZOMBIE 16
#define EXIT_DEAD 32
/* in tsk->state again */
#define TASK_DEAD 64
#define TASK_WAKEKILL 128
#define TASK_WAKING 256

系统中的每个进程都必然处于以上所列进程状态中的一种。

对上述信息进行简要描述:

TASK_RUNNING表示进程要么正在执行,要么正要准备执行。

TASK_INTERRUPTIBLE表示进程被阻塞(睡眠),直到某个条件变为真。条件一旦达成,进程的状态就被设置为TASK_RUNNING。

TASK_UNINTERRUPTIBLE的意义与TASK_INTERRUPTIBLE类似,除了不能通过接受一个信号来唤醒以外。

__TASK_STOPPED表示进程被停止执行。

__TASK_TRACED表示进程被debugger等进程监视。

EXIT_ZOMBIE表示进程的执行被终止,但是其父进程还没有使用wait()等系统调用来获知它的终止信息。

EXIT_DEAD表示进程的最终状态。

EXIT_ZOMBIE和EXIT_DEAD也可以存放在exit_state成员中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struct 内核