闰秒的介绍可以参考* https://zh.wikipedia.org/wiki/闰秒
linux处理闰秒
Linux使用UTC时钟,并通过NTP (Network time protocol)来进行时间同步,NTP服务器会一级一级地下发闰秒事件通知直到最边缘的NTP服务器,然后NTP就会把闰秒通知给客户端的操作系统,由操作系统来处理闰秒通知。
闰秒会影响部分开启ntp服务的Linux操作系统——会导致Linux内核Crash!Linux kernel在2.6.18-164.e15之后的版本中解决了这个问题。
我们的操作系统是怎么处理正闰秒通知的?通常来说有三种实现:
- 后退一秒。
- 停止一秒。
- 真正的增加一秒。
前两种方式是以一种Workaround或Hack的方式解决这个问题。第一种方式会导致一些基于timestamp的消息通知乱序了,而第二种会导致出现两个一模一样的timestamp。最后一种不会出现timestamp的问题。