新聞 > 科教 > 正文

到2038年 一個重大錯誤將揭示信息技術的脆弱性

2000年發生的故障並沒有導致令IT科學家們倍感擔憂的災難,但是,當前作業系統的時間信息儲存方式很可能會導致新的缺陷。

丹尼斯·德爾貝克在瑞士報紙Le Temps發表的一份報告中說,毫無疑問,每個人都會在2038年1月19日下午03:14:07陷入沉寂。

但是過了此日期和時間,計算機將因內存和文件很難正確表示時間或是長期以來的計算疏忽發生功能故障,即著名的「2000年問題(千年蟲)」中遇到的那樣。

錯誤或編程問題?

「這不是一個缺陷,而是一個編程問題,因為沒有人期望這些程序能夠持續數十年,」法蘭西學院的計算機科學家兼工程師傑拉德·貝里說。

電腦程式中的年份條目由2個數字而不是4個數字組成,以減少所使用的內存量。但是在2000年1月上旬,由於計算機沒有顯示整個年份的編程,年份從99年轉到00年時恢復為零,這一故障使世界面臨着史無前例的經濟災難風險。

糾正這個問題需要大量的人力和財力投資,例如,美國花費了大約1000億美元來預防和克服「2000年問題」。

具體日期

2000年首次出現該問題後,38年後可能會再次發生類似問題,但是規模很小,這次危機也與作業系統和軟件的時間信息儲存方式相關。

當前模式比上個世紀更準確,但這並不能消除發生此類問題的可能性。當前情況下,時間是指自特定日期(即1970年1月1日世界標準時間00:00:00)以來經過的秒數。

十進制整數的範圍有限,32位編碼似乎綽綽有餘。32位有符號整數存儲計算的秒數,加號表示特定時間之後的秒數,減號表示之前的秒數。

問題在於,32位編碼不足以容納2038年1月19日下午03:14:07之後的秒數,從而變成第-2147483648秒,因此世界可能目睹時光倒流回到1901年。

為避免此難題,只需將日期編碼為64位(這是當前計算機組件的標準),就可以將時鐘的過期日期延遲2920億年,大約是宇宙年齡的20倍。

為簡化「2038年問題」,假設有一個計數器,其中包含32個單元,每個單元顯示一個數字,該計數器已復位到1970年。從該日期起,計數器會自動遞增以計算秒數,但是在2038年,計數器將達到峰值,無法容納更多秒數,只有增加計數單位才能繼續工作,否則,它會清零並重新啟動,從1901年計時。

此錯誤已在最常見的作業系統(例如使用64個編解碼器的Unix,Linux、Windows和Mac OS)中得到糾正,但是在某些程序(例如Mysql數據庫)中,日期仍以32位編碼。

對於較早版本的作業系統以及難以更新的嵌入型系統的計算機而言,情況也是如此。

這意味着計算機處於不安全狀態。2019年1月1日,瑞士許多醫院的病房中呼叫按鈕管理系統發生故障,所有鈴鐺都被靜音。

該問題很快得到避免,正如2010年冬天美國iPhone4手機發生的情況一樣,警報響了一個小時。當年1月1日,一個錯誤導致超過2000萬張支付卡在德國被凍結數天。

2007年發生的另一起事件是時間變化導致8架F-22戰鬥機失去控制(路透)

失去控制

貝里警告說,不良的時間管理可能會帶來悲劇性的後果。1991年2月在達蘭,美國愛國者導彈未能攔截一枚伊拉克飛毛腿導彈,爆炸導致28名士兵死亡,98人受傷。愛國者導彈的時間管理發生了故障,飛機的計算機被迫每4小時重新啟動一次。

作者提到了2007年2月發生的另一起事件,當時,洛克希德·馬丁公司生產的8架F-22猛禽隱形戰機越過夏威夷以西的國際日期變更線,系統故障導致美國空軍失去了對它們的控制權。

貝里強調,隨着現代微處理器的使用,時間管理已經變得更加複雜,20或30年前很容易預測實現該程序需要多長時間,如今,許多調整是在晶片內部獨立進行的,因此這既困難又偉大。

責任編輯: 夏雨荷  來源:半島電視台 轉載請註明作者、出處並保持完整。

本文網址:https://hk.aboluowang.com/2021/0316/1568906.html