什么是hrtick_clear(rq);在linux调度程序?

时间:2015-05-02 06:42:22

标签: linux timer linux-kernel kernel scheduler

在__scheduler()函数中浏览linux内核代码时,我看到了hrtick_clear(rq)。 任何人都可以解释这是什么以及为什么使用它? 它似乎与计时器有关,但无法继续进行。

1 个答案:

答案 0 :(得分:4)

经典OS设计涉及系统计时器 - 以固定间隔打勾的实体。在每个tick期间,调用调度程序并且应该切换进程/线程。但系统定时器频率相当低(即1000 HZ,这意味着在1 ms内一次),如果进程只剩下其时间片的100us,则会获得额外的时间(在某些情况下),而其他进程则处于饥饿状态。

但是,现代CPU在英特尔上提供了更精确的硬件计时器,如HPET,由hrtimers子系统提供。可以通过CONFIG_SCHED_HRTICK选项启用它们以在调度程序中使用。

但是如果你已经调用__schedule()(即在系统调用的路径上),你不需要从 hrtimer 第二次调用它,因为你已经安排了,所以在这之前,hrtick_clear禁用 hrtimer