电脑启动原理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机的启动原理和流程
引导过程
我们几乎每天都要打开电源启动机器,面对屏幕上出现的一幅幅启动画面,我们一点儿也不会感到陌生,但是,计算机在显示这些启动画面时都做了些什么工作呢?
打开计算机机电源后到计算机准备接受你发出的命令之间计算机所运行的过程称为引导(Boot)过程。

我们知道,当关闭电源后,RAM 的数据将丢失,因此,计算机不是用RA来保持计算机的基本工作指令,而是使用另外的方法将操作系统文件加载到RAM中,再由操作系统接管对机器的控制。

这是引导过程中的一个主要部分。

总的说来,引导过程有下面几个步骤:
①加电––––打开电源开关,给主板和内部风扇供电。

②启动引导程序––––CPU开始执行存储在ROM BIOS中的指令。

③开机自检––––计算机对系统的主要部件进行诊断测试。

④加载操作系统––––计算机将操作系统文件从磁盘读到RAM中。

⑤检查配置文件,定制操作系统的运行环境––––读取配置文件,根据用户的设置对操作系统进行定制。

⑥准备读取命令和数据––––计算机等待用户输入命令和数据。

= (一) 加电
引导过程的第一步就是通电。

电扇开始运转,电源指示灯应该变亮,否则说明系统电源供应有问题,或是主板等部件和机箱发生短路。

(二) 启动引导程序
CPU是从内存地址FFFF0H处开始执行指令的,从前面的介绍可知,这个地址实际上在系统BIOS的地址范围内,无论是哪家公司
的BIOS,放在这里的只是一条跳转指令,跳到系统BIOS中真正的启动代码处。

(三) 开机自检
系统BIOS的启动代码首先要做的事情就是进行POST(Power-
On Self Test,加电后自检),POST的主要任务是检测系统中一些关键设备是否存在和能否正常工作,例如内存和显卡等设备。

由于POST是最早进行的检测过程,此时显卡还没有初始化,如果系统BIOS在进行POST的过程中发现了一些致命错误,例如没有找到内存或者内存有问题(此时只会检查640K常规内存),那么系统BIOS就会直接控制喇叭发声来报告错误。

正常情况下,POST过程进行得非常快。

POST结束之后,系统BIOS将查找显卡的BIOS并调用它的初始化代码,由显卡BIOS来初始化显卡,此时多数显卡都会在屏幕上显示出一些初始化信息,介绍生产厂商、图形芯片类型等内容。

系统BIOS 接着会查找其他设备的BIOS程序,找到之后同样要调用这些BIOS内部的初始化代码来初始化相关的设备。

查找完所有其他设备的BIOS之后,系统BIOS将显示出它自己的启动画面,其中包括系统BIOS的类型、序列号和版本号等内容。

然后检测和显示CPU的类型和工作频率,然后开始测试所有的RAM,并同时在屏幕上显示内存测试的进度。

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

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

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

接下来系统BIOS将根据CMOS配置更新
ESCD(Extended System Configuration Data,扩展系统配置数据),ESCD是系统BIOS用来与操作系统交换硬件配置信息的一种手段。

通常ESCD数据只在系统硬件配置发生改变后才会更新,所以不是每次启动机器时我们都能够看到“Update ESCD… Success”这样的信息。

(四) 加载操作系统
在POST成功之后,系统BIOS的启动代码将进行它的最后一项工作,即根据用户指定的启动顺序从软盘、硬盘或光驱启动,定位并加载操
作系统文件。

首先计算机查找两个操作系统文件:Io.sys和Msdos.sys。

如果这两个文件不存在,引导过程会显示如下信
息:“Non-system disk or disk error”或者“Invalid system disk”。

提示:如果设定的启动顺序是先软盘后硬盘,出现上述提示时要检查一下软驱中是否放的是系统盘(包含上述系统文件)。

如果不是系统盘,可将软盘取出,在按任意键后,计算机将从下一个驱动器(硬盘)查找系统文件。

然后,微处理器将试图加载另外一个操作系统文件。

