2038年UNIX时间戳转换或对铁路造成严重影响

【字体:   

  【Yahoo日本网站2025年1月报道】“2038年问题”是指到了2038年1月19日,32位计算机程序的时间戳,可能误转换为1901年12月13日。这是因为UNIX时间戳的初始时刻,是从1970年1月1日0点0分0秒,以秒为单位开始计时。至2038年1月19日12点14分7秒,表示日期、时间的值就会进入二进制的第32位。但是,由于第32位是表示符号的位,所以从1970年1月1日0点0分0秒开始被识别为“负2的31次方秒(约21亿秒)”,也就是1901年12月13日20点45分52秒。

  “UNIX时间戳”被广泛用于嵌入式系统和控制系统的程序,不仅是表面的应用程序,还有中间件、OS、CPU等内部的系统也有进入的可能性。“2038年问题”有可能会对应用时间历程进行控制的程序产生影响。

  实际上,大约20年前的2004年1月11日,发生了关于2038年问题的纠纷。当时大型通信公司和SIer编制的程序发生了故障,造成大量的ATM停机。这是UNIX时间戳初始的1970年1月1日和UNIX时间戳迎来最大值的2038年1月19日的中间时刻,在通过“将两个时刻相加除以2”求出某个时刻的程序中,2004年1月11日以后,两个时刻的合计值进入了第32位。

  铁路等交通基础设施、能源设施、各种工厂使用了很多嵌入式、控制系统。如果社会基础设施一旦骤停,最坏的情况下,可能会造成生命和财产的重大损失。然而,准确判断哪些系统会受到何种程度的影响是相当困难的。铁路正在强势发展的自动驾驶系统,极容易受嵌入式程序的影响,类似2038年问题对系统的干扰非常敏感。

  为应对“2038年问题”最有效的方式是将32位系统更新到64位,64位UNIX时间戳的最大值是公历约3000亿年,可以半永久地表现时间。但这种方式并不简单,UNIX时间戳可能存在于系统的深层,在很多共享的程序源代码中已经埋下了“2038年问题”的隐患,溯源需要多少时间和预算及其他资源的投入,实在无法预估。此外,基础设施的使用寿命一般都在10年以上,有的甚至达到20年、30年,因此更容易受到影响。

  (来源:中国铁道科学研究院集团有限公司科学技术信息研究所)

附件:
回到顶部