我花了很多时间弄清楚代码级别的功能,现在我真的很困惑。
首先在 core.c 中,这个函数__schedule()
似乎schedule()
是最有前途的。通常在 中__schedule()
,我发现了hrtick_clear(rq)
似乎是计时器的代码。然后也在 中__schedule()
,将调用该函数,该函数next = pick_next_task(rq)
将尝试查找要安排的下一个任务。对于普通任务,使用 CFS 算法。然后我进入 fair.c 文件检查 pick_next_task_fair 函数。通过跟踪该函数,我看到hrtick_start(rq, delta)
已被调用。
所以显然似乎有一个基于hrtick的定时器用于周期性地激活调度算法。但奇怪的是,在core.c文件中,我实在找不到定时器是如何配置为周期性调用__schedule()
的。schedule()
我没有看到定时器被配置为调用这个函数。
是否使用了其他功能?linux任务调度高手能否给个提示:>