操作系统引导

这一节回答一个”先有鸡还是先有蛋”的问题:操作系统本身是一个存放在磁盘上的程序,而”把程序从磁盘装入内存”这件事又是操作系统的功能。那么在操作系统还没被装进来之前,谁来装它?

答案是:一级一级地接力,每一级都只做一件事——把下一级装进来并交出控制权。

机制

引导的完整过程

① 激活 CPU。 加电后 CPU 被激活,它读取 ROM 中固化的引导程序,把指令寄存器置为 BIOS 的第一条指令,开始执行 BIOS。

这一步是整条链的起点,它必须由硬件写死——CPU 加电后从哪个地址取第一条指令,是电路层面固定的,不需要任何软件参与。

② 硬件自检。 启动 BIOS 后进行硬件自检,检查内存、显卡、键盘等基本设备是否正常。发现故障则报警并终止启动(这就是开机时那声”嘀”的来历)。

③ 加载带有操作系统的硬盘。 自检通过后,由 BIOS 中的启动管理器决定从哪个设备启动(硬盘、U 盘还是光驱),这就是 BIOS 设置里”启动顺序”的作用。

④ 加载主引导记录 MBR。 读入选定磁盘的第一个扇区,即主引导记录。MBR 中包含引导程序和分区表。

⑤ 扫描分区表,找到活动分区。 分区表记录了每个分区的起止位置,其中一个被标记为活动分区。

⑥ 加载分区引导记录 PBR。 读入活动分区的第一个扇区,即引导块。它的任务是在该分区的根目录下找到并激活用于引导操作系统的程序。

⑦ 加载启动管理器。 该程序负责真正把操作系统内核装入内存。

⑧ 加载操作系统。 内核被装入内存并开始执行,随后初始化内存管理、设备管理、进程管理等各种数据结构,最后创建第一个用户态进程,系统进入正常运行状态。

为什么要分这么多级

每一级的存在都是因为上一级”装不下”或”不知道”。

ROM 里的引导程序极小,因为 ROM 容量有限且不可更新——它只够做”跳到 BIOS”这一件事。

BIOS 不知道磁盘上装的是什么操作系统,也不认识文件系统的格式,它只会读第 0 号扇区——所以必须有 MBR 这个”约定位置”。

MBR 只有 512 字节,装不下一个能理解文件系统的程序,它只够做”查分区表、跳到活动分区”这一件事。

PBR 才与具体的文件系统配套(这正是 5.3.2 中”引导扇区产生于逻辑格式化”的原因),它能在这个分区的根目录里找到内核文件。

整条链的模式是一致的:每一级都只认识下一级的固定位置,逐步获得”理解更复杂结构”的能力。

边界

BIOS 不是操作系统

这是本节最基本的一条辨析。

BIOS 是固化在 ROM 中的固件(firmware),它在操作系统之前运行,负责硬件自检和把控制权交给引导程序。它不管理进程,不管理内存,不提供系统调用——它不具备操作系统的任何一项核心功能。

BIOS 的使命在操作系统内核开始运行的那一刻就结束了。

MBR 与 PBR 不是一回事

这一对与 4.3.2 的结论完全一致,此处从引导流程的角度再确认一遍:

MBR(主引导记录)在整个磁盘的第 0 号扇区,全盘只有一个,它管的是”有哪些分区、哪个是活动分区”。

PBR(分区引导记录,即引导块)在每个分区的第一个扇区,每个分区各有一个,它管的是”怎么把本分区的操作系统装起来”。

层级关系是:BIOS → MBR → 选出活动分区 → 该分区的 PBR → 启动管理器 → 操作系统内核。

引导程序为什么不能全放在 ROM 里

这一条在 5.3.2 已论证过,此处是同一结论的另一面:

ROM 是只读的,内容一旦固化就无法修改。 若把完整的引导程序放进去,操作系统一升级、引导逻辑一变,就得换芯片。

因此实际做法是把它拆成两段:ROM 中只放很小的、几乎永不改变的那一段(找到并读入磁盘上的引导程序);真正的引导程序放在磁盘上,可以随时改写。

这个”小的不变部分 + 大的可变部分”的模式,在计算机系统里反复出现——它的本质是把易变的东西挪到可写的介质上。

引导完成之前,操作系统的功能都还不存在

这一点在做题时容易忽略:引导过程中不能使用任何操作系统提供的服务。

没有文件系统——所以 BIOS 只能按扇区号读,不能按文件名读。没有内存管理——所以装载地址是写死的。没有进程——所以整个引导过程是一条单线程的指令流。

这些能力都是在第 ⑧ 步内核初始化各种数据结构之后才逐步具备的。 “创建第一个用户态进程”是引导结束的标志,从那一刻起系统才进入本课程后面四章所描述的那种状态。

对照速查

引导八步做什么
① 激活 CPU读 ROM 中的引导程序,跳到 BIOS
② 硬件自检检查内存、显卡、键盘;有故障则报警终止
③ 加载带有操作系统的硬盘启动管理器决定从哪个设备启动
④ 加载 MBR读磁盘第 0 号扇区,含引导程序 + 分区表
⑤ 扫描分区表找到活动分区
⑥ 加载 PBR读活动分区的第一个扇区
⑦ 加载启动管理器在根目录中找到内核
⑧ 加载操作系统内核初始化各数据结构,创建第一个用户态进程
易混数量位置管什么
MBR 主引导记录整盘 1 个磁盘第 0 号扇区有哪些分区、哪个是活动分区
PBR 分区引导记录(引导块)每分区 1 个分区第一个扇区装载本分区的操作系统
判断结论
BIOS 是不是操作系统不是,是固件;无进程、内存管理与系统调用
引导程序为何不全放 ROMROM 不可改写,升级要换芯片
引导过程中能否用文件系统不能,只能按扇区号读
引导结束的标志创建第一个用户态进程

考点

  • 引导八步的顺序,尤其 BIOS → MBR → 活动分区 → PBR → 启动管理器 → 内核
  • BIOS 是固件,不是操作系统
  • MBR 整盘一个(管分区表),PBR 每分区一个(管装载本分区的 OS)
  • ROM 只放很小的引导装入程序,完整引导程序在磁盘上,理由是可更新
  • 引导过程中无法使用任何操作系统服务,只能按扇区号读盘
  • PBR 与具体文件系统配套,因此产生于逻辑格式化

链接