深入理解和最佳化Windows XP啟動
系統的啟動分三個步驟。第一個步驟從接通電源開始,系統BIOS對硬體設備進行例行的加電自檢,即所謂的POST(Power On Self Test)檢查,包括RAM檢查、軟硬驅和CD-ROM驅動器檢測等。接著,BIOS讀取活動分區主引導記錄MBR(Master Boot Record)的啟動裝載器。最後,當啟動裝載器初始化完成之後,作業系統啟動過程正式開始。啟動作業系統涉及到大量的任務,因此耗時也最長,典型的任務包括啟動作業系統核心、裝載磁碟卷、裝入設備驅動程式、讀取註冊信息、尋找新硬體設備、初始化顯示設備和顯示出用戶界面等。同時,它還要連線網路,以及實施各種用戶自定義的配置,例如安全配置等。Win XP通過與硬體更有效地協作,加速了啟動過程。
如果你正打算購買運行XP的新主機板,可考慮該主機板的BIOS是否支持SBFS,即Simple Boot Flag Specification,或“簡單引導標記規範”,這種BIOS能夠更好地與作業系統配合最佳化啟動速度,例如最大限度地降低BIOS記憶體檢測時間、不再為即插即用的作業系統初始化設備等等。
Win XP的NTLDR啟動裝載器也進行最佳化
啟動裝載器的任務是讀取和裝入作業系統核心和相關係統檔案。在Win XP中,啟動裝載器快取了檔案和目錄信息,只需一個I/O周期即可讀入系統檔案,顯著地提高了裝入作業系統核心的速度。XP的核心也為提高啟動速度進行了最佳化,現在,磁碟I/O操作和設備初始化操作可在一定程度上交迭,即在讀取磁碟的同時檢測設備和把驅動程式裝入記憶體。另外,針對XP編寫的驅動程式必須做到,只有即將使用的設備才會被初始化。在XP中,網路也在系統啟動的時候而不是以後初始化。
Win XP利用“預讀取”技術,在實際用到設備驅動程式、服務和Shell程式之前裝入它們。預讀取技術的關鍵是學習以前的啟動過程,對於啟動過程中要用到的各種檔案,最佳化其裝入模式。這種最佳化技術也被用到了套用軟體上,系統對每一個套用軟體的前幾次啟動情況進行分析,然後創建一個描述套用需求的虛擬“記憶體映像”,並把這些信息保存到WINDOWSPREFETCH資料夾。一旦建立了映像,套用軟體的裝入速度大大提高。XP的預讀取數據保存了最近8次系統啟動或套用軟體啟動的信息。
通過一個簡單的試驗可看出預讀取技術的作用:刪除WINDOWSPREFETCH目錄下與某個套用軟體對應的預讀取數據,然後看看有預讀取數據與無預讀取數據的差別。以Word為例,如果你以前沒有用過它,首先啟動幾次,再按正常方式使用它;然後,記錄從點擊圖示開始Word需要多長的啟動時間。接下來,刪除WINDOWSPREFETCH目錄下所有winword.exe.*.pf檔案,再次點擊Word圖示啟動它,看看它需要多長的啟動時間。可以看到,兩次啟動之間的時間差非常大。不過不用擔心,Win XP將再次開始為Word收集預讀取數據,幾次啟動之後,Word啟動速度又會變得很快。對於啟動裝載器,也有作用原理類似的預讀取數據檔案,但如果僅僅為了試驗,最好不要刪除它。 簡要說明一下PREFETCH資料夾下的檔案的命名規則。如前所述,每一個套用(包括XP的啟動過程)都在PREFETCH目錄下有對應的預讀取檔案,預讀取檔案描述了套用啟動時各個模組的裝載次序。預讀取檔案的名字以套用執行檔案的名字為基礎,加上一個“-”和描述執行檔案完整路徑的十六進制值,再加上檔案擴展名.PF,例如mmc.exe-461B77C5.pf。但是,無論在哪一個系統上,XP啟動預讀取檔案總是同一個名字,即NTOSBOOT-B00DFAAD.PF。
預讀取數據也為Win XP的磁碟整理工具提供幫助。有關最優預讀取次序的信息保存在WINDOWSPREFETCH目錄下的Layout.ini檔案,你可以用記事本打開這個檔案,看看Win XP認為應該怎樣安排檔案在磁碟上的物理位置才能達到最快的啟動速度。磁碟整理工具轉移檔案位置的依據正是在此。實際上,當Win XP覺察到計算機處於空閒狀態時,它會不失時機地運行磁碟整理工具並嘗試最佳化檔案的位置。
Win XP具有緩衝網路連線和配置的能力,這使得XP能夠比以前的Windows更快地回響網路操作。默認情況下,Win XP優先使用緩衝的網路視圖,而不是實時檢測到的網路視圖。這就是說,當你打開網路視圖時,Win XP顯示的實際上是以前緩衝的網路視圖,同時它在後台嘗試建立連線。這種處理方式減少了網路操作延遲時間,即使網路上域、DHCP或DNS伺服器出現故障也給用戶流暢的操作感覺。
下面我們來看看如果主機板BIOS不支持SBFS規範,應當如何最佳化系統。由於不同廠商的BIOS選單不盡相同,這裡只能給出要關注的幾個項目,BIOS實際顯示的選單或選項名字可能有所出入:
啟用Quick POST
禁用Boot up floppy seek(啟動時搜尋軟碟機),搜尋軟碟機會耗用一定的啟動時間。
調整啟動設備的次序,最好設定為“C only”(只從硬碟啟動)。這不僅提高了啟動速度(避免了系統檢查不可啟動的設備,如沒有軟碟的軟碟機),而且也避免了系統從軟碟機或其他設備啟動。有特殊需要時,例如無法用C糟啟動,再在BIOS中把啟動設備改為軟碟機或CD-ROM之類的設備。
啟用PnP-OS(即插即用作業系統)。這個選項禁止BIOS檢測設備,把檢測設備的任務留給作業系統完成。對於主流的Windows作業系統,啟用該選項能夠顯著地減少啟動時間。
對於作業系統,提高啟動速度最重要的是禁止各種不必要的程式和服務自動啟動。Win XP提供了一個方便的工具:點擊“開始”選單的“運行”,運行msconfig,然後禁止所有不必要的程式自動啟動。 最後推薦一個工具,它能夠分析、顯示和最佳化系統的啟動過程。這個工具是BootVis,你可從微軟下載中心搜尋“BootVis”得到,因為下載Url很長,這裡就不再給出。下載好之後,解開壓縮,點擊BootVis.exe運行。關閉其他所有正在運行的軟體,選擇BootVis的選單File>New>Next Boot+ Drivers Trace,系統將在15秒內重新啟動。重新啟動後,稍等,因為有一些檔案要寫入磁碟——你可以看到相應的提示信息。這個過程結束後,BootVis再次啟動,顯示出圖一所示的圖表。有關這些圖表的詳細說明,可參看BootVis的幫助,這裡就不再說明。如果你不想了解BootVis的工作細節,那么,只要知道這些圖表說明的是啟動過程中裝入各個部分所需時間,這就足夠了。
如果要最佳化系統,你應該重複執行上面的過程4-5次。完成後,選擇BootVis的選單Trace>Optimize System,等待重新啟動。這一次的啟動時間將比以前要長得多。登錄Win XP後,立即進行磁碟整理。以後,你就可以好好享受深入最佳化啟動速度之後的感覺了。