计算机启动流程中,都干了啥事。比如文件挂在,操作系统加载,中断向量表加载,磁盘初始化在哪阶段。
建议在电脑上看,手机上格式有点问题,认真读,这方面没问题的,肝了一天。
目录.计算机启动详解
- 一.计算机启动直观图
- 二.步骤详解
- 前置准备
- 磁盘初始化
- 1.开机阶段
- 2.执行BIOS阶段
- 3.执行引导记录(MBR)阶段
- 4.操作系统加载与初始化
- 3.最终流程和关注重点
- 4.样例
一.计算机启动直观图
二.步骤详解
前置准备
在计算机启动前,需要进行磁盘等硬件设备的前置准备,并且这个一般是由商家完成再进行售卖,或者用户自己在硬盘装操作系统。
阶段 | 操作内容 | 是否在启动时发生 |
---|---|---|
物理初始化(低级格式化) | 划分磁道、扇区 | 否(出厂完成) |
分区 | 创建MBR/GPT分区表 | 否(用户手动操作) |
逻辑格式化(高级格式化) | 创建文件系统(如EXT4) | 否(安装系统时完成) |
启动时初始化 | 挂载已格式化的文件系统 | 是 |
注意:分区是用户手动操作,通常在操作系统安装之前或通过磁盘管理工具进行。因此,在正常的启动流程中,分区操作并不属于启动阶段的一部分,而是系统安装或维护时的操作
注意:逻辑格式化(高级格式化)通常由操作系统安装程序或用户手动使用工具(如mkfs)完成。安装系统时,安装程序会在分区后对分区进行格式化以创建文件系统。
注意:MBR分区的创建通常由用户使用分区工具(如fdisk)在安装操作系统时完成,或者由操作系统安装程序自动处理。这一步骤发生在操作系统安装阶段,而非日常启动流程中。特别注意操作系统安装是指,将操作系统写进磁盘的操作,而不是PBR进行操作系统加载到内存,注意区分。
磁盘初始化
步骤 | 执行者 | 操作内容 |
---|---|---|
物理初始化(低级格式化) | 硬盘制造商 | 划分磁道、扇区,标记物理地址 |
创建分区表(MBR/GPT) | 用户或安装程序(如fdisk) | MBR:划分主分区(最多4个)、扩展分区 |
逻辑格式化(高级格式化) | 用户或安装程序(如mkfs) | 创建文件系统(如EXT4/NTFS),初始化超级块、inode表、数据块位图。 |
写入引导程序 | 操作系统安装程序 | MBR:写入Stage 1引导代码(如GRUB)。 |
操作系统安装 | 安装程序 | 将操作系统文件写入格式化后的分区(如Windows的C盘、Linux的/分区)。 |
注意:创建分区表中的MBR与写入引导程序中的MBR区分
a.前者
这应该是指在初始化硬盘时创建MBR分区表的过程。当用户使用分区工具(如fdisk、gdisk等)对硬盘进行分区时,工具会在硬盘的第一个扇区写入MBR结构,其中包含分区表信息。这个过程属于磁盘分区阶段,主要目的是定义硬盘的逻辑分区结构,即哪些区域属于主分区、扩展分区等。
b.后者
这通常指的是在MBR的引导代码部分写入具体的引导程序(如GRUB的Stage 1),以便在启动时加载操作系统。这一步是在系统安装或配置引导程序时完成的,属于引导加载程序的安装阶段。
1.开机阶段
当按下电源按钮,电源供应器开始为各个硬件组件供电。此时,CPU重置,从固定的内存地址开始执行代码。这个阶段主要涉及硬件初始化,但还没有进入BIOS或UEFI代码的执行。
a.电源接通:主板、CPU、内存等硬件开始供电。
b.CPU重置:CPU从固定地址(如x86的0xFFFF0)开始执行代码(BIOS入口)。
c.时钟与总线初始化:主板芯片组初始化时钟信号和总线协议(如PCIe)。
2.执行BIOS阶段
BIOS(Basic Input Output System基本输入输出系统)存储在主板上的ROM中,CPU在重置后会跳转到BIOS的入口地址(通常是0xFFFF0),BIOS负责进行POST(Power-On Self Test)。
CPU重置后PC指向的内存地址就是BIOS,且是ROM内存(ROM和RAM一起编制组成内存)。此后CPU开始按照该内存地区中的指令一步步执行,如检测硬件设备如内存、硬盘、键盘等是否正常。POST完成后,BIOS会按照预设的启动顺序(Boot Order)查找可启动设备(如硬盘)。:
a.硬件检测:检查内存、硬盘、键盘等关键设备是否正常,异常则通过蜂鸣器或屏幕提示报错。
b.中断初始化:初始化中断向量表(如INT 0x19用于加载引导程序)。
c.读取CMOS设置:按预设启动顺序(Boot Order)查找可启动设备(如硬盘、USB)。
d.加载引导扇区:从选中设备的第一个扇区(磁盘中的MBR)读取512字节到内存0x7C00。
注意:中断向量表(IVT)是计算机中用于处理中断和异常的数据结构,记录了每个中断号对应的处理程序地址。在启动过程中,BIOS阶段会初始化中断向量表,以便硬件中断能被正确处理。
3.执行引导记录(MBR)阶段
BIOS找到启动设备后,会读取该设备的第一个扇区(即MBR,主引导记录),大小为512字节。MBR包含引导加载程序(引导加载PBR用的)和分区表。引导加载程序的任务是加载更复杂的引导程序(活动分区中的PBR),或者直接加载操作系统内核,然后将控制权交给操作系统。分区表则是记录了硬盘的分区信息。
当CPU执行完BIOS程序之后,MBR内容已经载内存中了,CPU随之解析其内容并执行其一些列指令,如加载操作系统:
a.解析MBR结构
引导代码(446字节):加载并执行后续引导程序PBR用的。
分区表(64字节):定义4个主分区信息(起始扇区、大小、类型等)。
签名(2字节0x55AA):验证MBR有效性。
b.引导加载程序(用于加载PBR)
加载第二阶段引导程序PBR,或直接加载操作系统内核。
切换至保护模式:设置GDT(全局描述符表)和IDT(中断描述符表)。
传递内核参数:如根文件系统位置(root=/dev/sda1)。
注意:PBR(分区引导记录)位于每个分区的第一个扇区,用于加载该分区内的操作系统。
注意:MBR中存储的是用于引导加载PBR的引导程序,即操作系统的引导过程由MBR中的引导代码启动,然后跳转到活动分区的PBR执行进一步引导。
注意:
4.操作系统加载与初始化
当MBR中的引导程序将PBR引导程序加载到内存时候,CPU会执行PBR中的一系列指令完成对操作系统的加载和初始化。
a.内核加载与初始化
内核加载:引导程序将内核映像(如vmlinuz)加载到内存.
内核初始化:
1.初始化关键数据结构:GDT/IDT(定义内存段和中
断处理程序),页表(启用分页机制)。
2.硬件探测与驱动加载:识别CPU、内存、磁盘控制
器等,加载驱动程序。
3.根文件系统挂载:根据引导参数挂载根分区。
b.用户空间初始化
启动init进程:内核启动第一个用户进程(PID=1)。
执行初始化脚本:如挂载文件系统,启动系统服务。
登录界面就绪:启动显示管理器。
注意:MBR负责全局引导,PBR负责分区内引导。如此处就是MBR引导某分区PBR(通常为C盘),C盘中的活动分区PBR引导加载此盘中的操作系统。
3.最终流程和关注重点
开机上电 → BIOS阶段(初始化IVT) → 加载MBR → 执行MBR引导代码 → 跳转至活动分区的PBR → 加载操作系统内核(挂载文件系统) → 系统启动完成
这部分还未完善,后续做题后补充。
4.样例
后续我会做408真题,再写。