windows系統(tǒng)啟動過程原理全面分析
http://blog.csdn.net/trypsin/archive/2009/08/20/4466373.aspx
現(xiàn)在個人用的最多的就是windows XP,要正確使用Windows XP,一定要熟練掌握Windows XP的啟動原理。Windows XP的啟動過程所執(zhí)行的操作可以看成是一個操作系統(tǒng)整體環(huán)境的快照或縮影,了解了Windows XP的啟動原理,有助于深入了解Windows XP的多方面機制。
正如很多人所經(jīng)常遇到的那樣,Windows XP并不是十全十美的,如果操作失誤,很可能導(dǎo)致Windows XP的各種故障。其中,啟動故障比較常見,也比較難于對付。因為,如果系統(tǒng)啟動不起來,對它的排錯也就無從談起。所以,熟練掌握對Windows XP啟動故障的排除,也是一個“菜鳥”必不可少的技能。
Windows XP是基于NT技術(shù)的操作系統(tǒng),它的啟動過程同Windows NT和Windows 2000基本相同,但是同DOS、Windows 3.X、Windows 9.X和Windows ME大相徑庭。Windows XP徹底拋棄了原先的基于字符的實模式環(huán)境,其啟動過程比較復(fù)雜。 一般來說,Windows XP的啟動過程,主要包括以下幾個步驟:
一、電源開啟自檢過程
在打開計算機電源時,首先開始電源啟動自檢過程。在BIOS中包含一些基本的指令,能夠幫助計算機在沒有安裝任何操作系統(tǒng)的情況下進(jìn)行基本的啟動。電源啟動自檢過程首先會從BIOS中載入必要的指令,然后進(jìn)行如下一系列的自檢操作:
進(jìn)行硬件的初始化檢查,例如檢查內(nèi)存的容量等。
驗證用于啟動操作系統(tǒng)的設(shè)備是否正常,例如,檢查硬盤是否存在等。
從CMOS中讀取系統(tǒng)配置信息。 在完成了電源啟動的自檢之后,每個帶有固件的硬件設(shè)備,如顯卡和磁盤控制器,都會根據(jù)需要完成內(nèi)部的自檢操作。
二、初始化啟動過程
在完成了電源啟動自檢過程之后,存儲在CMOS中的設(shè)置,例如磁盤的引導(dǎo)順序等,能夠決定由哪些設(shè)備來引導(dǎo)計算機。例如,可以設(shè)置磁盤的引導(dǎo)順序為首先通過A盤引導(dǎo),其次才通過C盤引導(dǎo),則系統(tǒng)會首先嘗試用A盤引導(dǎo)系統(tǒng),如果A盤存在并可引導(dǎo),則通過A盤引導(dǎo)。如果A盤不存在,則通過C盤引導(dǎo)系統(tǒng)。如果A盤存在,但不是引導(dǎo)盤,則系統(tǒng)地提示系統(tǒng)不可引導(dǎo)。
一般來說通常會使用硬盤引導(dǎo)。在進(jìn)行硬盤引導(dǎo)時,啟動過程通常按照如下的步驟進(jìn)行:
系統(tǒng)首先檢測打開電源的硬盤。 若該硬盤是啟動盤,BIOS就將主引導(dǎo)記錄(Main Boot Record――MBR)中的引導(dǎo)代碼載入內(nèi)存。
接著,BIOS會將啟動過程的運行交給MBR來進(jìn)行。
計算機搜索MBR中的分區(qū)表,找出活動分區(qū)(Active Partition)。
計算機將活動分區(qū)的第一個扇區(qū)中的引導(dǎo)代碼載入到內(nèi)存。
引導(dǎo)代碼檢測當(dāng)前使用的文件系統(tǒng)是否可用。
引導(dǎo)代碼查找ntldr文件,找到之后啟動它。 (該文件ntldr文件將來在登錄進(jìn)入windows系統(tǒng)之后C盤根目錄隱藏文件下找到)
BIOS將控制權(quán)轉(zhuǎn)交給ntldr,由ntldr完成操作系統(tǒng)的啟動。
注意:這里簡單介紹一下MBR的概念。MBR位于啟動磁盤的第一個扇區(qū),其中主要包含引導(dǎo)代碼(Boot Code)和分區(qū)表(Partition Table)數(shù)據(jù)。引導(dǎo)代碼主要用于引導(dǎo)系統(tǒng)。而分區(qū)表則主要用于標(biāo)識基本分區(qū)和擴展分區(qū)。
三、引導(dǎo)程序載入過程
本過程主要由ntldr 文件完成。Ntldr從引導(dǎo)分區(qū)載入啟動文件,然后完成如下一些任務(wù)。
1、在基于X86CPU的系統(tǒng)下,設(shè)置CPU的運行使用32位的Flat內(nèi)存模式 。
對基于X86CPU的計算機來說,第一次啟動的時候總是進(jìn)入所謂的實模式(RealMode)。在實模式下CPU的某些特性不能完全發(fā)揮,這是因為它要保證同8位或16位的CPU(如8086、8088)相兼容。實模式下由于系統(tǒng)規(guī)格的限制,無法對大容量內(nèi)存進(jìn)行直接存取,而必須通過分段的方式完成。對于32位的Windows XP來說,8位或16位的CPU顯然是無用的。
ntldr首先會將CPU切換到32位的模式,從而確保Windows XP的正常。在CPU的32位模式下,可以對大容量內(nèi)存進(jìn)行直接存取,而徹底拋棄了原先在8位或16位下分段存取內(nèi)存的不便。這也是為什么32位模式稱作Flat內(nèi)存模式的原因。
2、啟動文件系統(tǒng)
ntldr 中包含相應(yīng)的代碼,能夠幫助Windows XP完成對NTFS或FAT格式的磁盤進(jìn)行讀寫。從而能夠讀取、訪問和復(fù)制文件。
3、讀取boot.ini 文件
在這一步中,ntldr 會分析boot.ini文件,確定操作系統(tǒng)分區(qū)所在的位置。
對于單引導(dǎo)的系統(tǒng)來說,ntldr 會通過啟動ntdetect.com來初始化硬件檢測狀態(tài)。
對于多引導(dǎo)系統(tǒng)來說,首先由用戶在操作系統(tǒng)菜單中選擇要啟動的操作系統(tǒng)然后而由ntldr進(jìn)行相應(yīng)的操作。
如果用戶選擇啟動ntdetect.com來初始化硬件檢測狀態(tài)。
如果選擇啟動舊式的微軟操作系統(tǒng),如MS-DOS、Windows 9x/ME,ntldr會將從bootsect.dos文件中讀取MBR代碼,然后將控制權(quán)交給bootsect.dos中的MBR。
4、根據(jù)需要提供啟動菜單
在這一步,如果用戶按下F8鍵,則會顯示啟動菜單,允許用戶選擇不同的啟動方式,例如使用安全方式啟動,或是使用最后一次正確的配置啟動等。
5、檢測硬件和硬件配置
在這一步中,ntldr 啟動ntdetect.com文件進(jìn)行基本的設(shè)備檢查,然后將 boot.ini文件中的信息,以及注冊表中的硬件和軟件信息傳遞給ntoskrnl.exe 程序。
四、檢測和配置硬件過程
在處理完boot.ini文件之后,ntldr會啟動ntdetect.com程序。在基于X86的系統(tǒng)中,ntdetect.com會通過調(diào)用系統(tǒng)固件程序收集安裝的硬件信息,然后由ntdetect.com將這些信息傳遞送回ntldr。Ntldr獲取從ntdetect.com發(fā)來的信息后,將這些信息組織成為內(nèi)部的斷氣結(jié)構(gòu)形式,然后由ntldr 啟動ntoskrnl.exe ,并將這些信息發(fā)送給它。
Ntdetect.com 會收集如下類型的硬件信息:
系統(tǒng)固件信息,例如時間和日期等
總線適配器的類型
顯卡適配器的類型
鍵盤
通信端口
磁盤
軟盤
輸入設(shè)備,例如鼠標(biāo)
并口
安裝在ISA槽中的ISA設(shè)備
完成信息的檢測之后,Windows XP會在屏幕上顯示那個著名的Windows XP商標(biāo),并顯示一個滾動的,告訴用戶Windows 的啟動進(jìn)程。
五、內(nèi)核加載過程
在此過程中,ntldr實施下列一些功能。
1、將內(nèi)核(ntoskrnl.exe)和硬件抽象層(hal.dll)載入到內(nèi)存
2、加載控制集信息
在這一過程中,ntldr從注冊表中的HKEY_LOCAL-_MACHINE\SYSTEM位置加載相應(yīng)的控制集(Control Set)信息,并確定在啟動過程中要加載的設(shè)備驅(qū)動。
3、加載設(shè)備驅(qū)動程序和服務(wù)
在這一步中,系統(tǒng)會在BIOS的幫助下開始加載設(shè)備驅(qū)動程序,以及服務(wù)。
4、啟動會話管理器
完成上面的過程之后,內(nèi)核會啟動會話管理器(Session Manager),這是一個名為smss.exe 的程序,其作用表現(xiàn)如下:
(1)創(chuàng)建系統(tǒng)環(huán)境變量
(2)創(chuàng)建虛擬內(nèi)存頁面文件
六、用戶登錄過程
在這一過程中,Windows 子系統(tǒng)會啟動winlogon.exe,這是一個系統(tǒng)服務(wù),用于提供對Windows 用戶的登錄和注銷的支持。
Winlogon.exe 可以完成如下一些工作:
啟動服務(wù)子系統(tǒng)(services.exe),也稱服務(wù)控制管理器(Service Control Manager, SCM)。
啟動本地安全授權(quán)(Local Security Authority , LSA)過程(lsass.exe)。
在開始登錄提示的時候,對Crtl+Alt+Del組合鍵進(jìn)行分析處理。
一個圖形化的識別和認(rèn)證組件收集用戶的帳號和密碼,然后將這些信息安全地傳送給LSA以進(jìn)行認(rèn)證處理。如果用戶提供的信息是正確的,能夠通過認(rèn)證,就允許用戶對系統(tǒng)進(jìn)行訪問。
要注意的是,如果您的計算機中,只有Administrator這一個用戶,那么在歡迎屏幕中就會顯示Administrator 用戶項。如果您的計算機中不僅有Administrator用戶,還有別的可以交互登錄的用戶,那么歡迎屏幕中就只顯示出Administrator之外的用戶,而不顯示Administrator用戶。
如果用戶希望以Administrator用戶登錄,該怎么辦呢?實際很簡單,直接在歡迎屏幕中按下兩次Crtl+Alt+Del組合鍵,即可打開標(biāo)準(zhǔn)的登錄窗口,可以再輸入Administrator 的用戶名和密碼,以便用最高管理員的身份登錄。
七、即插即用設(shè)備的檢測過程
對即插即用設(shè)備的檢測,實際上是和登錄過程異步進(jìn)行的。由系統(tǒng)固件、硬件、設(shè)備驅(qū)動和系統(tǒng)特性決定了Windows XP如何對新設(shè)備進(jìn)行檢測和枚舉。當(dāng)即插即用組件正常工作后,Windows XP會對新設(shè)備進(jìn)行檢測,為它們分配系統(tǒng)資源,并在盡量不要用戶提供選擇的情況下,為新設(shè)備安裝一個合適版本的驅(qū)動程序。
至此,Windows XP已成功啟動!!!
本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/trypsin/archive/2009/08/20/4466373.aspx