操作系统启动过程

操作系统的启动过程大致可以分为以下几步:

  1. 启动 BIOS。进行硬件自检和初始化。
  2. 系统引导。找到操作系统。
  3. 启动系统。
  4. 初始化系统。

1 启动 BIOS

BIOS,Basic Input/Output System,基本输入输出系统。

早期的 BIOS 存储在内存的 ROM 中,不会断电消失;现在大多存储在内存的闪存(Flash Memory)中。

BIOS 程序执行过程有以下几步:

1.1 供电初始化

按下电源开关后,电源就开始给主板和其他设备供电,CPU 会把所有寄存器的值都设为默认值,即恢复初始状态。随后 CPU 会执行初始位置的指令,跳转到 BIOS 启动代码位置,开始启动 BIOS。

1.2 POST 硬件自检

BIOS 首先进行 POST(Power On Self Test,硬件自检),检查计算机硬件是否满足运行的基本条件,并完成相应的初始化工作。如果发现了问题,主板会发出不同的蜂鸣声表示不同的问题。

1.3 搜索可引导的存储设备

BIOS 按照启动顺序开始搜索可引导的存储设备,找到后,会将存储设备中的引导扇区读入物理内存,并执行引导扇区中的程序,开始系统引导。

BIOS 是按照顺序依次搜索可引导的存储设备的,这个顺序就叫启动顺序(Boot Sequence),可以在 BIOS 中进行查看和修改。

至此,BIOS 的工作就完成了。BIOS 所实现的功能可以简单地概括为以下几点:

  • 检测硬件设备并完成相应的初始化
  • 读入存储设备中的引导扇区,准备开始引导工作。

接下来以最常见的硬盘启动为例进行说明。

2 系统引导

2.1 读取 MBR

读取并执行硬盘的第一个扇区,即 MBR(Master Boot Record,主引导记录,大小为 512 字节)。其作用为告诉计算机到硬盘的哪一个位置去找操作系统。MBR 的结构如下:

  • 第1-446 字节:调用操作系统的机器码,可以被 CPU 直接执行。
  • 第 447-510 字节:分区表(Partition Table),将硬盘分为了若干个分区。
  • 第 511-512 字节:记录签名(0x55 和 0xAA),表示设备可以用于启动。

2.2 查找活动分区

搜索 MBR 中的分区表,找到唯一的活动分区(Active Partition),并将活动分区的第一个扇区中的引导扇区(称为“卷引导记录”,Volume Boot Record,VBR)读入内存,就能找到操作系统在这个分区中的位置。然后,计算机就会开始加载操作系统了。

分区表的长度只有 64 个字节,里面又分成四项,每项 16 个字节。所以,一个硬盘最多只能分四个主分区,但是可以将一个主分区作为扩展分区(扩展分区最多只有一个),并扩展成多个逻辑分区。一个主分区可以安装一个操作系统,像常见的 Windows 系统,C盘、D盘就是对应的一个个分区,而操作系统默认就是安装在 C 盘的。

3 启动系统

由于一台计算机中可以安装多个操作系统,所以启动系统时也会有不同的情况。当有多个操作系统时,会运行启动管理器(Boot Loader),让用户选择启动操作系统;当只有一个操作系统时,就会直接从激活分区中启动操作系统(当然也可以选择将控制权交给启动管理器,boot loader 可以存在 MBR 中,也可以存在主分区的引导扇区中)。

4 初始化系统

操作系统启动后,控制权就从 boot loader 转交给了操作系统,之后,操作系统的内核首先被载入缓存,随后会运行初始化进程进行操作系统的初始化。

至此,整个计算机的启动过程就完成了。

你可能感兴趣的:(操作系统,linux,运维,服务器,操作系统)