首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Windows 7中,时钟是如何工作的?

在Windows 7中,时钟是如何工作的?
EN

Stack Overflow用户
提问于 2015-03-20 08:36:49
回答 1查看 1.3K关注 0票数 12

我在某个地方读过这个答案,但我不太明白:

我知道Windows每增加一个curTimeIncrement (156001 100纳秒)的时钟值为curTimeAdjustment (156001 +- N)。但是,当使用GetSystemTime读取时钟时,例程是否在156001纳秒*100间隔内插值以产生所指示的精度?

有人能给我解释一下吗?

什么是curTimeIncrementcurTimeAdjustment,以及Windows如何做到这一点?

这对获得准确的时间有什么影响?

对于windows 7还是其他操作系统Win8、Linux等等,都是这样吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-20 10:44:02

它引用GetSystemTimeAdjustment()在Windows上返回的值。它告诉你如何调整时钟,以赶上或放慢速度,以适应实时。“真”是由美国NIST这样的机构保存的时间,他们有一个原子钟,其精确度远高于你机器中内置的时钟。

实时时钟(RTC)在您的机器有有限的准确性,一个副作用,使硬件负担得起,它往往是关闭几秒钟每月。因此,操作系统定期通过互联网联系时间服务器,time.windows.com是Windows上常见的选择。根据原子钟预言告诉它当前的实时情况。

RTC的不精确并不是唯一的漂移源,有时实时是故意改变的。增加一个闰秒,使时钟与地球真正的自转重新同步。目前的一天(24x60x60秒)太短了,地球的自转速度每世纪减慢约1.5毫秒,而且由于大风暴和地球地震,通常是不规则的。插入的闰秒弥补了这一点。最近一次是在今年6月30日世界协调时间23:59:60。60不是一个错误:)

之前的一次是在2012年6月30日。有点声名狼藉,插入的闰秒崩溃了许多Linux服务器。谷歌"Linux闰秒错误“,以了解更多有关它。

这通常是GetSystemTimeAdjustment()下面的机器试图避免的,立即用从时间服务器获得的值更改时间是非常危险的。软件通常有一个很难的假设,即时间在稳定的情况下前进,而在不稳定的时候却表现不佳,就像在时钟倒转时两次观察同一时间一样。或观察假时间,如23:59:60世界协调时,由于闰秒插入。

所以它没有,在时钟滴答声中断时,时钟每秒更新64次。换句话说,1/ 64 = 0.015625之间的滴答,156250纳秒*100单位。如果一个时钟调整需要做,那么它不只是增加156250,但稍微多或少。因此,慢慢地将时钟重新同步到真正的时间,并避免扰乱软件。

当然,这对绘制时钟的软件有一个不愉快的副作用。一个明显的方法是使用一个一秒计时器。但有时,这不是一秒,当时间调整正在进行时,情况就不会是这样。然后奈奎斯特的抽样定理开始发挥作用,有时计时器滴答根本不更新时钟或它跳过一秒钟。值得注意的是,这并不是很难保持绘制时钟准确的唯一原因,计时器通知本身也总是延迟。软件无法立即执行的副作用。事实上,这是更可能的麻烦来源,时钟调整只是锦上添花,更容易理解。

棘手的问题,奈奎斯特先生告诉我们,你必须更频繁地取样,以消除不受欢迎的混叠效应。因此,解决方法是将计时器设置为一个小间隔,比如15或31毫秒,这样的时间足够短,用户可以不再观察缺少的更新。

票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29162423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档