您的位置:首页 > 其它

定时器精度

2016-02-21 19:22 281 查看

定时器精度

一个系统定时器通常允许调用者为一个定时器指定一个绝对时间或者是相对时间。例如,见KeWaitForSingleObject,KeSetTimer,或KeDelayExecutionThread。系统时钟的粒度限制了操作系统可以衡量超时时间的精度。

系统时间的更新基于每次系统时钟滴答,准确到最后一次时钟滴答。如果调用者指定的是一个绝对的超时时间,定时器超时在指定时间之后的时钟滴答处理中被检测到。因此,定时器可以在指定的绝对过期时间后的一个系统时钟周期内到期。

【机器翻译】

如果一个计时器间隔,或相对的到期时间,而不是指定,到期可以发生在一段时间比或一段时间后比指定的时间,这取决于在准确的开始和结束时间,这段时间间隔系统时钟滴答。不管是绝对的还是相对的时间,如果在其他设备的中断处理过程中,计时器过期可能无法检测到,直到稍后,如果系统时钟的中断处理被延迟处理。

如果调用者指定了一个相对的到期时间,定时器例程把当前系统时间加上指定的相对时间去计算用于定时器的绝对到期时间。忧郁系统时间是仅精确到最后一个系统时钟的滴答,精确的到期时间可能比调用者希望的到期时间早一些。如果一个指定的相对到期时间是接近于或者小于系统时钟,定时器可能直接到期,没有任何延迟。

一个使定时器更精确的方式是减少两次时钟滴答之间的时间,但是这样将更耗电。此外,减少系统的时钟周期可能无法可靠地实现一个更精细的系统时钟粒度,除非在该平台的其他设备的中断处理可以保证不延误系统时钟中断处理。

从Windows 8开始,KeDelayExecutionThread采用更精确的技术从调用者指定相对到期时间计算绝对过期时间。首先,为了获得当前系统时间的更精确的估计,该例程使用系统性能计数器来测量自上次系统时钟周期以来所经过的时间。下一步,该例程将该系统的时间增加到相对有效的时间来计算绝对的过期时间。通过这种方法计算的绝对过期时间精确到微秒。因此,定时器将不在指定的相对有效时间到期。该计时器还可以在比指定时间晚一个系统时钟周期内到期,甚至在系统时钟中断被中断处理为其他设备的中断处理之后可能会过期。

如果在计时器过期之前系统时间更改,则不影响计时器,但系统会调整每个绝对计时器。一个相对定时器到期指定数量的单位时间过去后,不管是绝对的系统时间。一个绝对定时器将在特定的系统时间过期,因此系统时间的变化将改变一个绝对定时器的等待时间。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: