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