APNIC文摘 — 15年後就是Unix的世界末日?

本APNIC文摘原標題為15 years to the end of the world as Unix knows it,由George Michaelson撰文。

最近資深系統管理人員Rachel Kroll在個人部落格發表文章,說明Unix(包括Linux、BSD、OSX和其他使用POSIX標準的作業系統)設定到2038年可能會發生的問題。在這看似平凡無奇的一年,資深系統管理人員熟悉的舊有系統(legacy system)會因為Unix從1970年1月1日開始計算每毫秒的方式,出現大問題。

在2038的某個時間點,舊有系統的32位元計時法,會達到正整數的極限(亦即整數數值大到電腦無法接收),並開始出現莫名其妙的結果。以2038年來說,電腦可能會像Y2K一樣,突然重新從1970年1月1日開始計時。

但事實上這個現象並不會發生。

Rachel解釋,要發生像Y2K一樣數值大到電腦無法接收,導致出現亂數回應的現象,表示作業系統還在運行非常古老的32位元數字模型。如果有老舊的硬體設備還在跑完全沒調整過的程式碼,可能才會遭遇此狀況。

也就是說,對大部分的裝置,包括家用電話、搭載樹莓派(Rasberry Pi)的系統、智慧型電視和冰箱都是搭載64位元CPU,在2038年也不會遇到上面預想的問題。

還是有可能遇到另一個問題,就是系統的軟體模型是部分32、部分64位元。此特殊情況的Unix系統模型可能會碰到程式碼出錯,進而回傳不是0的值。0在Unix和C語言的很多功能中表示「有效」,非「0」則代表「異常狀況」。目前為止,現代系統最有可能發生的異常就是回傳非「0」值,但這不代表整個世界會突然一起回到1970年代。有些系統可能會回報錯誤。有些會回報錯誤後關機。有些可能只會默默關機。

然而,世界上無奇不有。也有可能在某個地方,有些系統是在極其老舊的硬體設施中運行,或是久未更新的老舊虛擬系統,使用古老的作業系統並仍活在32位元的年代。大部分一定規模的公司,多少都有「別去修沒壞掉的東西」的心態。套在技術系統上,就是「沒事別亂動舊有程式碼」,也因此衍生出「持續或跨大投資以改善運行中技術,有無價值或意義」及「技術債」(technical debt)等討論。

Rachel的部落格文章中,也利用現有資源,一個線上GNU C語言開放資源庫glibc進行測試,發現2038年的問題確實可能存在,還不能就此一笑置之。想當初,Y2K並沒有演變成大問題,也並不是因為「什麼事都沒發生」,而是人們預想到可能發生問題,並提前做好準備。Rachel發現的這個問題也將在未來幾年修正,他就指出,BSD作業系統(包括NetBSD和OpenBSD)都已經修正此問題。

本文內容純屬筆者個人意見,並不代表TWNIC立場

*台灣網路資訊中心(TWNIC)與亞太網路資訊中心(APNIC)合作,定期精選APNIC Blog文章翻譯摘要,提供中心部落格讀者了解目前亞太地區網路發展之最新趨勢。原文標題為15 years to the end of the world as Unix knows it

圖片來源: APNIC Blog

Scroll to Top