什麽是千年蟲 ?
千年蟲會發生在哪些地方?要回答這個問題,需要先明確壹下千年蟲的定義和起因,千年蟲是在計算機中對於年份和日期的表示方式不完整而引起的程序出錯,它包含三個方面的內容:
1. 由於只使用了兩位數來表示年份,會引起跨世紀的日期計算得出錯誤結果,比如用02減去98會得-96,而用2002減去1998結果是4。
2. 由於特殊日期(9/9/99)和計算機中特殊定義的字符串相沖突而有可能引起操作錯誤。
3. 閏年問題,即能否正確計算2000年是閏年,2月份有29日這壹天。
根據以上三個方面的表現,我們可以肯定地說,千年蟲在所有使用了智能程序進行有關日期的處理和操作的地方都有可能發作。舉個例子來說,對於壹部星期壹至星期五工作時間開放、星期六、日下班時間關閉的定時開關電梯來說,由於它能夠定時開關,電梯裏必定有智能程序,同時智能程序中也必定有和日期有關的操作,才能夠計算出壹年中每個月的每壹天是星期幾,那麽當2000年來臨時,如果這部電梯因為只使用了兩位數來表示年份,就會將2000年識別為1900年,從而帶來其中的日歷計算錯誤,造成電梯的自動功能紊亂。因此在此需要特別指出的是,千年蟲不但存在於我們熟知的計算機系統中,對於那些使用了智能芯片的設備,只要其中有和日期有關的操作,也就有可能在2000年來臨時導致千年蟲發作。而對於我們所熟知的計算機系統,千年蟲也並不只是存在於我們所編寫的應用程序和軟件中,包括操作系統、硬件在內的計算機組成部分,由於其中也使用了進行日期操作的各種各樣的小程序(如微機硬件中就有BIOS),也就會有可能受到千年蟲的影響。
哪些地方有蟲 ?
那麽,千年蟲主要會在什麽地方發作呢?就世界上的情況來說,千年蟲主要集中發作於兩個方面:
壹個是配備比較早(大約在80年代中期以前投入使用)的主機上的應用系統,如在IBM 4381,IBM AS/400等機型上運行的應用程序。這些機器系統國際上都應用的相當早,因此其上面的應用程序經過十余年的開發和發展其規模已經非常龐大,比如美國的AT&T電訊公司,其內部就有超過3.6億行的應用程序需要檢測是否存在2000年問題,這確實是很大的工作量,因此給解決2000年問題造成了極大的麻煩。
千年蟲另外壹個容易發作的方面是嵌入式設備。所謂嵌入式設備,就是指設備中使用了智能芯片的系統,由於智能芯片價格低廉,目前嵌入式設備已變成無處不在,由生產線、大量的自動化儀器儀表、汽車、電梯、警報系統、消防檢測器到醫療設備,以至電話交換機、空調機、交通燈、恒溫器等,可謂滲透到日常生活每個角落。這些設備中應用的程序往往都已經固化到元器件中,因此壹旦產品只使用了兩位數來表示年份,就會引發2000年問題,而要替換這些芯片,又往往不得不把整個系統都替換,這會造成資金和操作上的困難,使解決2000年問題更加麻煩,也是無法按時解決2000年問題的隱患之壹。
對於我們普遍使用的PC機又會怎樣呢?
從硬件角度講,2000年問題主要存在於微機的BIOS不能實現向2000年的自動過渡,相對來講是比較簡單的。否則問題壹旦發作起來就會讓妳手忙腳亂,狼狽不堪。具體來講,在微機硬件中有壹個實時系統時鐘,它依靠微機主板上的紐扣電池作為電源和動力,時刻保持運轉,這樣微機在關機時也能夠保持時間前進。這個實時系統時鐘的時間數值是保存到主板BIOS中的存儲器(CMOS)中的。當微機啟動時,微機操作系統從BIOS的那個時間存儲器裏讀取當前時間,包括四位數的年份以及月份、日、小時、分鐘、秒等,從此,只要不關機,操作系統的時鐘就會以微機外接電源(不再是主板上的紐扣電池)為動力單獨向前運轉,並保存在微機的內存中(不再是BIOS中的存儲器)。微機的2000年問題主要表現在,盡管RTC—實時系統時鐘中使用了四位數來表示年份,但其年份數據的前兩位(世紀信息,如“19”,“20”等)並不和後兩位發生聯系,也就是說,當後兩位從“99”變為“00”時,並不能向前進位使前兩位數由“19”變為“20”,這樣,RTC中1999年的下壹年便應該是1900年,從而引發了2000年問題。
而對於目前應用的操作系統(如DOS 5.0以上版本、Windows 3.x 、Windows95、 Windows 98以及 Linux 、SCO Unix、Windows NT)時鐘來說,其年份都是用四位數來表示的,因此不會存在2000年問題。但目前的問題是操作系統中附帶的壹些小實用程序、工具或函數調用,有可能因為年份表示不完整而引起千年蟲發作,但可以肯定的壹點是,只要妳不使用到這些小實用程序或工具,就不會引發2000年問題。如果妳要詳細了解這些操作系統中到底有哪些實用程序、工具或函數調用存在2000年問題,可以到本人站點(/~year2000)的微機Y2K和業界支持兩個欄目中查詢,同時站點裏也有關於微機2000年問題方面的詳細論述。
總之,對於我們自己使用的微機來說,其系統方面的2000年問題是相對簡單的,其難點還應該是其上面規模龐大的應用程序上。
千年蟲怎麽擾亂我們的生活?
如果千年問題沒有得到及時的解決,那麽我們的生活可能會出現壹些意想不到的混亂……
金融業:到了2000年,銀行裏面的電腦可能將2000年解釋為1900年,引起利息計算上的混亂,甚至自動將所有的記錄消除;自動取款機會拒收“00”年的提款卡;
保險業:保險公司可能會將每份保險的年限算錯。
電信業:妳在1999年12月31日23:59分打了三分鐘的電話,電話局的賬單卻可能顯示為(100年-3分鐘);
電力系統:美國夏威夷電力公司曾經做了壹項實際的實驗,輸入00年,結果電廠自動停止操作,在某些情況下也發生電壓與頻率方面的變化,造成用戶全面停電、電器故障甚至燒毀;美國聯邦核管處更是擔心全美的百余座核電廠裏的儀器由於2000年問題失控造成核輻射外泄等災難。
稅務系統:稅務局的電腦可能會認為妳拖欠了100年的稅款,從而寄來天文數字般的補稅通知。
醫藥業:醫療儀器如救生系統或監視系統可能死機導致患者生命危急以及血庫管理、醫囑系統與病歷、器材管理全部無法正常運作。
交通系統:由於控制雷達的電腦失靈,空中管制完全癱瘓,班機停飛。
最近,2000年問題更成了美國各大汽車公司的頭疼問題,原來,美國汽車都有確定的使用年限(比如10年),超過該時間期限後汽車便會自動拒絕發動。麻煩出在壹些剛剛生產出來的自動化程度較高的汽車,其內部控制芯片仍用兩位10進制數表示年份,那麽到了2000年後,由於年份變成了00年,和出廠日期(比如1998年)壹比較,竟然已運行了98年,汽車當然便會自動拒絕發動了。美國花旗銀行(CITYBANK)在對其屬下的汽車進行2000年問題測試時,便發現了這個問題。
怎麽樣,即使妳還沒有買電腦,也不會覺得千年蟲與妳壹點關系沒有吧。不過,隨著各行各業解決千年問題的迅速進展,上述問題也幾乎不可能在我們的生活中發生了。