从开机加电到执行main函数之前的过程

从开机到main函数的执行分三步完成,目的是实现从启动盘加载操作系统程序,完成执行main函数所需要的准备工作。

  1. 启动BIOS,准备实模式下的中断向量表和中断服务程序。
  2. 从启动盘加载操作系统到内存,加载操作系统的工作就是利用第一步中准备的中断服务程序实现的。
  3. 为执行main函数做过渡工作。

启动BIOS,准备实模式下的中断向量表和中断服务程序

在加电的一瞬间,计算机的RAM(随机存储器)中是空的。软盘里虽然又操作系统程序,但CPU的逻辑电路只能运行内存中的程序,没办法直接从软盘里运行操作系统,如果要运行软盘中的操作系统,必须将软盘中的操作系统程序加载到内存(RAM)中。

RAM(Random Access Memory):随机存取存储器,常见的内存条就是一类RAM,其特点就是加电状态下可任意读、写,断电后信息消失。

说到这里,可能大家很迷糊,那么谁将软盘中的操作系统程序加载到RAM中的?答案是BIOS。下面来介绍BIOS的启动原理。

BIOS的启动原理

在加电的一瞬间,内存中什么也没有,没有任何程序在执行,更不可能有操作系统,更不可能有用户操作界面,我们没办法人为的去执行BIOS程序,也就是说软件办法不可能执行BIOS,就只能靠硬件方法来完成了。
从硬件的角度来看,CPU的硬件逻辑设计为加电瞬间将要执行的指令的内存地址放在一个指定的地址(BIOS程序的入口地址),当上电的一瞬间,当该位置上存在可执行代码,计算机将从这里的代码开始,沿着后续程序一直执行下去。也就是BIOS程序的第一条指令就设计在这个位置。

BIOS在内存中加载中断向量表和中断服务程序

BIOS程序被固化在计算机主板上一块很小的ROM芯片里。随着BIOS程序的执行,屏幕上会显示内存的信息等等,在这期间,有一项对启动(boot)操作系统至关重要的工作,就是BIOS在内存中建立中断向量表和中断服务程序。
BIOS程序在内存最开始的位置构建中断向量表,在紧挨着它的位置构建BIOS数据区,然后接着加载与中断向量表相对应的若干中断服务程序。
中断向量表的构建个中断服务子程序的加载

ROM(Read Only Memory):只读存储器。现在通常用内存芯片做ROM。虽然内存芯片在特定的条件下科协的,但是谈到主机板上存储BIOS的闪存芯片是,大家都把它看作ROM。ROM有一个特性,就是断电之后仍能保存信息,至一点和硬盘相似。

每一个中断向量表的入口都对应着相应的中断服务程序。

加载操作系统内核程序

这一步开始执行真正的boot操作,即将软盘中的操作系统程序加载至内存。

猜你喜欢

转载自blog.csdn.net/qq_40996117/article/details/107726070