`task_struct` 中的 `on_rq` 字段的用途是什么?
What's the purpose of `on_rq` field in `task_struct`?
我正在阅读 Linux 内核的 try_to_wake_up()
函数的源代码。这个函数做了很多,包括这个:return p->on_rq == TASK_ON_RQ_QUEUED
.
那么,task_struct
中 on_rq
字段的实际用途是什么。
顺便说一句,有没有一些手册或阅读材料来介绍task_struct
中的所有领域?我认为充分理解这些字段将有助于阐明Linux的进程调度机制。
Linux 支持系统中每个 CPU 的单独 运行-queue。
任务或 task_struct 可能在 运行 队列中。还有task_struct
可以迁移 beatween cpu 的。
p->on_rq表示task_struct
正在两个 运行 队列之间迁移。
如果 p->on_rq == TASK_ON_RQ_MIGRATING 任务正在迁移并且
其他执行此任务的调度程序无法工作,应该忙等待。
设置为 TASK_ON_RQ_QUEUED.
后
我正在阅读 Linux 内核的 try_to_wake_up()
函数的源代码。这个函数做了很多,包括这个:return p->on_rq == TASK_ON_RQ_QUEUED
.
那么,task_struct
中 on_rq
字段的实际用途是什么。
顺便说一句,有没有一些手册或阅读材料来介绍task_struct
中的所有领域?我认为充分理解这些字段将有助于阐明Linux的进程调度机制。
Linux 支持系统中每个 CPU 的单独 运行-queue。 任务或 task_struct 可能在 运行 队列中。还有task_struct 可以迁移 beatween cpu 的。 p->on_rq表示task_struct 正在两个 运行 队列之间迁移。 如果 p->on_rq == TASK_ON_RQ_MIGRATING 任务正在迁移并且 其他执行此任务的调度程序无法工作,应该忙等待。 设置为 TASK_ON_RQ_QUEUED.
后