如果加载失败(文件不存在或版本不对),会出现故障信息:“Bad or missing command interpreter”,而且你发出的所有命令计算机都无法执行,因为是专门用来解释这些命令的。

(五) 检查配置文件并定制操作系统的运行环境
在引导过程初期,计算机通过检查CMOS中的信息对硬件作初始化等工作。

但具体到不同的操作系统中,计算机还需要更多的配置信息来正确使用所有的设备并创建个性化的运行环境。

我们以DOS和Windows两种常用的PC操作系统为例,在DOS中我们常通过创建并编辑Autoexec.bat文件实现开机后自动执行某些命令,比如设置硬盘缓冲区大小、自动启动汉字环境等;在另一个文件Config.sys中可以加载鼠标、光驱、声卡等设备的DOS驱动程序等,使在DOS中可以使用这些设备。

在Windows中对运行环境进行配置的方法更多,比如修改注册表,编辑System.ini、Win.ini等系统配置文件,或将希望启动完Windows后立即执行的内容放入Windows的启动(Startup)组中。

(六) 准备接收命令和数据
当计算机准备好接收命令时就结束了引导过程。

通常在引导结束后,计算机会显示操作系统的屏幕或提示符。

如果你使用的是Windows,那么就会看到Windows的桌面;如果使用的是DOS,就会看到操作系统提示符(如C:\>;A:\>等)。

上面介绍的整个过程便是计算机在打开电源开关(或按Reset键)进行冷启动时所要完成的引导工作。

如果我们在DOS下按Ctrl+Alt+Del组合键(或从Windows中选择重新启动计算机)来进行热启动,那么POST过程将被跳过去,另外检测CPU和内存测试也不会再进行。

我们可以看到,无论是冷启动还是热启动,系统BIOS都一次又一次地重复进行着这些我们平时并不太注意的事情,然而正是这些单
调的步骤为我们能够正常使用电脑提供了基础。

计算机启动原理(软硬详解)
对了解计算机启动有什么用呢?不就是按一个电源就OK了,这可能是很多新手不解的问题。

没这么简单的,这其中涉及到了大量的软硬知识,如果真正了解这样原理会对你今后有很大的帮助。

各位看官在看完了这贴之后,可能会头昏,眼花,精神不振,至精神失常,七孔流血,不孕不育(呵呵打住)。

虽说真是有点不好理解,但是我相信大家在看了七七四十九遍之后一定会明白的。

好了不开玩笑了,下面是主题
计算机启动过程是个很复杂的过程,它有一个非常完善的硬件自检机制,在通电自检短暂的几秒钟里,计算机要完成100多个检测步骤。

首先我们先来了解两个概念:第一个是BIOS(基本输入输出系统),BIOS是一组被“固化”在计算机主板中,直接与硬件打交道的程序,计算机的启动过程是在主板BIOS的控制下进行的.BIOS包括有系统BIOS,即常说的主板BIOS.其它设备(例如IDE控制器、SCSI卡或网卡等的BIOS)其中系统BIOS是本文要讨论的主角.因为计算机的启动过程正是在它的控制下进行的.
第二个基本概念是内存的地址,我们的机器中一般安装有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
1.硬件部份
一.系统BIOS初始化
当我们按下电源开关(POWER)时,电源开始供电,计算机的电源指示
灯亮起.电源就开始向主板和其它设备供电,此时电压还没有完全稳
定,主板控制芯片组会根据CMOS中的CPU主频设置向CPU发出一个
Reset(重置)信号,让CPU内部自动恢复到初始状态,但CPU在此刻不
会马上执行指令。

当芯片组检测到电源已经开始稳定供电了(当然从
不稳定到稳定的过程只是一瞬间的事情),它便撤去RESET信号
(如果是手工按下计算机面板上的Reset按钮来重启机器,那么松开
该按钮时芯片组就会撤去RESET信号),CPU马上从地址FFFF0H处
执行一条跳转指令,从前面的介绍可知,这个地址实际上在系统
BIOS的地址范围内,无论是Award BIOS还是AMI BIOSCPU放在这里
的只是一条跳转指令,跳到系统BIOS中真正的启动代码处。

二.POST(Power On Self Test,加电自检)。

