Windows的啟動過程包括以下幾個階段:
啟動自檢階段
這個階段主要是讀取 BIOS ,然後記憶體,CPU,硬碟,鍵盤等裝置進行自檢。這個階段在螢幕上顯示就是自檢的那些列印資訊。
螢幕顯示:自檢的列印資訊
初始化啟動階段
這個階段根據 BIOS 指定的啟動順序,找到可以啟動的優先啟動裝置,比如本地磁碟,CD Driver , USB 裝置等等,然後準備從這些裝置啟動系統。
螢幕顯示:黑屏
Boot 載入階段
這個階段首先從開機磁碟分割(比如 C 盤) 載入 Ntldr ,然後Ntldr 做如下設定:
1.內建記憶體模式,如果是 x86 的處理器,並且作業系統是 32位,則設定為 32-bit flat memory mode,如果是 64 位元作業系統 + 64位處理器,則設定為64位記憶體模式。
2.開機檔案系統
3.讀取 boot.ini 檔案
螢幕顯示:黑屏,如果按F8或者多系統時會顯示啟動選項菜單。
檢測和配置硬體階段
這個階段檢查和配置一些硬體裝置,它們分別是:
—系統韌體,比如時間和日期
—匯流排和適配器
—顯示適配器
—鍵盤
—通訊連接埠
—磁碟
—磁碟片
—輸入裝置(如滑鼠)
—並口
—在ISA匯流排上啟動並執行裝置
螢幕顯示:黑屏
核心載入階段
在核心載入階段,Ntldr 將首先載入Windows核心 Ntoskrnl.exe 和 硬體抽象層 (HAL). HAL 有點類似於嵌入式作業系統下的BSP(Borad support package),這個抽象層對硬體底層的特性進行隔離,對作業系統提供統一的調用介面,作業系統移植到不同硬體時只要改變相應的 HAL 就可以,其它的核心組件不需要修改,這個是作業系統通常的設計模式。
接下來Ntldr 從HKEY_LOCAL_ MACHINESYSTEMCurrentControlSet 下讀取這台機器安裝的驅動程式,然後依次載入驅動程式。
驅動程式載入完成後,Windows做如下設定:
1. 建立系統內容變數
2. 啟動 win32.sys ,這個是Windows子系統的核心模式部分。
3. 啟動 csrss.exe,這個是Windows子系統的使用者模式部分。
4. 啟動 winlogon.exe
5. 建立虛擬記憶體分頁檔
6. 對一些必要的檔案進行改名,(主要是驅動檔案,如果更新後,需要在下次重啟前改名)
螢幕顯示:顯示Windows logo 介面和進度條
登入階段
這個階段會做如下幾件事:
1. 啟動機器上安裝的所有需要自動啟動的Windows服務
2. 啟動本地安全認證 Lsass.exe
3. 顯示登入介面
螢幕顯示:顯示登入介面