PC系統的Y2K防治方案

 

在本節中,首先將說明在 PC 系統中,有那些地方是 Y2K 問題的
藏身所在。其次將指出 PC 系統中的各種Y2K問題彼此間的關聯性
。緊接著,將舉出各種 Y2K 問題可能發生的時間。在了解上述特
徵後,就可以從方法學上談 PC 系統的 Y2K 防治方案了。
      
什麼是PC系統
           
進行討論之前,還是應該要先說明那些系統可以稱為 PC 系統。
剛開始,IBM 把採用 Intel 8088、8086 處理器的電腦系統稱為
個人電腦(Person Computer),簡稱PC。這是最早期的PC系統,也
可以稱為狹義的PC系統。後來由於各種技術不斷進步,就遵循
80x86 的系統架構發展出一系列的電腦系統,我們把這些系統通
稱為 PC 系統。因此,下列的幾種系統都可以稱為 PC系統:
          
廣義的PC系統
          
PC       早期的 8088、8086 相容系統,只有軟碟機而沒有硬碟
         機。可以算作狹義的 PC 系統,也是最原始的 PC 系統
         ,後面的系統都根據這個系統的架構擴充功能
           
XT        雖然已經可以使用硬碟機,但是沒有內建的 RTC/CMOS
         元件
             
AT       80286、386、486、Pentium、Pentium Pro、Pentium MMX
         、Pentium II、Pentium III 等級的電腦,系統中使用ISA
         、PCI等匯流排。目前大多數 PC 系統屬於此類型
               
MCA      80286、386、486、Pentium 等級的電腦,系統中使用
               MCA匯流排。所有 IBM PS/2 models 50 以上的系統都
               採用 MCA 匯流排。現在已經不多見
             
EISA     80286、386、486、Pentium 等級的電腦,系統中使用
             EISA匯流排。現在已經不多見
                    
Y2K問題的藏身所在
           
要了解 Y2K 問題的藏身所在,就必須先了解那些元件會存取系統
的時間/日期資訊以及誰會使用到這些元件。請參考圖1-6,
RTC(Real Time Clock)是電腦中最基本的時鐘單位,無論是否在
開機狀態下,都可以靠特殊的電池持續運作,並且將日期/時間資
訊儲存在 CMOS 記憶體中。在開機時,BIOS 從 RTC 使用的 CMOS
記憶體中取得目前的時間/日期,換算成距離當日0時0分的記數單
位,並且儲存在 BIOS 資料區中(BIOS Data Area)。隨後,BIOS
就利用 INT 8 以每秒18.2次的頻率更新 BIOS 資料區中的記數器
內容,以維持時間的正確性。在作業系統的部分,雖然有些直接
存取 RTC/CMOS 的日期/時間,但大部分還是依賴 BIOS 資料區的
日期/時間。絕大多數應用程式都利用作業系統或 BIOS 提供的服
務程式取得日期/時間資訊,但少數特殊的應用程式或即時性的應
用程式則直接存取 RTC 的時間/日期資訊。因此,就電腦系統內
部架構而言,RTC/BIOS、BIOS、作業系統、應用程式形成了一個
垂直性的架構,上下互相影響。此外,由於任何程式(或任何晶片
)都必須由程式設計人員設計而成,所以程式開發工具、解決問題
的程式邏輯、程式設計人員的心態、以及如何儲存時間/日期資訊
等問題都可能造成 Y2K 問題。最後,使用者的操作習慣也可能讓
原本沒有 Y2K 問題的程式出狀況。
            
┌-------------------┐      ┌-------------------┐
│ 一般應用程式 │      │ 特殊應用程式 │
└-------------------┘      │ ex.即時系統      │--┐
        │                             └-------------------┘    │  
        ↓                                                                 │
┌---------------------------------┐                       │
│          作業系統                     │                       │
└---------------------------------┘                       │
                          │                                               │
┌----------------↓---------------┐                     │
│    作業平台   BIOS                │                      │
│                                                │                      │
│                KTC    ←------------┼-----------------┘
│                                               │
└---------------------------------┘
       
圖1-6 系統中會存取系統時間/日期的元件
         
簡單的說,BIOS、RTC/CMOS、作業系統、應用程式、程式開發工具
、程式邏輯、資料檔案、使用者本身的操作習慣都是 Y2K 問題的
藏身處。因此,本書從第二章開始,會分別說明各種藏身處與Y2K
問題的關係以及因應之道。
        
PC 系統的各種 Y2K 問題間的影響性
            
