[转]计算机开机过程详解

from : http://blog.csdn.net/range0505/archive/2008/09/13/2924915.aspx

1 引言

很多人认为计算机开机就是按下主机上的电源开关那么简单,其实在我们按下电源开关,到出现操作系统界面期间,计算机经历了系统加电、系统自检和加载操作系统等一些列过程,了解计算机的开机过程可以帮助解决计算机无法开机、启动速度慢等一些列问题,从而保证计算机的征程启动,提高开机素的,最大限度地节约开机时间

2 基本概念

2.1 BIOS

    第一个是大家非常熟悉的BIOS(基本输入输出 系统),BIOS是直接与 硬件打交道的底层代码,它为操作系统提供了控制硬件设备的基本功能。BIOS包括有系统BIOS(即常说的 主板BIOS)、 显卡BIOS和其它设备(例如IDE控制器、SCSI卡或网卡等)的BIOS,其中系统BIOS是本文要讨论的主角,因为计算机的启动过程正是在它的控制下进行的。BIOS一般被存放在ROM(只读存储芯片)之中,即使在关机或掉电以后,这些代码也不会消失。

2.2 内存地址

计算机一般安装有32MB、64MB或128MB内存,这些内存的每一个字节都被赋予了一个地址,以便CPU访问内存。32MB的地址范围用十六进制数表示就是0~1FFFFFFH,其中0~FFFFFH的低端1MB内存非常特殊,因为最初的8086处理器能够访问的内存最大只有1MB,这1MB的低端640KB被称为基本内存,而A0000H~BFFFFH要保留给显示卡的显存使用,C0000H~FFFFFH则被保留给BIOS使用,其中系统BIOS一般占用了最后的64KB或更多一点的空间,显卡BIOS一般在C0000H~C7FFFH处,IDE控制器的 BIOS在C8000H~CBFFFH处。 

2.3 ESCD

ESCD是Extended System Configuration Data的引文缩写,中文意思是扩展系统配置数据。它是系统BIOS用来和操作系统交换硬件配置信息的一种手段,这些数据被存放在CMOS(一块特殊的RAM,由主板上的电池来供电)之中,通常情况下ESCD的数据只有在计算机的硬件配置发生改变后才会进行更新,因此并不是每次启动计算机时都能看到“Update ESCD……Success”这样的信息。

3 开机过程

3.1 第一步

    当按下电源开关时,电源就开始向主板和其它设备供电,此时电压还不太稳定,主板上的控制芯片组会向CPU发出并保持一个RESET(重置)信号,让CPU内部自动恢复到初始状态,但CPU在此刻不会马上执行指令。当芯片组检测到电源已经开始稳定供电了(当然从不稳定到稳定的过程只是一瞬间的事情),它便撤去RESET信号(如果是手工按下计算机面板上的Reset按钮来重启机器,那么松开该按钮时芯片组就会撤去RESET信号),CPU马上就从地址FFFF0H处开始执行指令,从前面的介绍可知,这个地址实际上在系统BIOS的地址范围内,无论是Award BIOS还是AMI BIOS,放在这里的只是一条跳转指令,跳到系统BIOS中真正的启动代码处。 

3.2 第二步

    系统BIOS的启动代码首先要做的事情就是进行POST(Power-On Self Test,加电后自检),POST的主要任务是检测系统中一些关键设备是否存在和能否正常工作,例如内存和显卡等设备。由于POST是最早进行的检测过程,此时显卡还没有初始化,如果系统BIOS在进行POST的过程中发现了一些致命错误,例如没有找到内存或者内存有问题(此时只会检查640K常规内存),那么系统BIOS就会直接控制喇叭发声来报告错误,声音的长短和次数代表了错误的类型。在正常情况下,POST过程进行得非常快,几乎无法感觉到它的存在。 

3.3 第三步

    接下来系统BIOS将查找显卡的BIOS,前面说过,存放显卡BIOS的ROM芯片的起始地址通常设在C0000H处,系统BIOS在这个地方找到显卡 BIOS之后就调用它的初始化代码,由显卡BIOS来初始化显卡,此时多数显卡都会在屏幕上显示出一些初始化信息,介绍生产厂商、图形芯片类型等内容,不过这个画面几乎是一闪而过。系统BIOS接着会查找其它设备的BIOS程序,找到之后同样要调用这些BIOS内部的初始化代码来初始化相关的设备。 

3.4 第四步

    查找完所有其它设备的BIOS之后,系统BIOS将显示出它自己的启动画面,其中包括有系统BIOS的类型、序列号和版本号等内容。接着系统BIOS将检测和显示CPU的类型和工作频率,然后开始测试所有的RAM,并同时在屏幕上显示内存测试的进度。

3.5 第五步

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

3.6 第六步

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

3.7 第七步

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

4 结束语

    以上介绍的是计算机在打开电源开关进行冷启动时所需要完成的各种初始化工作,如果是一下情况则有所不同:一种是在同时按下Ctrl+Alt+Del组合键或者从Windows操作系统中选择重新启动计算机来进行的热启动,POST过程将被直接跳过,从第三步开始执行启动,同事也不再进行CPU检测和内存测试;另一种是按下主机上的重启动按钮(Reset键)来进行复位启动,计算是只是没有进行加点的过程,其他各种检测仍然照样要进行,然后才启动操作系统。复位启动可以使计算机的主要部件不会再次受到冲击电流的影响,因此不会加速计算机的老化。

猜你喜欢

转载自zxhdaniel.iteye.com/blog/982219