系统BIOS首先要做的事情就是进行POST(Power On Self Test,加电自
检)。

POST的主要任务是检测系统中的一些关键设备电源、CPU芯
片、BIOS芯片、定?.餍酒⑹菔辗⒙呒缏贰 MA控制器、中断控制器
以及基本的64K内存和内存刷新电路等是否存在和能否正常工作,如
内存和显卡等。

POST过程进行得非常快,我们几乎无法感觉到它的
存在.如果POST自检不成功系统的喇叭发出刺耳的警报声,具体的错
误一般可以从警报声的长短和次数来判断.(小说明:为什么这时的错
误要用声音来报警而不是在屏幕上显示呢,这是因为POST的检测过
程在显示卡初始化之前,也就是说这时还是“黑屏”阶段,所以在
POST的过程中发现了一些致命错误是无法在屏幕上显示出来的.)
三,显卡检测
自检通过后,系统BIOS将查找显示卡的BIOS,存放显示卡BIOS的
ROM芯片的起始地址通常在C0000H处,系统BIOS找到显卡BIOS之
后调用它的初始化代码,由显卡BIOS来完成显示卡的初始化.显示
器开始有显示,BIOS将检查显示卡的BIOS,找到之后调用它的初始
化代码,由显卡BIOS找来完成显示卡的初始化。

大多数显示卡在这
个过程通常会在屏幕上显示出一些显示卡的信息,如生产厂商、图形
芯片类型、显存容量等内容,这也就是我们开机看到的第一个画面
了。

四.CPU,内存检测
自此系统就具备了最基本的运行条件.可以对主板上的其它部分进行诊断和测试(例如CMOS错误)再发现故障时,屏幕上会有提示,但一般不死机,当
查找完所有其他设备的BIOS之后,系统BIOS将显示它自己的启动画面,其中包括有系统BIOS的类型,序列号和版本号等内容,同?.聊蛔蟊咧猩辖腔岢鱿种靼逍畔⒋耄˙IOS的日期、主板芯片组型号、厂家的代码等。

接着系统BIOS将检测CPU的类型和工作频率,并将结果显示在屏幕上;然后BIOS开始测试主机的内存容量,并在屏幕上显示内存测试数值。

(就是大家所熟悉的屏幕上半部分那个飞速翻滚的内存计数器)当BIOS画面最下方出
行”DEL"的文字时就可以按下键盘上的”DEL"键(按照你的主板说明按下相应的键)进行BIOS设置了.如图2:四.标准硬件设备与即插即用设备检测下一步BIOS将开始检测系统中安装的一些标准硬件设备:硬盘、CD-ROM、软驱、串行和并行接口等设备。

标准设备检测完毕后,系统BIOS内部支持即插即用的代码将开始检测和配置系统中安装的即插即用设备,同时为该设备分配中断、DMA通道和I/O端口等资源,到此所有硬件都已经检测配置完毕.BIOS会重新清屏并在屏幕上方显示出一个系统配置表,其中简略地列出安装的各种标准硬件设备及相关工作参数。

最后系统BIOS将更新ESCD(Extended System Configuration Data,扩展系统配置数据)。

(ESCD是系统BIOS用来与操作系统交换硬件配置信息的数据,这些数据被存放在CMOS中。

通常ESCD数据只在系统硬件配置发生改变后才会进行更新,并不是每次启动都需要更新。

ESCD数据更新完毕后,系统BIOS的启动代码将进行它的最后一项工作,即根据用户指定的启动顺序从软盘、硬盘或光驱启动.)
六。