要了解各種元件的 Y2K 問題影響性,就必須先了解各種元件本身
會有那些 Y2K 問題。基本上,各種軟硬體元件的 Y2K 問題不盡相
同。舉例來說,RTC/CMOS 的 Y2K 問題可能是老舊系統根本沒有
RTC/CMOS、RTC 沒有更新世紀碼的程式、或者世紀碼在 CMOS 中的
位址沒有工業標準可循,而應用系統的 Y2K 問題可能是採用某個
日期(例如1999年9月9日)當作不可能來臨的日期,使得往後的資料
都當作錯誤資料處理,造成資料流失的問題。
            
其次,這些 Y2K 問題可能互相影響,也可能互相獨立。舉例來說
,如果 RTC/CMOS 與 BIOS 沒有適當的處理 Y2K 年序轉換問題的
話,可能造成作業系統、應用程式都無法正確處理 Y2K 問題。但
是,應用程式的 Y2K 問題,卻多半不會造成 RTC/CMOS 的 Y2K 問
題。在大多數情況下,圖1-6底層的元件如果有 Y2K 問題的話,都
會造成上層元件的 Y2K 問題,反之則不然。
       
最後值得注意的是,解決某種元件的問題時,不代表其他 Y2K 問
題自動解決。舉例來說,如果硬體與作業系統都沒有 Y2K 問題,
但是在安裝一份有 Y2K 問題的應用程式後,就一樣有 Y2K 問題。
而且,如果該應用程式置換了系統重要的檔案,而且該檔案也有Y2K
問題,那麼,只要其他應用程式使用該系統檔案,就可能造成 Y2K
問題。
       
除了系統中的元件會互相影響外,使用者本身的電腦操作習慣也可
能造成 Y2K 問題。換句話說,即使所有軟硬體都沒有 Y2K 問題,
但是如果讀者還是習慣性的以兩位數字代表四位數字的年份的話,
還是會造成系統的 Y2K 問題。
        
由於 PC 系統的各種 Y2K 問題會互相影響,所以在防治 Y2K 問題
時,必須徹底解決所有的 Y2K 問題才行。此外,在圖1-6的架構中
,由於底層元件的 Y2K 問題多半會影響上層元件,所以要有效的
解決各種 Y2 K問題,最好能由底層的 RTC/CMOS、BISO與作業系統
開始,直到所有的應用程式、資料檔案都能解決為止。
        
可能發生Y2K問題的時間
       
純粹就 RTC、BIOS 或作業系統而言,可能發生 Y2K 問題的時間相
當有限,大約只有下列幾種時間:
           
□12/31/1999到1/1/2000的年序轉換問題
        
□2000年日否是閏年:測試2/29/2000是否能正確轉換到3/1/2000
        
□2000年第一個用8位數字儲存的日期:10/10/2000(如何儲存日期
  資料端看系統而定,不一定是8位數字)
           
但是,由於各種應用系統有不同的設計目標,所以可能發生 Y2K問
題的時間相當多。因此,本書只能提出一些常見的問題時間供讀者
做參考。讀者只需要注意和自己切身相關的時間,或者由下面提示
的時間推論出可能出問題的時間即可,而不必注意所有的問題時間
。除了上述 RTC、BIOS 與作業系統可能發生的問題的時間外,各
種應用系統在以下各個時間點還可能發生 Y2K 問題:
       
□可能作為程式流程控制的日期:1/1/99、4/9/1999(1999年的第
  99天)、9/9/99、9/10/99、12/31/99(雖然這些時間可能已經過
  時或快要到了,但在過去,這些時間通常被程式設計人員當作無
  限大的時間)
        
□歐元啟用時間:包括只在電腦系統中使用的電子歐元(1/1/1999)
  以及歐元紙幣或硬幣的問世時間(1/1/2002)
         
□第一個可以保留機位的時間(1/1/2000的前330天):2/5/1999各
  國或行業的財務年度開始與結束日期:3/1/1999、4/1/1999(紐
  約州、日本、加拿大)、4/6/1999(英國)、7/1/1999(美國46州)
  、9/1/1999(德州)10/1/1999   1999年最後一個工作日:
  12/30/1999
         
□不存在的日期:1/0/2000(少數老舊的資料庫程式或試算表有此
  問題)、2/30/2000、2/31/2000、2/29/2001(2001年不是閏年)
         
□2000年第1個週末:1/1/2000
           
□2000年第1個工作日:1/3/2000(美國以及大部分國家)
          
□2000年最後一天:12/31/2000(如果系統誤判2000不是閏年,就
  會沒有這一天)
             
□C語言的time_t數值(秒數)由9位數字變成10位數字時:9/9/2001
       
