计算机时钟是如何运行并且计算的

小时候,家里的墙上总是挂着一个大时钟。每过一段时间,我就要去手动调整一下,因为它不准了。那时候小,以为是指针向上走的时候比较难,向下走的时候有惯性,所以走着走着就有了偏差。

后来有电脑了,但是由于经常的高三,电脑就一直处于关机状态。当高考完想打开电脑打游戏的时候,发现它的时钟也不准了。当时觉得是因为长时间断电导致的。

后来我明白,钟表和计算机内部都有一个叫做「晶体振荡器」的东西,给它加上电压,它就会以固定的频率振动。但这个振动频率的「稳定性」,取决于它的制造工艺,以及外界环境的影响。虽然它们的误差很小,但日积月累下来,误差就越来越明显。

原来墙上的钟表不准是时间的杰作呀,原来那个电脑时钟不准真的是因为断电呀。。

[](()自动校准网络时间

现在的计算机都有自动校准网络时间的功能了,但是问题来了,这个网络时间?哪儿来的?可靠?可控?

为什么我电脑上的网络时间和你电脑上的网络时间会是一致的呢?

首先我们排除一下我们的电脑通过网络互通有无的可能性哈,网络都是有延迟的。

其实最早接触计算机时间的时候,我是这样想的:国际上有某个管理计算机时钟的组织,我们的每台电脑向该组织校准我们的时间,再通过一定的技术消除这个网络延迟。

看到我这句话学物理的朋友估计要冲出来揍我了:误差只能减少,不可能消除。

虽然我物理不咋地,但是这句话我还是有深刻印象的。

所以,我电脑上的时间,跟你电脑上的时间,肯定是不一样的,只不过这个差距可以通过技术手段使得它小的可怜。

我看的那篇回答中还介绍了时间是怎么来的,以及人类对时间认知的发展。这里我就不多说了,文末附上原文,感兴趣的朋友或者觉得我说的理论不通的朋友可自行查看。

[](()国际时间标准

现在,科学家制定出了两套时间标准:

1、世界时:基于天文现象 + 钟表计时,永远与地球自转时间相匹配。(如果对天文学有感兴趣的朋友会知道,地球的自转是越来越慢的,每年都要少那么几分钟。)

2、国际原子时:基于原子钟计时,每一秒的周期完全等长且固定(以铯原子跃迁 9192631770 个周期,所持续的时间长度定义为 1 秒!)

这个铯原子非常之稳定,计时上亿年误差不会超过一秒。

为了协调二者,出现了闰秒的概念。(这里主要是要说一声儿:虽然一个慢,一个稳,但是会通过人为手段使二者基本一致。我们的计算机使用的自然是原子时间了。)

同时,为了进一步降低原子钟的测量误差,每个国家会在每个月,统一上报自己计算的协调世界时到一个权威机构,然后这个权威机构会根据各国实验室的精度,进行加权计算,算出「最终」的协调世界时。

之后,再把这个最终的时间下发到各个国家,让各个国家进行对表校准,保证全世界的时间误差在 100 纳秒以内。

之后,中国会在自己算出的协调世界时的基础上,再加 8 个小时(中国在东八区),最终得出来的时间,就是「北京时间」!

[](()计算机如何同步时间?

通常来说,无线电波的传播速度更快、传播误差小,所以授时中心会通过 这种方式,把时间发送给全国各地的「时间服务器」。

时间服务器有了准确的时间后,再通过其它方式(例如网络)广播到下一层的终端用户使用。

现在知道我们的网络时间是这么来的了,就又回到开头的问题了:消除误差(啊呸,减少误差)。

数据在网络传输过程中,也是需要时间的,这个时间也会影响到时间的准确性。

于是人们想了一种方案,当计算机在做时间校准时,也需要把网络延迟计算进去,最后「修正」这个同步过来的时间,降低误差。

具体怎么做呢?空话谁都会说。

现在,已经有个软件已经把这一切都做好了。我们部署应用程序的服务器上,都会启动一个「自动校准」时间的服务,这个服务就是 NTP(Network Time Protocol),它可以保证每台机器的时间与时间服务器保持同步。

简单来讲,它是通过在网络报文上打「时间戳」的方式,然后配合计算网络延迟,从而修正本机的时间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值