硬盘引导
一.上述过程完毕了之后,首先BIOS检测硬盘并进行复位,然后根据用户在BIOS的设置来检查从哪一个设置引导系统,例如软驱,硬盘,光驱等,而其中最常用的就是硬盘引导了.从硬盘引导之后,BIOS把主引导记录读入内存,关将控制权交给主引导程序,检查分区表,寻找活动分区(这就是为什么在用Fdisk分区时要设置活动分区了)找到之后再将控制权交给活动分区的引寻记录,由引寻记录来引导操作系统.若成功引导接着屏幕便出行系统启动的界面如XP的标志画面,图3 可以按下F8键选择启模式.如不成功将会出现出错信息,例子:
如果硬盘上的分区表被破坏后,启动系统时往往会出现“Non-
System disk or disk error,replace disk and press a key to reboot”(非系统盘或盘出错)、“Error Loading Operating System”(装入DOS引导记录错误)或者“No ROM Basic,System Halted”(不能进入ROM Basic,系统停止响应)就无法启动系统了.
为了照顾新手下面给出一下说明,请认真看:硬盘主引导记录(MBR):硬盘主引导记录区位于硬盘的首部,负责搜索硬盘可以启动的分区.对于DOS来说,它是由Fdisk生成的.主引导记录着从分区表中找到第一个活动分区,然后读取并执行这个活动分区的分区引导记录
活动分区:当我们在DOS用Fdisk命令硬盘分区时,一定要设一个主分区为活动分区,不然系统无法启动.一般来说活动分区就是我们平时用的系统盘C盘.
分区表(DPT):分区表DPT则以80H或00H为开始标志,以55AAH为结束标志,位于主引导扇区的最末端。

整个分区表决定了硬盘中的分区数量,每个分区的起始及终止扇区、大小以及是否为活动分区等。

活动分区的引寻记录:对于不同的系统,引导记录读取执行的文件是不一样的,对于DOS和WIN9X而言,分区引导记录执行”IO.sys"
对于WIN2000\XP来说,则是由”NTLDR"程序来执行的.以上介绍的便是计算机在打开电源开关(或按Reset键)进行冷启动时所要完成的各种初始化工作,如果我们在DOS下按Ctrl+Alt+Del组合键(或从Windows中选择重新启动计算机)来进行热启动,那么POST过程将被跳过去,直接从第三步开始,另外的检测CPU和内存测试也不会再进行。

我们可以看到,无论是冷启动还是热启动,系统BIOS都一次又一次地重复进行着这些我们平时并不太注意的事情,然而正是这些单调的硬件检测步骤为我们能够正常使用电脑提供了基础。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 2.软件部方(以XP系统为例说明)
5注明:
要让Windows XP正确启动,在启动和系统分区中必须有以下文件:
Ntldr 位于系统分区根目录中
Boot.ini 位于系统分区根目录中
位于系统分区根目录中
Ntoskrnl.exe 位于启动分区中的Windows\System32目录中
Hal.dll 位于启动分区中的Windows\System32目录中
注册表文件位于启动分区中的Windows\System32 \Config\System目录中
设备驱动程序位于启动分区中的Windows\System32 \Drivers目录中
如果计算机中还装有Win9X/Me,那么在系统分区根目录中必须
有Bootsect.dos;如果计算机中有SCSI设备,系统分区根目录中还必须
有Ntbootdd.sys。

1.系统启动引导阶段
Ntldr读取将boot.ini的内容,定位操作系统所在的启动分区。

如果计算机中只有一个操作系统,Ntldr会自动执行下一步。

如果计算机中有多个操作系统,那么这时会有一个选单让你选择你要启动的操作系统,当你选择Windows NT 4.0/2000/XP/2003时,Ntldr也会执行下一步;当你选择Windows 9X/Me时,Ntldr会把计算机的控制权交给Bootsect.dos.
检测和配置硬件阶段
启动Windows XP后(以XP说明),Ntldr启动。

集计算机硬件信息列表并将列表返回到Ntldr,这样做的目的是便于以后将这些硬件信息加入到注册表HKEY_LOCAL_MACHINE下的hardware
中。

的重要性在于在不兼容
ACPI(Advanced Configuration and Power Interface)的计算机中列举设备,这种情况下,设备资源是由硬件分配的。

在兼容ACPI的计算机中,设备资源是由操作系统分配的。

在这个过程中,会查找Windows XP
建的硬件配置文件。

Windows XP会为桌面型电脑创建一个硬件配置文件,为移动型电脑创建两个硬件配置文件,用户也可以创建自己特定的硬件配置文件。

硬件配置文件中没有的设备的驱动程序不会在Windows XP启动过程中加载。

