当前位置:文档之家› 电脑启动过程详解

电脑启动过程详解

电脑从按完开关加电开始直到进入到系统桌面的整个过程详解本文以Windows2000/xp和Windows Vista/7两个内核做讲解电脑从加电到进桌面可以分为两大部分:无论是Windows2000/XP还是Windows Vista/7,在硬件自检方面都是想同的,不同的是在系统加截。

硬件部分:在讲解前,我们先来了解几个概念:BIOS:即“Basic Input/Output System”(基本输入输出系统),它是一组被“固化”在计算机主板上的一块 ROM 中直接关联硬件的程序,保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序,其主要功能是为计算机提供最底层的、最直接的硬件设置和控制,它包括系统 BIOS(主板 BIOS).其它设备 BIOS(例如 IDE 控制器 BIOS、显卡 BIOS 等)其中系统 BIOS 占据了主导地位.计算机启动过程中各个 BIOS 的启动都是在它的控制下进行的。

CMOS:即“Complementary Metal-Oxide-Semiconductor”(互补金属氧化物半导体),它本是计算机系统内一种重要的芯片,保存了系统引导最基本的资料。

内存地址:我们知道,内存空间的最基本单位是位,8 位视为一个字节,即我们常用的单位 B,内存中的每一个字节都占有一个地址(地址是为了让 CPU 识别这些空间,是按照 16 进制表示的),而最早的 8086 处理器只能识别 1MB(2 的 20 次方 B)的空间,这 1MB 内存中低端(即最后面)的 640KB 就被称为基本内存,而剩下的内存(所有的)则是扩展内存。

这 640KB 的空间分别由显存和各 BIOS 所得。

我们来看一下硬件部分的流程图:我们从上图可以看到,在按下电源到启动操作系统前的过程是这样的:1、当电源开关按下时,电源开始向主板和其他设备供电,此时电压并不稳定,于是,当主板认为电压并没有达到 CMOS 中记录的 CPU 的主频所要求的电压时,就会向 CPU 发出 RESET 信号(即复位,不让 CPU 进一步运行),不过仅一瞬间不稳定的电压就能达到符合要求的稳定值,此时复位信号撤销,CPU 马上从基本内存的 BIOS 段读取一条跳转指令,跳转到 BIOS 的真正启动代码处,如此,系统 BIOS 启动,此后的过程都由系统 BIOS 控制。

2、系统 BIOS 启动后会进行加电自检 POST(Power On Self Rest)。

