windows操作系統的啟動過程詳解
Windows 操作系統的啟動過程較為復雜,以下是常見的啟動流程,其中涉及到傳統 BIOS+mbr 以及 UEFI+gpt 兩種引導方式:
UEFI+gpt 引導方式(以 win10 系統為例)
- 按下電源鍵后,電源向主板以及其它設備供電,剛開始電壓不穩,主板會持續發送 reset 信號給 CPU,CPU 執行初始化。當電壓穩定后,主板停止發送 reset 信號,CPU 開始執行指令;
- CPU 讀取 UEFI 指令,執行 UEFI 初始化,并執行其它設備的初始化;
- 查找 EFI 分區,該分區不需要一定是第一個分區;
- 加載 \efi\boot\bootx64.efi,在安裝 Windows 時實際上會使用 \efi\microsoft\boot\bootmgfw.efi 的內容替換到 \efi\boot\bootx64.efi,所以 \efi\boot\bootx64.efi 其實就是 \efi\microsoft\boot\bootmgfw.efi;
- bootmgfw.efi 會讀取 BCD 文件,BCD 是一個數據庫文件,如果包含多個系統,其信息會包含在 BCD 中,并通過顯示一個系統列表供用戶選擇;
- BCD 中包含每個系統的引導文件的路徑,Windows 的是 \windows\system32\winload.efi,加載到內存中并執行;
- winload.efi 讀取 \windows\bootstat.dat 文件,有需要則顯示引導菜單,比如安全引導等;接著加載內核程序 ntoskrnl.exe,相關輔助 hal.dll、ci.dll、psshed.dll、bootvid.dll,把 CPU 執行權交給內核程序;
- 內核程序執行系統初始化。
BIOS+mbr 引導方式(以 win7 等系統為例)
- 上電并穩定后,CPU 執行地址 0xffff0h 處指令,此處為 BIOS 程序;
- BIOS 進行硬件自檢,沒有問題后加載硬盤的第一個扇區(即主引導記錄 MBR)到內存 0x7c00h 處,MBR 包含執行程序和分區表;
- CPU 開始執行 MBR 程序,查找第一個活動分區,把活動分區的第一個扇區(即分區引導記錄 PBR)加載到內存中;
- CPU 開始執行 PBR,第一個指令就是跳過 BPB(BIOS 參數塊)到可執行代碼處,BPB 包含較多參數,如族的大小、主文件表(MFT)記錄大小、MFT 位置等,用于讀取 NTFS 文件;
- PBR 讀取卷引導記錄(VBR,占用分區開始的 16 扇區)剩余的 15 扇區到內存中;接著 CPU 跳轉到 0x07c0:027a 處,執行 BOOTMGR 代碼(第二個扇區中);
- 開始尋找 BOOTMGR.exe,找不到則尋找 ntldr.exe(Windows Vista 之前的系統);
- CPU 加載并跳轉到 BOOTMGR.exe 處執行,讀取 BCD 文件,如果含有多個系統,則列舉顯示供用戶選擇;
- 選擇的是 Windows 則讀取 winload.exe 文件到內存中,CPU 跳轉到 winload.exe 處執行,讀取文件 \windows\bootstat.dat,有需要則顯示引導菜單,比如安全引導等;接著加載內核程序 ntoskrnl.exe,相關輔助 hal.dll、ci.dll、psshed.dll、bootvid.dll,把 CPU 執行權交給內核程序;
- 內核程序執行系統初始化。
在啟動計算機的過程中,難免會遇到各種各樣的問題,比如藍屏、黑屏等等,了解啟動流程將有利于對各類故障進行排查和修復。
如果你想查看自己的計算機是什么引導方式,可以在 “此電腦” 上右鍵選擇 “管理”,彈出 “計算機管理” 后選擇 “磁盤管理”,如果能找到一個 “EFI 系統分區”,那么就是 UEFI 引導方式;如果沒有找到 “EFI 系統分區”,則可能是 BIOS+mbr 引導方式。但具體情況可能因計算機配置和系統設置而有所不同。

