我正在阅读 Linux 内核的 try_to_wake_up()
函数的源代码。这个函数做了很多事情,包括:return p->on_rq == TASK_ON_RQ_QUEUED
。
那么,task_struct
中on_rq
字段的实际用途是什么。
顺便说一句,是否有一些手册或阅读 Material 来介绍task_struct
中的所有字段?我认为充分理解这些领域将有助于理清Linux的进程调度机制。
最佳答案
Linux 支持系统中每个 CPU 的独立运行队列。 Task 或 task_struct 可能在运行队列中。还有 task_struct 可以迁移 beatween cpu。 p->on_rq 表示task_struct 正在两个运行队列之间迁移。 如果 p->on_rq == TASK_ON_RQ_MIGRATING 任务正在迁移并且 其他执行此任务的调度程序无法工作,应该忙等待。 之后设置为 TASK_ON_RQ_QUEUED。
关于linux - `on_rq` 中 `task_struct` 字段的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31008738/