《计算机时间到底是怎么来的.docx》由会员分享,可在线阅读,更多相关《计算机时间到底是怎么来的.docx(23页珍藏版)》请在第一文库网上搜索。
1、计算机时间到底是怎么来的?程序员必看的时间知识!这篇文章我想和你聊一聊时间这个话题。时间总是在不经意间流逝,我们在写代码时,也经常会调用时间APIJ ,你有思考过这背后的原理吗?关于时间的问题还有很多,例如:为什么计算机的时间有时候走不准?计算机究竟是怎么自动校准时间的?我们经常看到的UTC时间,到底是什么?我们在新闻上看到的北京时间,真的来自北京吗?这篇文章,我们就来揭秘时间背后的秘密。这篇文章非常有意思,希望你可以耐心读完。时间为什么总是走“不准”?如何校准时间?之时间是怎么来的?.目录, 一秒到底有多长?,世界标准时间是怎么来的?计算机如何同步时间?时间为什么总是走“不准” ?你肯定遇到
2、过这样的场景,家里买了一个钟表,时间一长,就会发现它走得不准了。又或者,一台长时间不使用的电脑,它的时间也会发生偏差。遇到这些情况,你可能会不以为然。时间不准,那我们就人工调准它。但你有没有停下来想一想,为什么它们的时间会越走越不准呢?要回答这个问题其实不难,我们只需要搞清楚,它们的时间是怎么来的。钟表和计算机内部都有一个叫做晶体振荡器的东西,给它加上电压,它就会以固定的频率振动。但这个振动频率的稳定性,取决于它的制造工艺,以及外界环境的影响。出于成本的考虑,钟表的制作工艺没那么高,所以它更容易有误差。而电脑制造工艺虽然比较高,但它内部的晶体振荡器也会受到温度变化带来的影响,在工作过程中,也会
3、有产生误差。虽然它们的误差很小,但日积月累下来,误差就越来越明显。因此,我们现在使用的计算机,都有自动校准时间的功能。但是如何校准呢?如何校准时间?很简单,只耍你把电脑连上了网络,你会发现,它会自动与网络时间保持同步。可问题是,这个网络时间哪儿来的?我猜你大脑的第一反应是,每台电脑肯定配置了一个时间服务器,之后这台电脑会与服务器定时同步,自动校准。没错,确实是这样,不光是电脑,我们平时使用的手机、平板、智能手表等电子设备,只要能连接网络,都会自动同步网络时间。那继续追问,这个时间服务器的时间就一定是准的吗?理论来讲,它应该也是一台计算机,难道它不会遇到我们前面说的问题吗?此外,这个网络时间究竟
4、是怎么同步到我们的电脑上的?你可能会说,那肯定是通过网络数据包。问题又来了,网络传输数据也是有延迟的,同步服务器时间,不还是存在误差吗?环环相扣,像一个俄罗斯套娃,很难解释清楚。要想彻底搞清楚这些问题,就要深入到时间的源头来寻找答案。时间是怎么来的?时间是一个非常抽象的概念,多少年来,吸引着无数科学家、物理学家、甚至哲学家花费毕生精力去解释时间的本质是什么,从宇宙大爆炸到时空相对论,从黑洞到量子力学,都能看到关于时间这个问题的身影。这里我们不探讨高深莫测的学术知识,只把FI光放聚焦在计算机这个很小的范畴内。但要想清楚解释这个问题,也并非想的那么简单。我们从最简单的开始说起。想耍知道时间是怎么被
5、定义的,首先要知道天是怎么来的?答案是:观察太阳。由于地球的自转,人们可以看到日出日落,人们日出而作,日落而息,所以就把这一周期现象定义为天。地球除了自转,还在围绕太阳公转,所以公转一周就被定义为一年。从这些现象就能看出来,很早之前的人们,是以天文现象来确定时间的。再后来,人们为了把时间定义得更精确,就把一天平均划分为24等份,这就是时。同样地,把1小时划分60分钟,1分钟划分为601秒。这样,时间的基本单位一秒就被定义出来了。所以,秒与天的关系就是这样的:1 秒=1 / 24 * 60 * 60 = 1 / 86400 天。这些定义,都与地球自转和太阳息息相关。但是,后来人们发现,地球的公转
6、轨道并不是一个正圆,而是一个椭圆,也就是说公转速度是不均匀的,这意味着什么呢?这意味着每天的时间不是等长的,那根据天推算出的秒,自然也不是等长的。很明显,这里的计算存在误差。这怎么办?聪明的人们就想到,把一年内所有天的时长加起来,然后求平均,得到相对固定的天,然后再计算得出相对平均的秒,这样就减小了误差。确定了天文规律,人们开始制造钟表,把时间表示出来。从摆钟到机械钟,再到现代广泛使用的石英钟,钟表的制作工艺越来越高,时间精度也越来越高,现代石英钟每天的计时误差只有千分之一秒。所以,在1927年,人们以基于天文现象+钟表计时,确立了第一套时间标准:世界时(Universal Time,简称UT
7、)。但是,随着科技的发展,人类对太阳的观测越来越精准,有意思的事情发生了。人们发现,地球每天的自转速度也不是匀速的,地球的自转受到潮汐、地壳运动、冰川融化、地震等自然现象的影响,越来越慢!这会导致什么问题呢?这会导致之前规定的,每年平均下来一天的时间,现在来看,也是不一样长的。例如,第1年算出来平均一天的时间是23.9997小时,第2年可能是23.998小时,第3年可能是23.999小时.那按照1秒二1 / 86400天的定义,每一年的秒,也是不一样长的。这就比较尴尬了,人们以地球自转为依据,定义出来的时间,还是不准!你可能会想,时间有误差会有什么问题吗?人们依赖不准确的天文现象,不也生活了几
8、个世纪么?确实,对于人们的基本生活影响其实并不大。但随着人类活动的发展,人们对于高精度的时间场景开始变得越来越多。例如,体育赛事中百分之一秒的差距就能决定胜负,炮弹的发射要精确在千分之一秒内发生,雷达技术甚至需要精确到百万分之一秒.尤其是卫星发射、火箭试验等航天领域,对高精度的时间系统也提出了越来越高的要求!怎么办?怎么彻底解决时间不准的问题?聪明的科学家们开始思考,既然观测天文现象无法解决这个问题,那在微观层面能否找到比较好的解决方案吗?这时,他们开始把目光投向了微观世界。一秒到底有多长?让我们梳理一下我们的需求。一直以来,我们对于秒的定义需求,从本质上讲,就是想耍一个完全稳定的周期,也就是
9、说,期望每一秒都是固定等长的。而以天文观测、地球自转为基础的时间测量,做不到这一点。那在微观世界层面,是否存在一种元素,它的运动周期是高度稳定,不受外界环境影响的呢?科学家们沿着这个思路开始探索.好,现在让我们把视角下放,来到原子世界。一个原子虽然很小,但它内部却是一个很复杂的世界。每个原子都有一个原子核,核外分层排布着高速运转的电子,当原子受电磁辐射时,它的轨道电子可以从一个位置一跳到另一个位置,物理学上称此为跃迁。人们发现,原子内的电子发生跃迁时,原子会吸收或放出一定能量的电磁波,这类电磁波就是一种周期运动,我们也可以把它看成原子内部的振荡。基于这个原理,科学家们开始不断地试验、研究,尝试
10、寻找一种运动周期短、高度稳定的原子。终于,科学家们发现确实存在这样一种原子:艳原子,它内部的振荡周期比其它原子都要更短、更稳定,而且,这个过程基本不受环境因素的干扰。经过层层试验,科学家们认为这是目前人类在地球上可测量到的,运动周期最短、周期最稳定的元素!之后,科学家们就以之前定义的秒为基础,去测量一秒内这个葩原子内部电子周期运动的次数,测量出来的结果为9192631770次(91亿+次)。基于此,科学家们决定抛弃原来基于天文测量的秒,重新定义秒的时长,就是这个高度稳定的运动周期。因此,在1967年,国际度量衡大会决定采用,以锥原子跃迁9192631770个周期,所持续的时间长度定义为1秒!注
11、:这个测量原理和测量过程比较复杂,这里把这些物理细节简化了。不用太过纠结这个数值是怎么测量出来的,你只需要理解,这个微观原子内部的振荡周期是非常稳定的,它比之前根据天文现象测量出来的秒,要精确多得多。而基于这个钠原子振荡制造出来的时钟,我们就把它称之为原子钟。有了原子钟,这就意味着,原子钟输出的每一秒,都是绝对等长的,非常稳定,这样一来,就实现了精准计时!这个精确程度可以达到多高呢?2000万年不差1秒!可见其精准程度之高。科研技术还在发展,精密设备和测量能力也越来越高,最新的原子钟甚至可以达到1亿年不差1秒!有了原子钟,人们基于原子钟又确立了一套新的时间标准,叫做国际原子时(Internat
12、ional Atomic Time,简称 TAI)。科学家们规定,从1958-01-01 00:00:00起,用原子时开始计时,它每走的一秒,都是非常精确的一秒(固定等长),实打实的一秒,完全稳定的一秒。这个方案非常棒,至此终于解决了秒不固定长的问题。那有了这个国际原子时,可否让它直接取代掉前面说的一一以天文现象计时的世界时呢?答案是否定的,这个问题远比想象的复杂得多,这是为什么呢?世界标准时间是怎么来的?现在,科学家制定出了两套时间标准:1.2.世界时:基于天文现象+钟表计时,永远与地球自转时间相匹配国际原子时:基于原子钟计时,每一秒的周期完全等长且固定原子钟计时假设我们以国际原子时为时间标
13、准,那会发生什么现象呢?因为原子时非常稳定,但世界时随着地球自转变慢,会越来越慢,就会发生这种现象:原子时走得快,世界时走得慢,时间越久,两者差距越来越大口复一口,几百年后,世界时的正午12点是太阳高照的时刻,而原子时可能已经走到了下午2点了几千年后,太阳高照的时刻,原子时可能已经走到了晚上8点!晚上8点是太阳高照的时刻,你能想象这种情况吗?这太颠覆我们的生活认知了基于天文测算的世界时,已经指导我们人类生活了上千年,人类早已习惯了这种时间标准,直接被原子时取代,肯定是不能接受的。但我们又需要原子时这种高度稳定的计时标准,来发展科学研究,两者发生矛盾,这怎么办?科学家们又开始思考,终于想到一个互
14、相兼容的解决方案。既然两套时间标准都很重要,那两者都保留,不会互相取代。我们可以再建立一套一新的时间标准,这套时间以原子时为基准,开始计时,走的每一秒都是稳定、精确的。同时,为了兼顾基于天文测量的世界时,人类会持续观测世界时与这个新时钟的差距。如果发现两者相差过大时,我们就人为地调整一下这个时钟(加一秒或减一秒),让两者相差不超过0.9秒。例如,这个时钟本身比世界时走得快,经过一段时间后,如果发现两者相差越来越大,那就给这个时钟加一秒,让这个时钟在23:59:59的下一秒变为23:59:60秒,让它与世界时差距控制在0.9秒以内,这个操作过程,相当于让快的时钟稍微等一下走得慢的世界时。而加的这一秒,科学家把它定义为闰秒。是不是挺有意思?听说过闰年,没想到还有闰秒!当然,当地球自转速度变快时,这里也有可能是减一秒,即从23:59:58直接跳到00:00:00。但这种情况比较少,大部分情况下,地球自转速度是越来越慢的。这么做的好处在于,这个时钟的每一秒的计时依旧是精确的,而且还兼顾了日常生活使用的世界时,一举两得!由于这个时钟是基于原子时+世界时协调得出的,所以科学家们把它定义为协调世界时(Coordinated Universal Time,简称 UTC)。