不过这个过程进行得很快,它主要是检测关键设备(如电源、CPU 芯片、BIOS 芯片、基本内存等电路是否存在以及供电情况是否良好。

如果自检出现了问题,系统喇叭会发出警报声(根据警报声的长短和次数可以知道到底出现了什么问题)。

3、如果自检通过,系统 BIOS 会查找显卡 BIOS,找到后会调用显卡 BIOS的初始化代码,此时显示器就开始显示了(这就是为什么自检失败只能靠发声进行提醒了)。

显卡 BIOS 会在屏幕上显示显卡的相关信息(不过现在的笔记本似乎并不显示这个)。

4、显卡检测成功后会进行其他设备的测试,通过后系统 BIOS 重新执行自己的代码,并显示自己的启动画面,将自己的相关信息显示在屏幕上,而后会进行内存测试(这些在现在的计算机上也看不到了),仅仅是短暂出现系统 BIOS设置页面,此时就可以对系统 BIOS 进行需要的设置了,完成后会重新启动。

5、此后 BIOS 会检测系统的标准硬件(如硬盘、软驱(虽然现在很多计算机已没有软驱了)、串行和并行接口等),检测完成后会接着检测即插即用设备,如果有的话就为该设备分配中断、DMA 通道和 I/O 端口等资源,到了这里,所有的设备都已经检测完成了,老机会进行一次清屏并显示一个系统配置表,如果和上次启动相比出现了硬件变动,BIOS 还会更新 ESCD,即“Extended SystemConfiguration Data”(扩展系统配置数据),它是系统 BIOS 用来与操作系统交换硬件配置信息的数据,这些数据被存放在 CMOS 中。

现在的机器则不再显示这些了。

6、当上面的所有步骤都顺利进行以后,BIOS 将执行最后一项任务:按照用户指定的启动顺序进行启动(即我们经常需要用到的设置系统从哪里启动,一般默认是硬盘,如果需要安装系统,还会设置为光驱或 USB 设备),注意,这里是指的启动顺序,如果设置为从光驱启动,而光驱中又没有光盘的话,系统还是会接着从硬盘启动的。

至此,操作系统启动之前的所有启动步骤都完成了,如果从硬盘启动的话,接着就是操作系统的启动过程了Windows2000/xp系统引导:Windows2000/xp的引导可分为五步:1、预引导阶段:在这个过程中,计算机硬件首先要完成通电自检(Power-On Self Test,POST),这一步主要会对计算机中安装的处理器、内存等硬件进行检测,如果一切正常,则会继续下面的过程。

如果您的计算机BIOS(固化在计算机主板上芯片中的一些程序)是支持即插即用的(基本上,现阶段能够买到的计算机和硬件都是支持这一标准的),而且所有硬件设备都已经被自动识别和配置,接下来计算机将会定位引导设备(例如第一块硬盘,设备的引导顺序可以在计算机的BIOS设置中修改),然后从引导设备中读取并运行主引导记录(Master Boot Record,MBR)。

至此,预引导阶段成功完成。

2、引导阶段:初始化引导载入程序在这一阶段,首先出场的是ntldr,该程序会将处理器由实模式(Real Mode)切换为32位平坦内存模式(32-bit Flat Memory Mode)。

不使用实模式的主要原因是,在实模式下,内存中的前640 KB是为MS-DOS保留的,而剩余内存则会被当作扩展内存使用,这样Windows XP将无法使用全部的物理内存。

而32位平坦内存模式下就好多了,Windows XP 自身将能使用计算机上安装的所有内存(其实最多也只能用2 GB,这是32位操作系统的设计缺陷。

关于大内存的问题因为和本文的内容关系不大,因此这里不表,日后有机会再单独撰文介绍)。

接下来ntldr会寻找系统自带的一个微型的文件系统驱动。

大家都知道,DOS和Windows 9x操作系统是无法读写NTFS文件系统的分区的,那么Windows XP的安装程序为什么可以读写NTFS分区?其实这就是微型文件系统驱动的功劳了。

只有在载入了这个驱动之后,ntldr才能找到您硬盘上被格式化为NTFS或者FAT/FAT32文件系统的分区。

如果这个驱动损坏了,就算您的硬盘上已经有分区,ntldr也认不出来的。

读取了文件系统驱动,并成功找到硬盘上的分区后,引导载入程序的初始化过程就已经完成了,随后我们将会进行到下一步。

操作系统选择这一步并非必须的,只有在您计算机中安装了多个Windows操作系统的时候才会出现。

不过无论您的计算机中安装了几个Windows,计算机启动的过程中,这一步都会按照设计运行一遍,只有在确实安装了多个系统的时候,系统才会显示一个列表,让您选择想要引导的系统。

但如果您只有一个系统,那么引导程序在判断完之后会直接进入到下一阶段。

如果您已经安装了多个Windows操作系统(泛指Windows 2000/XP/2003这类较新的系统,不包括Windows 9x系统),那么所有的记录都会被保存在系统盘根目录下一个名为boot.ini的文件中。

ntldr程序在完成了初始化工作之后就会从硬盘上读取boot.ini文件,并根据其中的内容判断计算机上安装了几个Windows,它们分别安装在第几块硬盘的第几个分区上。

如果只安装了一个,那么就直接跳过这一步。

但如果安装了多个,那么ntldr就会根据文件中的记录显示一个操作系统选择列表,并默认持续30秒。

只要您做出选择,ntldr 就会自动开始装载被选择的系统。

如果您没有选择,那么30秒后,ntldr会开始载入默认的操作系统。

至此操作系统选择这一步已经成功完成。

小知识:系统盘(System Volume)和引导盘(Boot Volume)有什么区别?这是两个很容易被人搞混的概念,因为根据微软对这两个名词的定义,很容易令人产生误解。

根据微软的定义,系统盘是指保存了用于引导Windows的文件(根据前面的介绍,我们已经清楚,这些文件是指ntldr、boot.ini等)的硬盘分区/卷;而引导盘是指保存了Windows系统文件的硬盘分区/卷。

如果只有一个操作系统的话,我们通常会将其安装在第一个物理硬盘的第一个主分区(通常被识别为C盘)上,那么系统盘和引导盘属于同一个分区。

但是,如果您将您的Windows安装到了其他分区中,例如D盘中,那么系统盘仍然是您的C盘(因为尽管Windows被安装到了其他盘,但是引导系统所用的文件还是会保存在C盘的根目录下),但您的引导盘将会变成是D盘。

很奇怪的规定,保存了引导系统所需文件的分区被叫做“系统盘”,反而保存了操作系统文件的分区被叫做“引导盘”,正好颠倒了。

不过微软就是这样规定的。

硬件检测这一过程中主要需要用到和Ntldr。

当我们在前面的操作系统选择阶段选择了想要载入的Windows系统之后,首先要将当前计算机中安装的所有硬件信息收集起来,并列成一个表,接着将该表交给Ntldr(这个表的信息稍后会被用来创建注册表中有关硬件的键)。

这里需要被收集信息的硬件类型包括:总线/适配器类型、显卡、通讯端口、串口、浮点运算器(CPU)、可移动存储器、键盘、指示装置(鼠标)。

至此,硬件检测操作已经成功完成。

配置文件选择这一步也不是必须的。

只有在计算机(常用于笔记本电脑)中创建了多个硬件配置文件的时候才需要处理这一步。

如果Ntldr检测到系统中创建了多个硬件配置文件,那么它就会在这时候将所有可用的配置文件列表显示出来,供用户选择。

这里其实和操作系统的选择类似,不管系统中有没有创建多个配置文件,Ntldr都会进行这一步操作,不过只有在确实检测到多个硬件配置文件的时候才会显示文件列表3、内核加载:在这一阶段,Ntldr会载入Windows XP的内核文件:Ntoskrnl.exe,但这里仅仅是载入,内核此时还不会被初始化。

随后被载入的是硬件抽象层(hal.dll)硬件抽象层其实是内存中运行的一个程序,这个程序在Windows XP内核和物理硬件之间起到了桥梁的作用。

正常情况下,操作系统和应用程序无法直接与物理硬件打交道,只有Windows内核和少量内核模式的系统服务可以直接与硬件交互。

而其他大部分系统服务以及应用程序,如果想要和硬件交互,就必须透过硬件抽象层进行。

硬件抽象层被载入后,接下来要被内核载入的是HKEY_LOCAL_MACHINE\System注册表键。

相关主题