系统启动流程

系统启动流程

操作系统是存储在磁盘中的,那计算机是如何启动操作系统,并执行它的代码呢?

为了了解操作系统的启动流程,首先介绍一些基本的概念。

一、基本概念

1.1 BIOS

在计算机主板上,有一个称为基本输入输出系统(Basic Input Output System,BIOS)的固件(即写入到硬件的软件程序)。

BIOS 是计算机系统在启动过程中主动执行的第一个程序。

1.2 扇区

磁盘上可以分为扇区(Sector)和磁道(Track)2种单位,其中扇区的物理大小设计有2种,分别是512字节和4K字节。

早期磁盘的第一个扇区(旧磁盘扇区都是512字节)里面含有重要的信息,它里面包括了2个信息:

  • 主引导记录(Master Boot Record,MBR):可以安装启动引导程序的地方,有446字节;
  • 分区表(partition table):用于记录整块磁盘的分区情况,有64字节。

1.3 MBR

主引导记录(Master Boot Record,MBR)是安装启动引导程序的地方,可以用于加载操作系统核心文件,从而启动操作系统。

例如,在电脑安装双系统以后,启动计算机时,经常可以看到系统选择菜单,询问我们选择启动哪个系统,这个选择程序就是启动引导程序。

1.4 分区表

分区表主要用于记录磁盘分区的状态,它仅有64字节,因此最多仅能记录4组记录,每组记录区记录了该区段的起始与结束的柱面号码。

  • 分区只是针对那64个字节的分区表进行设置
  • 分区表仅能写入4组分区信息
  • 分区的最小单位是柱面(Cylinder)
  • 分区类型只有2种:主要(Primary)分区和扩展(Extended)分区
  • 主要分区和扩展分区最多只能4个
  • 扩展分区最多只能有1个(操作系统限制)
  • 主要分区不能再继续分区
  • 扩展分区可以进一步分为更细的分区,这些分区称为逻辑分区(logical partition)

例如:

64字节分区表

分区 柱面
P1 1 ~ 100(Primary)
P2 101 ~ 200(Primary)
P3 201 ~ 300(Primary)
P4 301 ~ 400(Extended)

扩展分区记录

分区 柱面
L1 301 ~ 330
L2 331 ~ 360
L3 361 ~ 400

1.5 DBR

实际上启动引导程序除了可以安装在MBR以外,还可以安装在每个分区的启动扇区(boot sector)中,这个扇区称为分区引导扇区(DOS Boot Record,DBR)。

DBR和MBR是比较类似的,MBR是整个磁盘的第一个扇区,而DBR则是分区的第一个扇区,它们都可以安装启动引导程序。

就比如说,整个磁盘分成了4个分区,分区情况如下:

分区 柱面
P1 1 ~ 100(Primary)
P2 101 ~ 200(Primary)
P3 201 ~ 300(Primary)
P4 301 ~ 400(Primary)

那么,对于整个磁盘来说,MBR就位于0号扇区上,每个分区的DBR则分别位于1号、101号、201号和301号扇区上。

二、启动流程

计算机的启动流程大致是这样的:

  1. BIOS:检查设备情况,并决定第一个可启动的设备
  2. MBR:识别可启动设备的第一个扇区内的主引导记录,执行启动引导程序
  3. 启动引导程序:读取内核文件,或者执行下一个启动引导程序
  4. 内核文件:启动操作系统

2.1 BIOS

在计算机启动时,首个执行的程序就是 BIOS,它的主要作用包括:

  • 检查所安装的RAM数量
  • 检测键盘、鼠标和其他基本设备是否已安装并正常响应
  • 扫描总线并找出连在上面的所有设备
  • 读取存储在CMOS存储器中的设备清单,并决定启动设备
  • 读入启动设备的第一个扇区,识别主引导记录和分区表,并执行其中包含的启动引导程序

2.2 MBR

在BIOS执行的最后,会读取启动设备的主引导记录MBR,并开始执行其中的启动引导程序,此时BIOS就完成了它的任务,接下来就交给启动引导程序了。

启动引导程序的作用主要包括:

  • 加载内核文件
  • 转交给其他启动引导程序

1)加载内核文件

实际上就是加载操作系统文件,加载完成之后,就可以直接启动操作系统了,同时启动引导程序的任务也就完成了。

2)转交给其他启动引导程序

由于启动引导程序不仅可以安装在MBR上,还可以安装在DBR上。因此在某些情况下,MBR的启动引导程序可以将执行权转交给DBR中的启动引导程序。

就比如说,磁盘分为4个分区:

分区 柱面
P1 1 ~ 100(Primary)
P2 101 ~ 200(Primary)
P3 201 ~ 300(Primary)
P4 301 ~ 400(Primary)

假如P1和P2分区分别安装了Windows和Linux。那么启动过程中首先会执行MBR的启动引导程序,如果此时MBR启动引导程序提供了2个选项:

  • 选项一 直接加载P1分区的Windows内核文件
  • 选项二 转交给P2分区的DBR的启动引导程序

当选择了选项二,那么MBR启动引导程序就会加载P2分区的DBR,并执行DBR的启动引导程序,然后剩下的事就交给DBR的启动引导程序了。

这其实就是多重引导的工作原理,首先执行的肯定是MBR的启动引导程序,然后通过切换到DBR的启动引导程序,来实现多个操作系统的切换。

2.3 启动引导程序

启动引导程序的目的在于加载内核文件,它会识别磁盘内的文件系统格式,从而读取内核文件,启动操作系统。

作者

jiaduo

发布于

2022-04-03

更新于

2023-07-16

许可协议