2038年UNIX時間戳轉(zhuǎn)換或?qū)﹁F路造成嚴(yán)重影響
【Yahoo日本網(wǎng)站2025年1月報道】“2038年問題”是指到了2038年1月19日,32位計算機程序的時間戳,可能誤轉(zhuǎn)換為1901年12月13日。這是因為UNIX時間戳的初始時刻,是從1970年1月1日0點0分0秒,以秒為單位開始計時。至2038年1月19日12點14分7秒,表示日期、時間的值就會進入二進制的第32位。但是,由于第32位是表示符號的位,所以從1970年1月1日0點0分0秒開始被識別為“負(fù)2的31次方秒(約21億秒)”,也就是1901年12月13日20點45分52秒。
“UNIX時間戳”被廣泛用于嵌入式系統(tǒng)和控制系統(tǒng)的程序,不僅是表面的應(yīng)用程序,還有中間件、OS、CPU等內(nèi)部的系統(tǒng)也有進入的可能性。“2038年問題”有可能會對應(yīng)用時間歷程進行控制的程序產(chǎn)生影響。
實際上,大約20年前的2004年1月11日,發(fā)生了關(guān)于2038年問題的糾紛。當(dāng)時大型通信公司和SIer編制的程序發(fā)生了故障,造成大量的ATM停機。這是UNIX時間戳初始的1970年1月1日和UNIX時間戳迎來最大值的2038年1月19日的中間時刻,在通過“將兩個時刻相加除以2”求出某個時刻的程序中,2004年1月11日以后,兩個時刻的合計值進入了第32位。
鐵路等交通基礎(chǔ)設(shè)施、能源設(shè)施、各種工廠使用了很多嵌入式、控制系統(tǒng)。如果社會基礎(chǔ)設(shè)施一旦驟停,最壞的情況下,可能會造成生命和財產(chǎn)的重大損失。然而,準(zhǔn)確判斷哪些系統(tǒng)會受到何種程度的影響是相當(dāng)困難的。鐵路正在強勢發(fā)展的自動駕駛系統(tǒng),極容易受嵌入式程序的影響,類似2038年問題對系統(tǒng)的干擾非常敏感。
為應(yīng)對“2038年問題”最有效的方式是將32位系統(tǒng)更新到64位,64位UNIX時間戳的最大值是公歷約3000億年,可以半永久地表現(xiàn)時間。但這種方式并不簡單,UNIX時間戳可能存在于系統(tǒng)的深層,在很多共享的程序源代碼中已經(jīng)埋下了“2038年問題”的隱患,溯源需要多少時間和預(yù)算及其他資源的投入,實在無法預(yù)估。此外,基礎(chǔ)設(shè)施的使用壽命一般都在10年以上,有的甚至達(dá)到20年、30年,因此更容易受到影響。
(來源:中國鐵道科學(xué)研究院集團有限公司科學(xué)技術(shù)信息研究所)

附件: