当前位置:文档之家› 计算机启动过程

计算机启动过程

计算机启动过程
讲课教师:黄小龙
计算机启动过程总体分为两个过程,即硬件启动过程和操作系统启动过程。

本课中操作系统我们仅选用Windows XP 的启动过程讲解。

一、硬件启动过程
⑴加电
按下电源开关后,电源就开始向主板和其它设备供电,此时电压还不稳定,
主板上的控制芯片组会向CPU 发出并保持一个RESET(重置)信号,让CPU 初始化。

当电源开始稳定供电后,芯片组便撤去RESET 信号(如果是按下Reset 按钮来重启,那么松开该按钮时芯片组就会撤去RESET 信号)。

然后,CPU 马上就从地址FFFF0H 处开始执行指令(这是BIOS 的起始地址),但放在这里的只是一条跳转指令,跳到系统真正的BIOS 启动代码处,由BIOS 的代码进行下一步的POST 自检。

⑵BIOS 进行post
POST就是加电自检,它是Power On Sel f Test的缩写。

它是检查一些关键设备是否存在和能否正常工作,如内存和显卡等。

如果发现错误,则通过喇叭发声来报告错误情况,此时的声音长短和次数代表了错误类型。

注:由于POST的检测过程在显示卡初始化之前,因此POST 自检过程发现的错误是无法在屏幕上显示出来的。

⑶BIOS检测硬件的各种信息
BIOS进行加电自检后,就开始检测计算机上硬件设备的各种信息,如设备类型、工作频率、芯片组型号、出厂厂商等。

这阶段的硬件检测顺序是:显示卡、CPU、内存、其它标准硬件设备(如硬盘、光驱、软驱、外设等)。

⑷BIOS更新ESCD
按下来系统BIOS将更新ESCD(Extended System Configuration Data,扩展系统配置数据)。

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

通常ESCD数据只在系统硬件配置发生改变后才会进行更新,因此不是每次启动都能看到"Update ESCD... Success"这样的信息。

不过,某些主板的BIOS在保存ESCD数据时使用了与Windows 9x 不相同的数据格式,于是Windows 9x在每一次启动都会把ESCD 数据转换成自己的格式,导致BIOS每次重新启动时都认为是硬件配置发生变化,并重新改写ESCD数据,这就是为什么有的计算机在每次启动时都会显示"Update ESCD... Success"信息的原因。

⑸从计算机外存储器启动操作系统
ESCD数据更新完毕后,BIOS即根据用户设定的启动顺序来启动,如从按顺序从软盘、硬盘、光驱找到启动盘,并从中启动操作系统。

注:
①如果是进行热启动,那么POST过程将被跳过,并且CPU和内存的信息检测也不会再进行。

②如果要对BIOS进行设置,那么在计算机屏幕出现设置提示时按下相应的键(一般为Delete或Esc键),即可进入BIOS进行设置。

二、操作系统启动过程
操作系统启动分为:预引导(Pre-Boot)阶段、引导阶段、加载内核阶段、初始化内核阶段、登陆等五个阶段。

⑴预引导(Pre-Boot)阶段
BIOS将读取并执行启动盘的主引导记录即MBR(Master Boot Record),主引导记录接着从分区表中找到第一个活动分区,然后读取并执行这个活动分区的分区引导记录,然后由分区引导记录负责加载并执行内核文件(如是DOS或Windows 9x,其内核文件为
IO.SYS,如是Windows2000或Windows XP则是Ntldr)。

⑵引导阶段
NTLDR将计算机微处理器从实模式转换为32位平面内存模式。

(注:在实模式中,系统为MS-DOS保留640kb内存,其余内存视为扩展内存,而在32位平面内存模式中,系统视所有内存为可用内存。

)接着,NTLDR启动内建的mini-file system drivers,通过这个步骤,使NTLDR可以识别是用NTFS还是用FAT格式,以便发现以及加载Windows XP。

接着系统来到了操作系统选择阶段,如果计算机安装了不止一个操作系统(也就是多系统),而且正确设置了boot.ini使系统提供操作系统选择的条件下,计算机显示器会显示一个操作系统选单,这是NTLDR读取boot.ini的结果。

例如把boot.ini中的timeout值设为0,则系统不会出现操作系统选择菜单,直接引导到那个唯一的系统或者默认的系统。

操作系统选择阶段结束后,即开始进行硬件检测。

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

硬件检测完成后,进入配置选择阶段。

如果计算机含有多个硬件配置文件列表,可以通过按上下按钮来选择。

如果只有一个硬件配置文件,计算机不显示此屏幕而直接使用默认的配置文件加载Windows XP专业版。

注:在引导阶段中,系统要用到的文件有:NTLDR,Boot.ini,,ntokrnl.exe,Ntbootdd.sys,bootsect.dos(可选的)。

⑶加载内核阶段
本阶段中,ntldr加载了称为Windows XP内核的ntokrnl.exe文件,但是没有将它初始化。

接着ntldr加载硬件抽象层(HAL,hal.dll),然后,系统继续加载注册表中HKEY_LOCAL_MACHINE\system键,NTLDR读取select键来决定哪个控制集将被加载。

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

NTLDR加载
HKEY_LOCAL_MACHINE\system\service\...下start键值为0的最底层设备驱动。

当作为Control Set的镜像的Current Control Set被加载时,ntldr传递控制给内核,初始化内核阶段就开始了。

⑷初始化内核阶段
在初始化内核阶段开始的时候,Windows XP的彩色届面以及进度条就显示在屏幕中央了,在这个阶段,系统完成了启动的4项任务:
①内核将在硬件检测时收集到的数据写入注册表的
HKEY_LOCAL_MACHINE\HARDWARE键。

②内核通过引用HKEY_LOCAL_MACHINE\system\Current的默认值复制Control Set来创建了Clone Control Set。

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

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

这些设备驱动程序在加载的时候便完成初始化,如果有错误发生,内核使用ErrorControl键值来决定如何处理,值为3时,错误标志为危机/关键,系统初次遇到错误会以LastKnownGood Control Set重新启动,如果使用LastKnownGood Control Set启动仍然产生错误,系统报告启动失败,错误信息将被显示,系统停止启动;值为2时错误情况为严重,系统启动失败并且以LastKnownGood Control Set重新启动,如果系统启动已经在使用LastKnownGood值,它会忽略错误并且继续启动;当值是1的时候错误为普通,系统会产生一个错误信息,但是仍然会忽略这个错误并且继续启动;当值是0的时候忽略,系统不会显示任何错误信息而继续运行
④Session Manager启动了Windows XP高级子系统以及服务,Session Manager启动控制所有输入、输出设备以及访问显示器屏幕的Win32子系统以及Winlogon进程,初始化内核完毕。

⑸登陆
以上步骤完成后,我就可以看到输入用户名或密码的登录届面了(此步可跳过并直接进入桌面)。

这个登陆过程将加载用户需要在启动时加载的应用程序。

至此,计算机整个启动过程结束。

相关主题