对于有多个硬件配置文件的计算机,用户可以选择是否在启动时显示硬件配置文件选单以便用户选择特定的硬件配置文件。

2.内核加载阶段
在这个阶段,ntldr首先加载称为Windows XP内核的ntokrnl.exe。

这里,系统加载了Windows XP内核但是没有将它初始化。

接着ntldr加载硬件抽象层(Hardware Abstraction Layer,hal.dll),然后,系统继续加载HKEY_LOCAL_MACHINE\SYSTEM键,ntldr读取
HKEY_LOCAL_MACHINE\SYSTEM\Select中的键值来决定哪一
个ControlSet(熟悉注册表的朋友一定都发现
在HKEY_LOCAL_MACHINE\SYSTEM下有好几个ControlSet,比如ControlSet001,ControlSet002 )将被加载。

ControlSet中包含设备的驱动程
序以及需要加载的服务。

ntldr加
载HKEY_LOCAL_MACHINE\SYSTEM\ControlSetXXX\Services\...(这
里,ControlSetXXX指Select中选定的ControlSet,...指服务的名称)下
值为0的最底层设备驱动。

当作为ControlSet镜像的CurrentControlSet被加载时,ntldr将计算机的控制权交给Windows XP内核的ntokrnl.exe,初始化内核就开始了。

初始化内核开始的时候,彩色的Windows XP的logo以及进度条显示在屏幕中央,在这个阶段,系统完成了启动的4项任务:
1)内核使用在硬件检测时收集到的数据来创建
HKEY_LOCAL_MACHINE\HARDWARE键。

2)内核通过复制HKEY_LOCAL_MACHINE\ SYSTEM \CurrentControlSet 值来创建了HKEY_LOCAL_MACHINE\ SYSTEM \Clone。

Clone是计算机数据的备份,不包括启动中的改变,也不会被修改。

3)系统完成初始化以及加载设备驱动程序,内核初始化那些在加载内核阶段被加载的底层驱动程序,然后内核扫描
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\...下
为1的设备驱动程序。

这些设备驱动程序在加载的时候便完成初始化,如果有错误发生,内核使用ErrorControl键值来决定如何处理,值为3时,错误标志为危机/关键,系统初次遇到错误会以
HKEY_LOCAL_MACHINE\SYSTEM\Select中LastKnownGood
ControlSet重新启动,如果使用LastKnownGood ControlSet启动仍然产生错误,系统报告启动失败,错误信息将被显示,系统停止启动;值为2
情况为严重,系统启动失败并且以LastKnownGood ControlSet重新启动,如果系统启动已经在使用LastKnownGood值,它会忽略错误并且继续启动;当值是1的时候错误为普通,系统会产生一个错误信息,但是会忽略这个错误并且继续启动;当值是0的时候忽略,系统不会显示任何错误信息而继续运行。

4)内核启动Session Manager(Smss.exe)。

Session Manager的作用是启动Windows XP高级子系统以及服务,启动控制所有输入、输出设备以及访问显示器屏幕的Win32子系统以及Windows登陆进程(Winlogon.exe)。

到这里,初始化内核就完成了。

3.登陆阶段
Winlogon.exe首先启动服务管理(Service Control Manager,Services.exe
本地安全认证(Local Security Authority,Lsass.exe),同时显示Windows XP欢迎屏幕,这时候,系统还可能在后台继续初始化刚才没有完成的驱动程序。

然后Winlogon会提示用户输入有效的用户名或密码(如果Windows XP中除了默认的administrator和隐藏帐户外只有一个用户帐户且没有密码,Windows XP会跳过这一步)。

接着,服务管理最后执行以及扫描HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servives来检查是否还有服务需要加载,服务管理查找start键值为2或更高的服务,服务按照
的值以及DependOnGroup和DepandOnService的值来加载。

只有用户成功登陆到计算机后,Windows XP的启动才被认为是完成,在成功登陆后,系统拷贝HKEY_LOCAL_MACHINE\SYSTEM\Clone
到LastKnownGood ControlSet,完成这一步骤后,系统才意味着已经成功引导了。

相关文档
最新文档