第1章 从开机加电到执行main函数之前的过程
从开机到main函数的执行分三步完成,其目的是实现从启动盘加载操作系统程序,完成执行main函数所需要的准备工作。第一步,启动BIOS,准备实模式下的中断向量表和中断服务程序;第二步,从启动盘加载操作系统程序到内存,加载操作系统程序的工作就是利用第一步中准备的中断服务程序实现的;第三步,为执行32位的main函数做过渡工作。本章将详细分析这三步在计算机中是如何完成的,以及每一步在内存中都做了些什么。
小贴士
实模式(Real mode)是Intel 80286和之后的80x86兼容CPU的操作模式。实模式的特性是一个20位的存储器地址空间(2^20=1048576,即1MB的存储器可被寻址),可以直接通过软件的方式访问BIOS以及周边硬件,没有硬件支持的分页机制和实时多任务的概念。从80286开始,所有的80x86 CPU的开机状态都是实模式;8086等早期的CPU只有一种操作模式,类似于实模式。
1.1 启动BIOS,准备实模式下的中断向量表和中断服务程序
相信大家都知道计算机必须安装一个所谓“操作系统”的软件才能使用,否则计算机将是一个毫无生命力的冰冷的硬家伙。在我们为计算机安装了操作系统后,当你按下计算机电源按钮的那一刻,计算机机箱传来了嗡嗡的声音,这时你感觉到计算机开始启动工作了。然而,在计算机的启动过程中,操作系统底层与计算机硬件之间究竟做了哪些复杂的交互动作?下面我们将根据操作系统实际的启动和运行过程对这个问题进行逐步的剖析和讲解。
计算机的运行是离不开程序的。然而,加电的一瞬间,计算机的内存中,准确地说是RAM中,空空如也,什么程序也没有。软盘里虽然有操作系统程序,但CPU的逻辑电路被设计为只能运行内存中的程序,它没有能力直接从软盘运行操作系统。如果要运行软盘中的操作系统,必须将软盘中的操作系统程序加载到内存(RAM)中。
小贴士
RAM(Random Access Memory):随机存取存储器。常见的内存条就是一类RAM,它的特点是加电状态下可任意读、写,断电后信息消失。
问题是在RAM中什么程序也没有的时候,谁来完成加载软盘中操作系统的任务呢?
答案是:BIOS。