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