网站首页 > 编程文章 正文
Windows引导过程
Windows作为最流行的个人计算机操作系统,成为了我们学习、工作和生活的一部分。平时使用计算机,我们都得先按下电源键然后等待Windows启动,初始化,进入欢迎页面,启动完成。会不会觉得整个过程比较神奇,想一探究竟?其实整个启动过程经历了多个阶段,接下来小编将一一讲述每一个阶段,揭开它们神秘的面纱。
通电后CPU首先执行的是主板引导程序,主板引导程序可分为BIOS和UEFI。BIOS是最早的方案,搭配MBR分区使用,BIOS逐渐被UEFI代替,UEFI一般搭配GPT分区使用,所以引导过程会有两种情况:
- BIOS + MBR
- UEFI + GPT
这两种情况都会分别介绍。
UEFI
UEFI(Unified Extensible Firmware Interface)以灵活扩展、引导更省时等特性,成为了BIOS的替代方案,新推出的主板和操作系统基本上默认使用UEFI引导,小编Win10系统采用的就是UEFI引导。
如何查看自己的计算机是什么方式引导的?
在“此电脑”上右键选择“管理”,弹出“计算机管理”选择“磁盘管理”,如果能找到一个“EFI系统分区”,那么就是UEFI引导方式了。
UEFI一般搭配GPT分区技术使用,虽然也可以搭配MBR,但是由于MBR磁盘容量最大只能是2TB,在磁盘容量越来越大的今天略显不足,所以默认都是使用GPT分区技术。GPT可以做到:
- 支持容量超过2TB的磁盘;
- 使用16字节的GUID标识分区类型,不容易冲突;
- 理论上分区数目不限制(受限于Windows只能最多识别128个分区);
- 分区容量几乎没有限制,因为使用64位整数,64位整数最大值为2^64 - 1,数值非常大;
- 提供CRC检验,检测数据损坏;
- 备份分区表,提高可靠性。
引导流程
1.按下电源键,电源向主板以及其它设备供电,刚开始电压不稳,主板会持续发送RESET信号给CPU,CPU执行初始化。当电压稳定后,主板停止发送RESET信号,CPU开始执行指令;
2.CPU读取UEFI指令,执行UEFI初始化,执行其它设备的初始化;
3.查找EFI分区,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.内核程序执行系统初始化。
通过上面的流程可知道,引导相关的文件都存放在EFI系统分区中,下图是小编win10的EFI系统分区的一些文件:
BIOS
BIOS(Basic Input Output System)是最早的引导方案并使用了相当长的一段时间,所以在Win8、Win7、WinXP以及更早的版本都能找到BIOS的引导存在。BIOS只支持MBR分区技术,所以GPT并不适合BIOS。
引导流程
1.上电并稳定后,CPU执行地址0xFFFF0h处指令,此处为BIOS程序;
2.BIOS进行硬件自检,没有问题后加载硬盘的第一个扇区到内存0x7c00h处,第一个扇区为MBR(Master Boot Record),MBR包含执行程序和分区表;
3.CPU开始执行MBR程序,查找第一个活动分区,把活动分区的第一个扇区加载到内存中,活动分区第一个扇区为PBR(Partition Boot Record);
4.CPU开始执行PBR,第一个指令就是跳过BPB(BIOS Parameter Block)到可执行代码处;BPB包含比较多参数,有族的大小、MFT记录大小、MFT位置等,用于读取NTFS文件;
5.PBR读取VBR(Volume BootRecord,占用分区开始的16扇区)剩余的15扇区到内存中;接着CPU跳转到0x07C0:027A处,执行BOOTMGR代码(第二个扇区中);
6.开始寻找bootmgr.exe,找不到则寻找ntldr.exe(win 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.内核程序执行系统初始化。
可见BIOS引导更多的是通过MBR去引导系统,UEFI则主导整个引导过程。
结束语
在启动计算机的过程中,难免会遇到各种各样的问题,比如蓝屏、黑屏等等,掌握了其启动的流程,将有利于我们对各类故障进行排查和修复。
以上就是关于今天的全部内容,下期将给大家带来《容器如何使用tini作为启动进程》,敬请期待~
猜你喜欢
- 2024-10-21 过完剁手节来看微软的免费影子系统如何使用
- 2024-10-21 Windows 10之七种快速打开任务管理器方法
- 2024-10-21 Windows常见系统进程你知道多少(电脑系统进程有哪些)
- 2024-10-21 深刻了解windows系统的任务管理器,电脑高手的成长之路
- 2024-10-21 U盘装机常见问题大集结!从此装机不求人
- 2024-10-21 Win7找不到taskmgr.exe文件怎么办?
- 2024-10-21 玩转Win10任务管理器技巧大全(玩转win10任务管理器技巧大全)
- 2024-10-21 微软,骚还是你骚啊(你好骚啊是即兴)
- 2024-10-21 windows系统启动不了,怎么办?一招轻松搞定!
- 2024-10-21 win7电脑系统常见的启动故障(win7启动失败怎么办)
你 发表评论:
欢迎- 05-09Spring Boot3 RESTful 接口参数校验,这篇吃透就够了!
- 05-09《Spring6》第02节:基于XML方式搭建Spring6框架开发环境
- 05-09MapStruct架构设计(mapstruct @mapping)
- 05-09分布式微服务架构组件(分布式微服务架构设计)
- 05-09Java Swing组件下的JButton实例(java swing 组件)
- 05-09java基础都在这了,小主们拿去吧(java基础是指什么)
- 05-09AOP的实现落地(拦截过滤),一切都要从Servlet说起
- 05-09【Spring Boot】WebSocket 的 6 种集成方式
- 最近发表
-
- Spring Boot3 RESTful 接口参数校验,这篇吃透就够了!
- 《Spring6》第02节:基于XML方式搭建Spring6框架开发环境
- MapStruct架构设计(mapstruct @mapping)
- 分布式微服务架构组件(分布式微服务架构设计)
- Java Swing组件下的JButton实例(java swing 组件)
- java基础都在这了,小主们拿去吧(java基础是指什么)
- AOP的实现落地(拦截过滤),一切都要从Servlet说起
- 【Spring Boot】WebSocket 的 6 种集成方式
- Java 中五种最常见加密算法:原理、应用与代码实现
- 用注解进行参数校验,spring validation介绍、使用、实现原理分析
- 标签列表
-
- spire.doc (59)
- system.data.oracleclient (61)
- 按键小精灵源码提取 (66)
- pyqt5designer教程 (65)
- 联想刷bios工具 (66)
- c#源码 (64)
- graphics.h头文件 (62)
- mysqldump下载 (66)
- sqljdbc4.jar下载 (56)
- libmp3lame (60)
- maven3.3.9 (63)
- 二调符号库 (57)
- 苹果ios字体下载 (56)
- git.exe下载 (68)
- diskgenius_winpe (72)
- pythoncrc16 (57)
- solidworks宏文件下载 (59)
- qt帮助文档中文版 (73)
- satacontroller (66)
- hgcad (64)
- bootimg.exe (69)
- android-gif-drawable (62)
- axure9元件库免费下载 (57)
- libmysqlclient.so.18 (58)
- springbootdemo (64)
本文暂时没有评论,来添加一个吧(●'◡'●)