系统启动流程
系统启动流程
操作系统是存储在磁盘中的,那计算机是如何启动操作系统,并执行它的代码呢?
为了了解操作系统的启动流程,首先介绍一些基本的概念。
一、基本概念
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号扇区上。
二、启动流程
计算机的启动流程大致是这样的:
- BIOS:检查设备情况,并决定第一个可启动的设备
- MBR:识别可启动设备的第一个扇区内的主引导记录,执行启动引导程序
- 启动引导程序:读取内核文件,或者执行下一个启动引导程序
- 内核文件:启动操作系统
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 启动引导程序
启动引导程序的目的在于加载内核文件,它会识别磁盘内的文件系统格式,从而读取内核文件,启动操作系统。