第二章. 把你的操作系统引导起来
作者:易昭华
什么是操作系统的引导过程?
所谓操作系统的引导过程是将存放在硬盘上的静态的操作系统装载到内存中,并开始执行操作系统的过程。操作系统的整个引导过程应该从计算机上电开始,分为以下几个大步骤:
引导过程的原理与过程
上电
上电是指按下计算机的电源按钮让计算机开始加电运行。这个过程与计算机的硬件电路关系非常密切,因为计算机加电的第一个状态是由硬件电路决定的,加电后第一个状态主要由计算机处理器(CPU)生产商决定,对于x86系列的CPU,一加电就将指令寄存器设置为:0ffff:0000,表示CPU开始从0ffff:0000这个内存中取出一条指令执行,通常在0ffff:0000处是一条地址转跳指令,转向BIOS的入口。由于BIOS是固化在内存中的,所以,一加电后,CPU可以直接读取BIOS中的指令。
自检
进入BIOS后,BIOS的主要功能包括以下两项:第一项功能是进行计算机自检,第二项功能是加载引导扇区。BIOS进行自检的工作主要是检查计算机是否出现异常,是否可以继续运行下去,这一部分与引导过程本身关系不大,它只是引导过程中的一个步骤,BIOS中与引导关系密切的是上面提到的BIOS的第二项功能,即加载引导扇区,这一项工作的主要内容是把磁盘的引导扇区的内容加载到内存中来,并且转跳到引导程序的第一条指令。
加载引导扇区
硬盘与软盘都有引导扇区,引导扇区就是软盘或硬盘的第一个逻辑扇区,即软盘或硬盘的第0个磁头第0个磁道第1个扇区。软盘的结构比硬盘简单,在软盘上,一般只有一个分区,也就是可以装载一个操作系统,所以在软盘的第一个逻辑扇区就可以把操作系统加载到内存中,而硬盘则不同,由于硬盘的总容量比较大,所以硬盘被分为几个分区,理论上讲每个分区都可以安装一个操作系统,所以在每个分区上都有一个用于加载本分区的引导扇区,因此硬盘的引导扇区比软盘复杂,它不是立即加载操作系统而是加载分区上的引导扇区,然后由分区上的引导扇区加载本分区上的操作系统。在本文以软盘的引导扇区为例来介绍。
软盘的引导扇区是软盘的第一个逻辑扇区,当BIOS的自检过程结束以后,根据BIOS的规范,它下一步要做的工作就是把指定的引导设备(软盘、硬盘、光盘等)上的第一个扇区的内容加载到内存中,并且转跳到加载后的引导扇区的第一条指令。因此我们在开发操作系统引导程序的时候,只要将引导程序直接写如第一个逻辑扇区就可以了,BIOS会自动把它加载到内存中。
加载操作系统
对于软盘来讲,引导扇区中的引导程序就是用于加载操作系统。所谓加载操作系统,也就是把操作系统从磁盘拷贝到内存。因此引导程序首先必须知道操作系统在磁盘的位置,由于此时还没有文件系统,这时引导程序必须通过绝对位置来访问,也就是操作系统在磁盘的开始扇区和结束扇区。操作系统在磁盘的位置与操作系统的安装程序有关,操作系统的安装程序把操作系统从安装盘拷贝到计算机的磁盘上,引导程序把操作系统从磁盘拷贝到内存。
运行操作系统
引导程序把操作系统拷贝到内存后所要做的第一件事就是转跳到操作系统的第一条指令,这样,操作系统就开始运行了。
如何使操作系统引导起来?
要使操作系统引导起来,包括下面的环节: