windows操作系统的启动过程详解

windows操作系统的启动过程详解

Windows 操作系统的启动过程较为复杂,以下是常见的启动流程,其中涉及到传统 BIOS+mbr 以及 UEFI+gpt 两种引导方式:
UEFI+gpt 引导方式(以 win10 系统为例)

  1. 按下电源键后,电源向主板以及其它设备供电,刚开始电压不稳,主板会持续发送 reset 信号给 CPU,CPU 执行初始化。当电压稳定后,主板停止发送 reset 信号,CPU 开始执行指令;
  2. CPU 读取 UEFI 指令,执行 UEFI 初始化,并执行其它设备的初始化;
  3. 查找 EFI 分区,该分区不需要一定是第一个分区;
  4. 加载 \efi\boot\bootx64.efi,在安装 Windows 时实际上会使用 \efi\microsoft\boot\bootmgfw.efi 的内容替换到 \efi\boot\bootx64.efi,所以 \efi\boot\bootx64.efi 其实就是 \efi\microsoft\boot\bootmgfw.efi;
  5. bootmgfw.efi 会读取 BCD 文件,BCD 是一个数据库文件,如果包含多个系统,其信息会包含在 BCD 中,并通过显示一个系统列表供用户选择;
  6. BCD 中包含每个系统的引导文件的路径,Windows 的是 \windows\system32\winload.efi,加载到内存中并执行;
  7. winload.efi 读取 \windows\bootstat.dat 文件,有需要则显示引导菜单,比如安全引导等;接着加载内核程序 ntoskrnl.exe,相关辅助 hal.dll、ci.dll、psshed.dll、bootvid.dll,把 CPU 执行权交给内核程序;
  8. 内核程序执行系统初始化。

BIOS+mbr 引导方式(以 win7 等系统为例)
  1. 上电并稳定后,CPU 执行地址 0xffff0h 处指令,此处为 BIOS 程序;
  2. BIOS 进行硬件自检,没有问题后加载硬盘的第一个扇区(即主引导记录 MBR)到内存 0x7c00h 处,MBR 包含执行程序和分区表;
  3. CPU 开始执行 MBR 程序,查找第一个活动分区,把活动分区的第一个扇区(即分区引导记录 PBR)加载到内存中;
  4. CPU 开始执行 PBR,第一个指令就是跳过 BPB(BIOS 参数块)到可执行代码处,BPB 包含较多参数,如族的大小、主文件表(MFT)记录大小、MFT 位置等,用于读取 NTFS 文件;
  5. PBR 读取卷引导记录(VBR,占用分区开始的 16 扇区)剩余的 15 扇区到内存中;接着 CPU 跳转到 0x07c0:027a 处,执行 BOOTMGR 代码(第二个扇区中);
  6. 开始寻找 BOOTMGR.exe,找不到则寻找 ntldr.exe(Windows Vista 之前的系统);
  7. CPU 加载并跳转到 BOOTMGR.exe 处执行,读取 BCD 文件,如果含有多个系统,则列举显示供用户选择;
  8. 选择的是 Windows 则读取 winload.exe 文件到内存中,CPU 跳转到 winload.exe 处执行,读取文件 \windows\bootstat.dat,有需要则显示引导菜单,比如安全引导等;接着加载内核程序 ntoskrnl.exe,相关辅助 hal.dll、ci.dll、psshed.dll、bootvid.dll,把 CPU 执行权交给内核程序;
  9. 内核程序执行系统初始化。

在启动计算机的过程中,难免会遇到各种各样的问题,比如蓝屏、黑屏等等,了解启动流程将有利于对各类故障进行排查和修复。
如果你想查看自己的计算机是什么引导方式,可以在 “此电脑” 上右键选择 “管理”,弹出 “计算机管理” 后选择 “磁盘管理”,如果能找到一个 “EFI 系统分区”,那么就是 UEFI 引导方式;如果没有找到 “EFI 系统分区”,则可能是 BIOS+mbr 引导方式。但具体情况可能因计算机配置和系统设置而有所不同。

windows操作系统的启动过程详解

看过该文章的人还看了