□如果系統的出貨日期或付款日期等會跨越 1/1/2000或2/29/2000
  等問題時間時,則 Y2K 問題可能會提前或延後出現。舉例來說
  ,假定9/1/1999 接到訂單,預定3個月後出貨,如果剛好系統無
  法自動進入1/1/2000,那麼系統就無法設定正確的出貨日期。因
  此,讀者必須根據訂貨、出貨、收款、付款等狀況自行推算系統
  可能發生問題的時間。
             
如果想參考更多的 Y2K 問題時間,請參考下列網頁:
           
http://www.software.ibm.com/year2000/tips20.html
http://www.microsoft.com/technet/year2k/white/y2000tc/y2000tc1.htm
http://www.pcy2000.org/software/software_testing.htm
http://www.y2kmfg.gov.tw/y2k/y2kday.htm
         
在評估Y2K問題的發生時間時,以下幾點值得讀者特別注意:
          
□由於許多作業有提前或延後的特性,所以 Y2K 問題可能提前或
  延後發生。
           
□某些Y2K測試必須同時測試兩個以上的日期才有意義
  (ex.12/31/1999-1/1/2000、2/28/2000-2/29/2000、
  2/29/2000-3/1/2000、12/31/2000-1/1/2001)
           
PC 系統的 Y2K 防治方案
           
在開始動手進行 Y2K 防治作業前,有幾點值得讀者特別注意:
            
□請記得先備份系統中重要資料
             
□盡量在不影響正常工作的環境中測試,測試成功後再應用到正常
  的工作環境中
        
□如果有必要的話,請停止會造成問題的系統服務程式(ex.在網路
  伺服器上,關閉使用者登錄服務程式)
            
□如果有必要的話,請重新開機後再測試(確認所有必要資料都已
  經儲存完畢)
             
□測試日期是否已經超過軟體合法使用期限
               
□如果在網路上測試,密碼是否會在測試日期過時
               
□如果會影響網路上其他機器運作,請確認是否必須將 PC 由網路
  中隔離
            
□測試完畢後,請恢復正常的日期與所有暫時改變的設定
             
               
建立上述基本認識後,就可以按照下列步驟進行Y2K問題防治方案:
           
               
1. 針對軟硬體元件界定Y2K問題測試標準(後面的章節會逐一介紹)。
               
2. 界定可能發生Y2K問題的軟硬體元件。
                  
3. 在不影響正常電腦運作的環境下,針對可能發生Y2K問題的軟硬
   體元件測試可能發生Y2K問題的時間。
                  
4. 更新/更換軟硬體元件或修正程式、資料檔案。
                
5. 重新測試。
          
在採用本Y2K防治方案時,還有幾點值得注意的事項:
          
             
□雖然上述方案是一個較正式的方案,但是很多時候不需要完全按
  照上述方式進行。舉例來說,許多產品都已經由廠商測試過,並
  且提出解決方案,所以,使用者只要到廠商的網站看該產品是否
  有Y2K問題,如果有的話,取得新的產品或修補程式來安裝即可
  。其次,在絕大多數的案例中,使用者都不可能自行測試Y2K問
  題,而必須由廠商自行解決。舉例來說,絕大多數使用者一輩子
  也可能只用過一小部分NT 4.0的功能,因此,根本就不可能由使
  用者測試。在這種情況下,使用者就是安裝正確的修補程式,或
  者尋求協力廠商的解決方案。所以,讀者只要按照本書介紹的方
  法進行,即可順利地完成PC系統的Y2K防治計劃,而不必浪費太
  多的時間作一些不可能完成的事情。
             
□如果一定要自己解決Y2K問題時,請由低階的硬體系統開始,直
  到所有高階的應用程式都沒有Y2K問題時才算結束。
             
□除了電腦系統的Y2K問題外,使用者本身必須建立正確的操作習
  慣,才能避免Y2K問題的發生。舉例來說,即使PC系統已經可以
  容許4位數字的輸出入年份,但是還需要使用者的配合才行。如
  果使用者還是習慣性的輸入兩位數字,遲早系統都會再出狀況
  。雖然可以經由第五章中程式設計技巧暫時解決這個問題,但
  是畢竟程式設計技巧還是有時效性的限制,所以還是要使用者
  配合才行。
               
□最後要再提醒讀者的是,由於沒有方法可以保證完全排除所有
  的Y2K問題,所以最最重要的防治之道就是為系統重要的資料建
  立備份。本書將在最後一章介紹一些備份的方法與工具。
               
看了這麼多注意事項後,是否覺得頭昏了呢?哈哈,沒關係,只
要讀者按照本書後面幾章的介紹操作,並且隨時回頭參考一下本
小節的注意事項,就可以避免各種解決Y2K問題的困擾了。
                              
************************************************************
以上內容摘自『Y2K PC 系統殺蟲劑』書號:F8062 定價:290元
************************************************************