我现在正在阅读Linux内核try_to_wake_up()
函数的源代码。这个功能做了很多,包括:return p->on_rq == TASK_ON_RQ_QUEUED
。
那么,on_rq
中task_struct
字段的实际目的是什么。
task_struct
中的所有字段?我认为完全理解这些领域将有助于澄清Linux进程调度的机制。
答案 0 :(得分:1)
Linux支持系统中每个CPU的独立运行队列。 任务或task_struct可以在运行队列中。还有task_struct 可以在cpu之间迁移。 p-> on_rq表示task_struct 正处于两个运行队列之间迁移的过程中。 如果p-> on_rq == TASK_ON_RQ_MIGRATING任务正在迁移, 其他sheduler用这个任务无法工作它应该忙等。 设置为TASK_ON_RQ_QUEUED后。