1

我一直在研究 linux 调度程序和任务调度的基础知识。set_tsk_need_resched() 允许重新安排任务。所以我有一个关于日程安排的问题。

在调度程序中调用 set_tsk_need_resched(next) 时的行为是什么?

这是否会在调度程序选择下一个任务并从 _schedule() 返回时强制再次调用调度程序?

4

1 回答 1

1

set_need_resched 函数除了在任务结构中设置一个 NEED_RESCHED 标志之外什么都不做,它告诉调度程序这个任务必须重新调度。因此,此任务将在调度程序调用的下一个实例中重新安排。这通常发生在任务执行上下文切换或从中断返回或系统调用返回(再次上下文切换)等或对 may_sleep() 的惰性调用时。需要重新调度标志通常是从计时器滴答处理程序中设置的,并且在一些特殊情况下。

于 2013-11-02T04:25:52.400 回答