内核存储进程哪里没有运行?

时间:2011-04-22 14:27:39

标签: linux process linux-kernel task

每个人我对Linux中的任务有一些疑问,我知道目前处于状态TASK_RUNNING的所有任务都是名为runqueue的数据结构,但是等待某些任务的任务呢? event(不是TASK_RUNNING的状态,例如等待键盘输入的状态)。我是否有其他数据结构用于此类任务或只有一般list of tasks?提前感谢任何解释

2 个答案:

答案 0 :(得分:2)

TASK_INTERRUPTIBLETASK_UNINTERRUPTIBLE状态的进程进一步细分为不同的类,每个类对应一个特定的事件。在此状态下,进程状态不提供足够的信息来快速检索进程描述符,因此使用另一个名为wait_queue的进程列表。 Wait_queue对事件实现有条件的等待。等待特定事件的进程被放置在适当的等待队列中。

等待队列实现为循环列表,其元素包括指向进程的指针 描述。等待队列列表的每个元素都是wait_queue类型:

struct wait_queue {  
    struct task_struct * task;  
    struct wait_queue * next;  
}; 

答案 1 :(得分:0)

等待队列用于使进程等待特定事件发生 - 例如等待键盘输入。

相关问题