免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1814 | 回复: 4
打印 上一主题 下一主题

[FreeBSD] 计算机处理闰秒 [复制链接]

论坛徽章:
13
15-16赛季CBA联赛之同曦
日期:2016-01-28 19:52:032015亚冠之北京国安
日期:2015-10-07 14:28:19NBA常规赛纪念章
日期:2015-05-04 22:32:03处女座
日期:2015-01-15 19:45:44卯兔
日期:2014-10-28 16:17:14白羊座
日期:2014-05-24 15:10:46寅虎
日期:2014-05-10 09:50:35白羊座
日期:2014-03-12 20:52:17午马
日期:2014-03-01 08:37:27射手座
日期:2014-02-19 19:26:54子鼠
日期:2013-11-30 09:03:56狮子座
日期:2013-09-08 08:37:52
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-07-05 17:00 |只看该作者 |倒序浏览
本帖最后由 ulovko 于 2012-07-05 17:00 编辑

2012年6月30日,时间会多出现一秒,也就是我们所说的闰秒。我不知道大家对闰秒的了解有多少,所以写下这篇文章。

背景知识

闰秒是在在UTC(中文“世界标准时间”或“世界协调时间”/英文“Coordinated Universal Time”/法文“Temps Universel Cordonné”)是基于Atomic Clock(原子时钟)的一种时间,向太阳时(Solar Time )对齐的一种方法,因为太阳时是根据地球公转来计算的。所以,1972年制定的UTC为了确保其时间相对于UTC的时间误差不能超过0.9秒,因此在过一段时间后需要加一秒。下图是有UTC以来闰秒的调整表(来自Wikipedia闰秒的中文词条

从上表中我们可以看到,从1972年到现在,在这四十年里已经进行过25次的闰秒调整。闰秒是在每年6月或12月的最后一天的最后一分钟进行跳秒或不跳秒。是否加入闰秒由位于巴黎的国际地球自转和参考坐标系统服务(IERS – International Earth Rotation and Reference Systems Service)决定。如果决定加入闰秒,那么这一秒是被加在第二天的00:00:00前的,也就是说,时间会出现23:59:60的情况,然后才是第二天的00:00:00。如果是负闰秒的话,23:59:58的下一秒就直接跳到第二天的00:00:00了。现在,所有闰秒都是正闰秒。

计算机处理闰秒

那么,对于我们的电脑系统来说,怎么处理这个闰秒呢?一般来说,我们需要为我们的电脑系统配置UTC时钟,并通过NTP (Network time protocol)来进行时间同步,NTP服务器会一级一级地下发闰秒事件通知直到最边缘的NTP服务器,然后NTP服务器就会把闰秒通知发给客户端的操作系统,由操作系统来处理闰秒通知。

虽然闰秒调整对普通民众的日常生活不会产生影响。不过,这个问题将影响部分开启ntp服务的Linux操作系统——会导致Linux内核Crash!Linux kernel是在2.6.18-164.e15之后的版本中解决了这个问题。换句话说,Linux kernel低于2.6.18-164的Linux系统,无论是什么公司的Linux都将受到影响。(今晚过后大家可以查看一下你的Linux系统日志,看看闰秒有没有发生)

可以参看下面的bug描述:

LKML: Chris Adams: Re: Bug: Status/Summary of slashdot leap-second crash on new years 2008-2009
Bug 479765 – Leap second message can hang the kernel
那么,我们的操作系统是怎么处理正闰秒通知的?通常来说有三种实现:

  • 后退一秒。
  • 停止一秒。
  • 真正的增加一秒。

懂编程的人一眼就能看出来,前两种方式是以一种Workaround或Hack的方式解决这个问题。第一种方式会导致一些基于timestamp的消息通知乱序了,而第二种会导致出现两个一模一样的timestamp。最后一种不会出现timestamp的问题。对了,你还记得以前那篇《你确信你了解时间吗?》的文章吗?

最后,说说Windows,Windows  Time Service不支持闰秒通知,所以,当闰秒发生的时候,你的Windows上的时间会比实际时间快一秒钟,这需要等下一次的时钟同步才会完成修正。你可以查看这篇文章:http://support.microsoft.com/kb/909614/en-us


FROM: http://coolshell.cn/articles/7804.html

论坛徽章:
0
2 [报告]
发表于 2012-07-07 20:19 |只看该作者
本帖最后由 hniu 于 2012-07-07 20:31 编辑

计算机不是专业计时装置,我的机器每周会差十几秒,都是靠ntp自动和授时中心联系调整。

润秒神马的,早就淹没在误差中了,对于普通计算机没有什么意义。



而且网络授时也是不精确严谨的授时方式,也只是大概应付日常应用罢了。
专业的授时都是无线电专用设备接受信号授时的,一般也没有那么必要和原子钟对得那么准。

论坛徽章:
0
3 [报告]
发表于 2012-07-07 22:08 |只看该作者
freebsd 好像没有听说有这个问题。

论坛徽章:
13
15-16赛季CBA联赛之同曦
日期:2016-01-28 19:52:032015亚冠之北京国安
日期:2015-10-07 14:28:19NBA常规赛纪念章
日期:2015-05-04 22:32:03处女座
日期:2015-01-15 19:45:44卯兔
日期:2014-10-28 16:17:14白羊座
日期:2014-05-24 15:10:46寅虎
日期:2014-05-10 09:50:35白羊座
日期:2014-03-12 20:52:17午马
日期:2014-03-01 08:37:27射手座
日期:2014-02-19 19:26:54子鼠
日期:2013-11-30 09:03:56狮子座
日期:2013-09-08 08:37:52
4 [报告]
发表于 2012-07-08 08:57 |只看该作者
@maochanglu 确实没有这种问题

论坛徽章:
0
5 [报告]
发表于 2012-07-09 21:41 |只看该作者
挺复杂的一个问题呃。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP