什麼是千年蟲 ?
千年蟲會發生在哪些地方?要回答這個問題,需要先明確一下千年蟲的定義和起因,千年蟲是在計算機中對於年份和日期的表示方式不完整而引起的程式出錯,它包含三個方面的內容:
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
http://www.netease.com/~year2000)
總之,對於我們自己使用的微機來說,其系統方面的2000年問題是相對簡單的,其難點還應該是其上面規模龐大的應用程式上。
千年蟲怎麼擾亂我們的生活?
如果千年問題沒有得到及時的解決,那麼我們的生活可能會出現一些意想不到的混亂……
金融業:到了2000年,銀行裡面的電腦可能將2000年解釋為1900年,引起利息計算上的混亂,甚至自動將所有的記錄消除;自動取款機會拒收“00”年的提款卡;
保險業:保險公司可能會將每份保險的年限算錯。
電信業:你在1999年12月31日23:59分打了三分鐘的電話,電話局的賬單卻可能顯示為(100年-3分鐘);
電力系統:美國夏威夷電力公司曾經做了一項實際的實驗,輸入00年,結果電廠自動停止操作,在某些情況下也發生電壓與頻率方面的變化,造成使用者全面停電、電器故障甚至燒燬;美國聯邦核管處更是擔心全美的百餘座核電廠裡的儀器由於2000年問題失控造成核輻射外洩等災難。
稅務系統:稅務局的電腦可能會認為你拖欠了100年的稅款,從而寄來天文數字般的補稅通知。
醫藥業:醫療儀器如救生系統或監視系統可能宕機導致患者生命危急以及血庫管理、醫囑系統與病歷、器材管理全部無法正常運作。
交通系統:由於控制雷達的電腦失靈,空中管制完全癱瘓,班機停飛。
最近,2000年問題更成了美國各大汽車公司的頭疼問題,原來,美國汽車都有確定的使用年限(比如10年),超過該時間期限後汽車便會自動拒絕發動。麻煩出在一些剛剛生產出來的自動化程度較高的汽車,其內部控制晶片仍用兩位10進位制數表示年份,那麼到了2000年後,由於年份變成了00年,和出廠日期(比如1998年)一比較,竟然已運行了98年,汽車當然便會自動拒絕發動了。美國花旗銀行(CITYBANK)在對其屬下的汽車進行2000年問題測試時,便發現了這個問題。
怎麼樣,即使你還沒有買電腦,也不會覺得千年蟲與你一點關係沒有吧。不過,隨著各行各業解決千年問題的迅速進展,上述問題也幾乎不可能在我們的生活中發生了。
什麼是千年蟲 ?
千年蟲會發生在哪些地方?要回答這個問題,需要先明確一下千年蟲的定義和起因,千年蟲是在計算機中對於年份和日期的表示方式不完整而引起的程式出錯,它包含三個方面的內容:
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年問題,可以到本人站點(http://www.netease.com/~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年問題測試時,便發現了這個問題。
怎麼樣,即使你還沒有買電腦,也不會覺得千年蟲與你一點關係沒有吧。不過,隨著各行各業解決千年問題的迅速進展,上述問題也幾乎不可能在我們的生活中發生了。