lik*_*eIT 6 linux process task linux-kernel
每个人我都对Linux中的任务有一些疑问,我知道目前处于状态的所有任务都是TASK_RUNNING数据结构调用runqueue,但是等待某些事件的任务(不是TASK_RUNNING的状态,例如是等待键盘的输入).我是否有其他数据结构用于此类任务或仅具有一般性list of tasks?提前感谢任何解释
处于TASK_INTERRUPTIBLE或TASK_UNINTERRUPTIBLE状态的进程进一步细分为不同的类,每个类对应于一个特定的事件。在这种状态下,进程状态没有提供足够的信息来快速检索进程描述符,因此wait_queue使用另一个被调用的进程列表。Wait_queue 实现事件的条件等待。等待特定事件的进程被放置在适当的等待队列中。
等待队列被实现为循环列表,其元素包括指向进程描述符的指针。等待队列列表的每个元素都是 wait_queue 类型:
struct wait_queue {
struct task_struct * task;
struct wait_queue * next;
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
313 次 |
| 最近记录: |