閱讀內容--如果頁面打開太慢,請按Ctrl+F5或者Ctrl+D刷新頁面!

千年蟲危機II?業界面臨Y2038新問題

[日期:2005-12-31] 來源:  作者: [字體: ]
推薦好站: 小女人網大家一定還記得上個世紀末給IT業界帶來不少麻煩的Y2K bug吧,很不幸的是,我們很快又將面臨另一個和時間有關的bug——Y2038問題。

專家警告說,Y2038 bug將于2038年1月19日(星期二)03:14:07am(GMT)正式爆發,屆時人們對千年蟲問題的預言可能將一一實現,比如手機網絡工作不正常,衛星脫離軌道,型號較老的電腦軟件軟硬件無法正常工作等。

什么是Y2038 bug

Time_t是C/C++ 等編程語言在內部代表/存儲日期和時間的一種數據類型。Time_t實際上是一個代表秒數的整數,當它的值為0時,代表的時間是1970年1月1日12:00:00;當Time_t=60時,則表示1970年1月1日12:01:00,依此類推。

所有32位電腦系統都用帶符號32位整型來存儲Time_t的值,也就是說Time_t只能用31位二進制數來表示(第一位用來表示正負號),而其最大值轉換為十進制是2147483647,換算成日期和時間剛好是2038年1月19日03:14:07am(GMT),而這一秒過后,Time_t的值將變成-2147483647,代表的是1901年12月13日8:45:52pm,這樣32位軟硬件系統的日期時間顯示就都亂套了。另外,無法接受Time_t為負值的其他功能也將返回錯誤。

舉個實際的例子來說,登陸上Yahoo messenger,給好友發個消息,恩沒問題,現在把系統時間更改為2038年1月19日03:14:07am,此時如果再發消息Yahoo messenger就將崩潰。

為何擔憂?

也許有人覺得2038年還早著,無需擔心這個問題。不幸的是,上世紀60年代的程序開發人員也抱有類似的錯誤想法,并由此導致了Y2K問題,給全球IT業帶來數十億美元的損失。

要知道時間對于許多電腦程序來說都非常重要,操作系統、數據庫程序、電子表格軟件、實時控制系統等無不涉及到時間。因此我們必須在Y2038 bug爆發前做好充足的準備。

盡管到2038年,桌面PC和服務器基本上都將升級到64位甚至128位,但仍會有許多使用中的32位甚至更古老的系統。即使是在32位系統盛行的今天,大多數嵌入式系統仍是8位或16位的,而小型嵌入式系統的數量其實比臺式機更多。

如何應對?

Y2038問題和Y2K一樣難纏,其中一種解決辦法就是用位數更多的數據類型來存儲日期和時間。如果使用64位數據類型,Time_t最大可以表示公元292000000000年,是宇宙估計年齡的20倍,最起碼看到這篇文章的各位都不會再遇到什么YXXXX問題了。

目前對于Y2038 bug的影響有多大還存在爭論,但有一點可以肯定的是:有備無患。相信我們能像克服Y2K問題那樣圓滿解決Y2038問題。
錄入:

“老男人”首頁看最新更新文章
【版權聲明】本站文章絕大部分轉載自網絡,版權歸原作者所有。
本文評論       全部評論
發表評論
  • 尊重網上道德,遵守中華人民共和國的各項有關法律法規;
  • “老男人”的讀者都是成熟人士,請保持理智和言辭風度;
  • 本站管理人員有權保留或刪除其管轄留言中的任意內容;
  • 本站有權在網站內轉載或引用您的評論;
  • 參與本評論即表明您已經閱讀并接受上述條款。

點評: 字數
姓名:
內容查詢