前言
对于计算机系统中的时间,如果你曾经思考过下面的问题,但是没有结论,那么通过本文将给你详细的解答:
- 闰秒是怎么产生的,在2012年6月30日UTC插入一个闰秒后,大量linux服务器宕机的原因是什么?
- 计算机系统是怎么保证自己的时间是准确的?
- 计算机系统我们经常使用微妙甚至纳秒,它怎么来提供这么高精度的时间?
- 计算机系统是没有时间概念的机器,那么它是怎么来计算与管理时间的?
背景
时间是一个非常抽象的问题,吸引着许多伟大的神学家、哲学家和物理学家花毕生精力去解释时间的本质是什么,然而依然没有定论。幸运的是我们只需要讨论计算机系统中的时间相关的问题,可以不用关心宇宙、黑洞、相对论和量子力学等等繁复的课题。但虽然仅仅局限在计算机这一个很小的范畴中,这看似已经不再复杂的主题,却并也不会如此简单。
计算机系统的时钟
在计算机系统中主要有两种时钟:一种是墙上时钟,一种是单调时钟。它们都可以衡量时间,但却有着本质的区别,下面我们一一来分析。
墙上时钟
墙上时钟又称为钟表时间,顾名思义,和我们平时使用的钟表的时间一样,表示形式为日期与时间。在linux系统中墙上时钟的表示形式为UTC时间,记录的是自公元1970年1月1日0时0分0秒以来的秒数和毫秒数(不含闰秒),linux系统需要处理闰秒的逻辑就是由于linux系统使用UTC时间,但是系统中记录的UTC时间是不含闰秒导致的,后面闰秒相关的部分会详细的介绍。