1.3 微型计算机系统的启动过程

微型计算机系统的启动过程中有一个非常完善的硬件自检机制。微型计算机上电启动的过程如下:

① 当电源开关被按下时,电源就开始向主板和其他设备供电,此时电压还不稳定,主板控制芯片组会向CPU发出并保持一个RESET(复位)信号,让CPU初始化。当电源开始稳定供电后(从不稳定到稳定的过程只是一个短暂的瞬间),芯片组便撤去RESET信号(如果是手动按下计算机面板上的Reset按钮来重启机器,那么松开该按钮时芯片组就会撤去RESET信号),CPU马上就从存储器地址FFFF0H处开始执行指令,这个地址在系统BIOS的地址范围内,放在这里的只是一条跳转指令,以使CPU跳到系统BIOS的启动代码处执行指令。

② 系统BIOS的启动代码首先要做的事情就是进行POST(Power On Self Test,加电自检)。POST的主要任务是检测系统中的一些关键设备是否存在和能否正常工作,如内存和显卡等。由于POST的检测过程在显卡初始化之前,因此如果在POST自检的过程中发现了一些致命错误,如没有找到内存或者内存有问题时(POST过程只检查640KB常规内存),是无法在屏幕上显示出来的,这时系统BIOS可通过扬声器发声来报告错误情况,声音的长短和次数代表了错误的类型。在正常情况下,POST过程进行得非常快,几乎无法感觉到。

③ 接下来,系统BIOS将查找显卡的BIOS,存放显卡BIOS的ROM芯片的起始地址通常在C0000H处,系统BIOS找到显卡BIOS之后调用它的初始化代码,由显卡BIOS来完成显卡的初始化。大多数显卡在这个过程通常会在屏幕上显示出一些显卡的信息,如生产厂商、图形芯片类型、显存容量等内容,这就是我们开机看到的第一个画面,不过这个画面几乎是一闪而过的,也有的显卡BIOS使用了延时功能,以便用户可以看清显示的信息。接着系统BIOS会查找其他设备的BIOS程序,找到之后同样要调用这些BIOS内部的初始化代码来初始化这些设备。

④ 查找完所有其他设备的BIOS之后,系统BIOS将显示它自己的启动画面,其中包括系统BIOS的类型、序列号和版本号等内容。同时屏幕底端左下角会出现主板信息代码,包括BIOS的日期、主板芯片组型号、主板的识别编码和厂商代码等。

⑤ 接着系统BIOS将检测CPU的类型和工作频率,并将检测结果显示在屏幕上,这就是我们开机看到的CPU类型和主频。接下来系统BIOS开始测试主机所有的内存容量,并同时在屏幕上显示内存测试的数值,即屏幕上滚动显示的内存计数器。

⑥ 内存测试通过之后,系统BIOS将开始检测系统中安装的一些标准硬件设备,这些设备包括:硬盘、CD-ROM、串行接口和并行接口等。另外,绝大多数新版本的系统BIOS在这一阶段还要自动检测和设置内存的定时参数、硬盘参数和访问模式等。

⑦ 标准设备检测完毕后,系统BIOS内部的支持即插即用的代码将开始检测和配置系统中安装的即插即用设备,每找到一个设备之后,系统BIOS都会在屏幕上显示出设备的名称和型号等信息,同时为该设备分配中断、DMA通道和I/O端口等资源。

⑧ 到这一步为止,所有硬件都已经检测配置完毕了,系统BIOS会重新清屏并在屏幕上方显示出一个系统配置列表,其中概略地列出了系统中安装的各种标准硬件设备,以及它们使用的资源和一些相关工作参数。

⑨ 接下来系统BIOS将更新ESCD(Extended System Configuration Data,扩展系统配置数据)。ESCD是系统BIOS用来与操作系统交换硬件配置信息的数据,这些数据被存放在CMOS(一小块特殊的RAM,由主板上的电池来供电)之中。通常ESCD数据只在系统硬件配置发生改变后才会进行更新,所以不是每次启动机器时我们都能够看到“Update ESCD...Success”这样的信息。

⑩ ESCD数据更新完毕后,系统BIOS的启动代码将进行它的最后一项工作,即根据用户指定的启动顺序从硬盘或光驱启动。以从C盘启动为例,系统BIOS将读取并执行硬盘上的主引导记录,主引导记录接着从分区表中找到第一个活动分区,然后读取并执行这个活动分区的分区引导记录,而分区引导记录将负责加载并引导操作系统。

上面介绍的就是计算机在打开电源开关(或按Reset键)进行冷启动时所要完成的各种初始化工作,如果按组合键Ctrl+Alt+Del(或从Windows中选择重启计算机)来进行热启动,那么POST过程将被跳过去,直接从第③步开始,而且第⑤步的检测CPU和内存测试也不会再进行。无论是冷启动还是热启动,系统BIOS都会重复上面的硬件检测和引导过程。

目前,微型计算机上常见的操作系统有DOS、OS/2、UNIX、Linux和Windows等。DOS(Disk Operating System)是磁盘操作系统的简称,是学习其他操作系统的基础。DOS家族包括MS-DOS、PC-DOS、DR-DOS等。MS-DOS是Microsoft Disk Operating System的简称,是由美国微软公司提供的磁盘操作系统。在Windows 98以前,DOS是个人PC兼容计算机的最佳配置,而MS-DOS则是最普遍使用的PC兼容DOS。

MS-DOS采用模块结构,它由4部分组成:引导程序、IO.SYS模块、MSDOS.SYS模块和COMMAND.COM模块。

1.引导程序

引导程序又叫“引导记录”,其作用是检查当前盘上是否有DOS系统文件。若有,则把DOS系统从磁盘装入内存。

2.IO.SYS模块

IO.SYS是MS-DOS和ROM BIOS之间的接口程序。它和ROM BIOS一起完成系统标准设备的管理,例如,标准的输入设备(键盘)和标准的输出设备(显示器)的驱动等。

3.MSDOS.SYS模块

MSDOS.SYS是MS-DOS的核心,包括DOS功能调用和实现DOS文件系统管理程序,用于实现文件管理,包括文件管理、目录管理、内存管理等功能。例如,在磁盘上建立文件、向文件中写入内容、从文件中读出内容等。它以功能调用的形式实现用户和MS-DOS之间的程序级接口。

4.COMMAND.COM模块

COMMAND.COM是命令处理程序,主要功能是负责接收、识别、解释和执行用户从键盘输入的MS-DOS命令。

DOS的命令处理程序可以处理两类命令:一类是内部命令,这类命令处理程序就包含在COMMAND.COM之内。启动DOS时,内部命令被装入系统内存,用户可以随时使用。常用的内部命令有:DIR、DEL、COPY等。另一类是外部命令,每个外部命令处理程序都是一个单独的文件,即以磁盘文件的形式存储在DOS磁盘中,它的文件名和命令名相同。启动DOS时,外部命令没有被装入系统内存。外部命令的执行过程:从键盘输入外部命令名时,COMMAND.COM把这个外部命令处理程序文件从磁盘上读入内存,然后把控制转移到该文件中的程序,执行这个程序,之后返回到DOS。常用的外部命令有SYS、FORMAT、DISKCOPY等。

用户在使用命令时,内部命令和外部命令没有什么区别。使用外部命令的话,会有一个把外部命令处理程序从磁盘读入内存的过程,而内部命令没有这个过程,因为内部命令处理程序在启动计算机时已经读入内存。