我一直在关注linux调度程序和任务调度的基础知识。 set_tsk_need_resched()允许重新安排任务。所以我有一个关于调度的问题。
在调度程序中调用set_tsk_need_resched(next)时的行为是什么?
这是否会在调度程序选择下一个任务并从_schedule()返回后立即再次调用调度程序?
答案 0 :(得分:1)
set_need_resched函数除了在任务结构中设置NEED_RESCHED标志外,它不会告诉调度程序必须重新调度此任务。因此,此任务将在调度程序调用的下一个实例上重新安排。这通常发生在任务执行上下文切换或从中断或系统调用返回(再次上下文切换)等或对惰性调用might_sleep()时。需要重新标记的标志通常是从计时器标记处理程序和一些特殊情况设置的。