UNIX epoch -- 为什么UNIX的时间起始于1970.01.01

起初逛小米论坛有人问为什么系统的起始时间是1970年,大多数人都给出了个奇葩的解答,当然也看到了一个比较靠谱的解答。对于这个1970年网上有个正常人都能看出错误的解答,还有人说很科学。。。于是我无聊的做起操作系统考古工作,好吧,只是使用搜索引擎查下资料。

1. 错误的说法

“最初计算机操作系统是32位,而时间也是用32位表示。32位能表示的最大值是2147483647。另外1年365天的总秒数是31536000,2147483647/31536000 = 68.1,也就是说32位能表示的最长时间是68年,而实际上到2038年01月19日03时14分07秒,便会到达最大时间,过了这个时间点,所有32位操作系统时间便会变为10000000 00000000 00000000 00000000,也就是1901年12月13日20时45分52秒,这样便会出现时间回归的现象,很多软件便会运行异常了。” -- http://www.cnblogs.com/haitao-fan/archive/2013/01/09/2853740.html 

这只是随便搜索到的一个说法,而且这个说法还被别人支持了,而且这个作者还说很科学。

真不知道科学在哪里,第一句最初的系统是32位就已经大错特错了。而且这个答案根本就是驴唇不对马嘴,讲了这么多32位,也没有说清楚为什么32位就要选择1970年。所以这个从第一句就开始错到底的“答案”居然还被各种引用。。。

Unix起初是由肯汤普森在PDP-7上使用汇编实现的,根据维基百科(https://en.wikipedia.org/wiki/PDP-7)PDP-7是18位的,后来使用c语言实现并移植到PDP-11,维基百科(https://en.wikipedia.org/wiki/PDP-11)PDP-11是16位的,所以这至少可以说明起初unix的1970与32位没有毛关系。

2. 可能的正确解答

https://unix.stackexchange.com/questions/26205/why-does-unix-time-start-at-1970-01-01 在这里的解答中,关于32位的被标为-2,另外的解释比较靠谱。

“It explains that the early Unix engineers picked that date arbitrarily, because they needed to set a uniform date for the start of time, and New Year's Day, 1970, seemed most convenient”

更详细的说明请移步(https://www.wired.com/2001/09/unix-tick-tocks-to-a-billion/)

看上去就是为了方便。

3. 结论:

现代操作系统大多受到UNIX的影响所以采用了1970,而Unix更多的是方便(New Year's Day, 1970, seemed most convenient),这与系统的位数没有什么直接关系。

 

 

转载于:https://my.oschina.net/nemesis/blog/1583737

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值