时钟源与定时器的区别

linux内核完成两种定时测量:
1. 当前的时间和日期
2. 维持定时器,告诉用户某一时间间隔已经过去了。(会通知用户。定时器不可能用1中的方法去获取两个时间,然后相减这样实现,太耗性能了)

 

时钟源应该是一种像钟一样的东西,不停的以固定间隔滴答(比如接口time(),ftime(),gettimeofday()来获取当前的时间)
定时器可以编程设置间隔时间,然后出发中断信号(settimer()和alarm())

那么为什么不使用时钟源来做定时器呢?或是说是否可以改造时钟源来作为定时器呢?

实际上是可以的! RTC就是这样的一种设备,但是RTC精度太差。
然而问题来了,为什么不用TSC时钟源作为定时设备呢?
TSC实际上是每个时钟周期去改一下寄存器的值,可以通过RDTSC读取。 我们是否可以依次实现一个软件的定时器呢?

这不太可行,因为他只是个累加器,不知道什么时候发信号,如果你要让它发信号的话,必须跑一个小程序,那么太耗cpu了

因此!!! 我们需要一个硬件的定时器,不需要CPU管的家伙!

但是这么说,那么TSC还有什么鸟用? 而且我们是否可以通过改造TSC电路来硬件触发定时器信号呢?

其实目前使用的APIC跟TSC类似,它也是基于中线时钟信号的。比如每隔1,2,4,8,16,32,64或128个时钟信号就对定时器进行递减。

 TSC可以作为时钟源,用于记录时间,比如获取当前的时间。


HPET也是一种定时器,同时亦是时钟源

posted @ 2017-10-14 15:39  你的KPI完成了吗  阅读(1217)  评论(0)    收藏  举报