什么是linux中的时序计算的参考

时间:2016-09-28 11:52:24

标签: c linux timer kernel

我想澄清一下linux中的计时器,它们是如何表现的? 我知道微控制器中的定时器/计数器我们使用参考,执行机器指令的时间。因此我们可以让它循环我们需要多长时间睡眠/定时器/计数器。

但是在linux中&如何使用睡眠(5),如果过了5秒,如果有任何人知道请告诉我。

1 个答案:

答案 0 :(得分:1)

每个操作系统内核(我所知道的)都有一个独立于计算机的计时器框架。这几乎是内核必须拥有的最重要的东西之一,因为我们需要定时器,进程调度,处理硬件错误,选择/轮询超时,网络协议等。在任何时候你的内核都有几十个,如果没有成千上万的计时器等待将来某个时刻被执行。他们中的大多数将被取消,从未被执行。

几乎每个人都使用的最简单的框架设置机器中的许多时钟之一,以设定的间隔生成中断。 100Hz是最常见的,Windows(至少在过去)将其设置为64Hz(但可以通过任何应用程序进行更改),某些系统使用1024Hz进行实验。定时器中断触发,中断处理程序检查当时是否排队等待,如果有,则执行。 Linux已经做了一些工作来改进这一点,以便我们可以获得比10ms更短或更长的间隔,具体取决于下一个计划的计时器,既可以提高计时器的精度并节省功率,但通常它的工作原理如上所述。

如果我正确地理解了你的问题,你会认为有一些东西可以衡量某些指令序列需要多少,然后循环直到经过一段时间。这几乎从来没有做过,因为它浪费了电力,它阻止了其他任何东西同时运行,也是非常不可靠的。它仍然在现代内核中完成,但很少,只有在与真正非常愚蠢的硬件交谈时才需要高精度。上次我不得不这样做是在17年前与一些以太网控制器交谈,你必须通过软件中的位冲击手动实现MII,这很糟糕并且每次你(非)时挂起系统很长一段时间插上以太网线。没有人建造需要它的硬件,因为它真的破坏了现代系统的性能。

所以在你的问题中,sleep(5)将通过在定时器框架中注册一个函数来实现,该函数将在5秒内被调用,然后将进程置于休眠状态。 5秒钟后计时器开火,进程再次被唤醒。