Windows XP Professional計算機啟動過程概述

cn0760-pb發表於2009-04-30

轉自網路

從按下計算機開關啟動計算機,到登入到桌面完成啟動,一共經過了以下幾個階段:
1. 預引導(Pre-Boot)階段;
2. 引導階段;
3. 載入核心階段;
4. 初始化核心階段;
5. 登陸。
--------------------------------------------------------------------------------

[@more@]每個啟動階段的詳細介紹
a) 預引導階段
在按下計算機電源使計算機啟動,並且在Windows XP專業版作業系統啟動之前這段時間,我們稱之為預引導(Pre-Boot)階段,在這個階段裡,計算機首先執行Power On Self Test(POST),POST檢測系統的總記憶體以及其他硬體裝置的現狀。如果計算機系統的BIOS(基礎輸入/輸出系統)是即插即用的,那麼計算機硬體裝置將經過檢驗以及完成配置。計算機的基礎輸入/輸出系統(BIOS)定位計算機的引導裝置,然後MBR(Master Boot Record)被載入並執行。在預引導階段,計算機要載入Windows XP的NTLDR檔案。
b) 引導階段
Windows XP Professional引導階段包含4個小的階段。
首先,計算機要經過初始引導載入器階段(Initial Boot Loader),在這個階段裡,NTLDR將計算機微處理器從真實模式轉換為32位平面記憶體模式。在真實模式中,系統為MS-DOS保留640kb記憶體,其餘記憶體視為擴充套件記憶體,而在32位平面記憶體模式中,系統(Windows XP Professional)視所有記憶體為可用記憶體。接著,NTLDR啟動內建的mini-file system drivers,透過這個步驟,使NTLDR可以識別每一個用NTFS或者FAT檔案系統格式化的分割槽,以便發現以及載入Windows XP Professional,到這裡,初始引導載入器階段就結束了。
接著系統來到了作業系統選擇階段,如果計算機安裝了不止一個作業系統(也就是多系統),而且正確設定了boot.ini使系統提供作業系統選擇的條件下,計算機顯示器會顯示一個作業系統選單,這是NTLDR讀取boot.ini的結果。(至於作業系統選單,由於暫時條件不夠,沒辦法截圖,但是筆者模擬了一個,見圖一。)
在boot.ini中,主要包含以下內容:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)WINDOWS="Microsoft Windows XP Professional" /fastdetect
multi(0)disk(0)rdisk(0)partition(2)WINNT="Windows Windows 2000 Professional"
.
其中,multi(0)表示磁碟控制器,disk(0)rdisk(0)表示磁碟,partition(x)表示分割槽。NTLDR就是從這裡查詢Windows XP Professional的系統檔案的位置的。(*本文不會更詳細地講解boot.ini的組成結構,因為其與本主題關係不大,如果想了解,可以到一些專門的網站處查詢相關資訊。)如果在boot.ini中只有一個作業系統選項,或者把timeout值設為0,則系統不出現作業系統選擇選單,直接引導到那個唯一的系統或者預設的系統。在選擇啟動Windows XP Professional後,作業系統選擇階段結束,硬體檢測階段開始。
在硬體檢測階段中,ntdetect.com將收集計算機硬體資訊列表並將列表返回到NTLDR,這樣做的目的是便於以後將這些硬體資訊加入到登錄檔HKEY_LOCAL_MACHINE下的hardware中。
硬體檢測完成後,進入配置選擇階段。如果計算機含有多個硬體配置檔案列表,可以透過按上下按鈕來選擇。如果只有一個硬體配置檔案,計算機不顯示此螢幕而直接使用預設的配置檔案載入Windows XP專業版。
引導階段結束。在引導階段,系統要用到的檔案一共有:NTLDR,Boot.ini,ntdetect.com,ntokrnl.exe,Ntbootdd.sys,bootsect.dos(可選的)。
.
c) 載入核心階段
在載入核心階段,ntldr載入稱為Windows XP核心的ntokrnl.exe。系統載入了Windows XP核心但是沒有將它初始化。接著ntldr載入硬體抽象層(HAL,hal.dll),然後,系統繼續載入HKEY_LOCAL_MACHINEsystem鍵,NTLDR讀取select鍵來決定哪一個Control Set將被載入。控制集中包含裝置的驅動程式以及需要載入的服務。NTLDR載入HKEY_LOCAL_MACHINEsystemservice...下start鍵值為0的最底層裝置驅動。當作為Control Set的映象的Current Control Set被載入時,ntldr傳遞控制給核心,初始化核心階段就開始了。
.
d) 初始化核心階段
在初始化核心階段開始的時候,彩色的Windows XP的logo以及進度條顯示在螢幕中央,在這個階段,系統完成了啟動的4項任務:
? 核心使用在硬體檢測時收集到的資料來建立了HKEY_LOCAL_MACHINEHARDWARE鍵。
? 核心透過引用HKEY_LOCAL_MACHINEsystemCurrent的預設值複製Control Set來建立了Clone Control Set。Clone Control Set配置是計算機資料的備份,不包括啟動中的改變,也不會被修改。
? 系統完成初始化以及載入裝置驅動程式,核心初始化那些在載入核心階段被載入的底層驅動程式,然後核心掃描HKEY_LOCAL_MACHINEsystemCurrentControlSetservice...下start鍵值為1的裝置驅動程式。這些裝置驅動程式在載入的時候便完成初始化,如果有錯誤發生,核心使用ErrorControl鍵值來決定如何處理,值為3時,錯誤標誌為危機/關鍵,系統初次遇到錯誤會以LastKnownGood Control Set重新啟動,如果使用LastKnownGood Control Set啟動仍然產生錯誤,系統報告啟動失敗,錯誤資訊將被顯示,系統停止啟動;值為2時錯誤情況為嚴重,系統啟動失敗並且以LastKnownGood Control Set重新啟動,如果系統啟動已經在使用LastKnownGood值,它會忽略錯誤並且繼續啟動;當值是1的時候錯誤為普通,系統會產生一個錯誤資訊,但是仍然會忽略這個錯誤並且繼續啟動;當值是0的時候忽略,系統不會顯示任何錯誤資訊而繼續執行
? Session Manager啟動了Windows XP高階子系統以及服務,Session Manager啟動控制所有輸入、輸出裝置以及訪問顯示器螢幕的Win32子系統以及Winlogon程式,初始化核心完畢。
.
e) 登陸
? Winlogon.exe啟動Local Security Authority,同時Windows XP Professional歡迎螢幕或者登陸對話方塊顯示,這時候,系統還可能在後臺繼續初始化剛才沒有完成的驅動程式。
?提示輸入有效的使用者名稱或密碼。
?Service Controller最後執行以及掃描HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServives來檢查是否還有服務需要載入,Service Controller查詢start鍵值為2或更高的服務,服務按照start的值以及DependOnGroup和DepandOnService的值來載入。
.
只有使用者成功登陸到計算機後,Windows XP的啟動才被認為是完成,在成功登陸後,系統複製Clone Control Set到LastKnownGood Control Set,完成這一步驟後,系統才意味著已經成功引導了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7329581/viewspace-1021558/,如需轉載,請註明出處,否則將追究法律責任。

相關文章