电脑启动过程.docx
- 文档编号:11359303
- 上传时间:2023-02-28
- 格式:DOCX
- 页数:28
- 大小:38.77KB
电脑启动过程.docx
《电脑启动过程.docx》由会员分享,可在线阅读,更多相关《电脑启动过程.docx(28页珍藏版)》请在冰豆网上搜索。
电脑启动过程
打开电源启动机器几乎是电脑爱好者每天必做的事情,面对屏幕上出现的一幅幅启动画面,我们一点儿也不会感到陌生,但是,计算机在显示这些启动画面时都做了些什么工作呢?
相信有的朋友还不是很清楚,本文就来介绍一下从打开电源到出现Windows 9x的蓝天白云时,计算机到底都干了些什么事情。
首先让我们来了解一些基本概念。
第一个是大家非常熟悉的BIOS(基本输入输出系统),BIOS是直接与硬件打交道的底层代码,它为操作系统提供了控制硬件设备的基本功能。
BIOS包括有系统BIOS(即常说的主板BIOS)、显卡BIOS和其它设备(例如IDE控制器、SCSI卡或网卡等)的BIOS,其中系统BIOS是本文要讨论的主角,因为计算机的启动过程正是在它的控制下进行的。
BIOS一般被存放在ROM(只读存储芯片)之中,即使在关机或掉电以后,这些代码也不会消失。
第二个基本概念是内存的地址,我们的机器中一般安装有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处。
好了,下面我们就来仔细看看计算机的启动过程吧。
##1第一步:
当我们按下电源开关时,电源就开始向主板和其它设备供电,此时电压还不太稳定,主板上的控制芯片组会向CPU发出并保持一个RESET(重置)信号,让CPU内部自动恢复到初始状态,但CPU在此刻不会马上执行指令。
当芯片组检测到电源已经开始稳定供电了(当然从不稳定到稳定的过程只是一瞬间的事情),它便撤去RESET信号(如果是手工按下计算机面板上的Reset按钮来重启机器,那么松开该按钮时芯片组就会撤去RESET信号),CPU马上就从地址FFFF0H处开始执行指令,从前面的介绍可知,这个地址实际上在系统BIOS的地址范围内,无论是Award BIOS还是AMIBIOS,放在这里的只是一条跳转指令,跳到系统BIOS中真正的启动代码处。
##1第二步:
系统BIOS的启动代码首先要做的事情就是进行POST(Power-OnSelf
Test,加电后自检),POST的主要任务是检测系统中一些关键设备是否存在和能否正常工作,例如内存和显卡等设备。
由于POST是最早进行的检测过程,此时显卡还没有初始化,如果系统BIOS在进行POST的过程中发现了一些致命错误,例如没有找到内存或者内存有问题(此时只会检查640K常规内存),那么系统BIOS就会直接控制喇叭发声来报告错误,声音的长短和次数代表了错误的类型。
在正常情况下,POST过程进行得非常快,我们几乎无法感觉到它的存在,POST结束之后就会调用其它代码来进行更完整的硬件检测。
##1第三步:
接下来系统BIOS将查找显卡的BIOS,前面说过,存放显卡BIOS的ROM芯片的起始地址通常设在C0000H处,系统BIOS在这个地方找到显卡BIOS之后就调用它的初始化代码,由显卡BIOS来初始化显卡,此时多数显卡都会在屏幕上显示出一些初始化信息,介绍生产厂商、图形芯片类型等内容,不过这个画面几乎是一闪而过。
系统BIOS接着会查找其它设备的BIOS程序,找到之后同样要调用这些BIOS内部的初始化代码来初始化相关的设备。
查找完所有其它设备的BIOS之后,系统BIOS将显示出它自己的启动画面,其中包括有系统BIOS的类型、序列号和版本号等内容。
##1第四步:
##1第五步:
接着系统BIOS将检测和显示CPU的类型和工作频率,然后开始测试所有的RAM,并同时在屏幕上显示内存测试的进度,我们可以在CMOS设置中自行决定使用简单耗时少或者详细耗时多的测试方式。
##1第六步:
内存测试通过之后,系统BIOS将开始检测系统中安装的一些标准硬件设备,包括硬盘、CD-ROM、串口、并口、软驱等设备,另外绝大多数较新版本的系统BIOS在这一过程中还要自动检测和设置内存的定时参数、硬盘参数和访问模式等。
##1第七步:
标准设备检测完毕后,系统BIOS内部的支持即插即用的代码将开始检测和配置系统中安装的即插即用设备,每找到一个设备之后,系统BIOS都会在屏幕上显示出设备的名称和型号等信息,同时为该设备分配中断、DMA通道和I/O端口等资源。
##1第八步:
到这一步为止,所有硬件都已经检测配置完毕了,多数系统BIOS会重新清屏并在屏幕上方显示出一个表格,其中概略地列出了系统中安装的各种标准硬件设备,以及它们使用的资源和一些相关工作参数。
##1第九步:
接下来系统BIOS将更新ESCD(ExtendedSystemConfiguration Data,扩展系统配置数据)。
ESCD是系统BIOS用来与操作系统交换硬件配置信息的一种手段,这些数据被存放在CMOS(一小块特殊的RAM,由主板上的电池来供电)之中。
通常ESCD数据只在系统硬件配置发生改变后才会更新,所以不是每次启动机器时我们都能够看到“Update ESCD…Success”这样的信息,不过,某些主板的系统BIOS在保存ESCD数据时使用了与Windows
9x不相同的数据格式,于是Windows9x在它自己的启动过程中会把ESCD数据修改成自己的格式,但在下一次启动机器时,即使硬件配置没有发生改变,系统BIOS也会把ESCD的数据格式改回来,如此循环,将会导致在每次启动机器时,系统BIOS都要更新一遍ESCD,这就是为什么有些机器在每次启动时都会显示出相关信息的原因。
##1第十步:
ESCD更新完毕后,系统BIOS的启动代码将进行它的最后一项工作,即根据用户指定的启动顺序从软盘、硬盘或光驱启动。
以从C盘启动为例,系统BIOS将读取并执行硬盘上的主引导记录,主引导记录接着从分区表中找到第一个活动分区,然后读取并执行这个活动分区的分区引导记录,而分区引导记录将负责读取并执行IO.SYS,这是DOS和Windows9x最基本的系统文件。
Windows 9x的IO.SYS首先要初始化一些重要的系统数据,然后就显示出我们熟悉的蓝天白云,在这幅画面之下,Windows将继续进行DOS部分和GUI(图形用户界面)部分的引导和初始化工作。
如果系统之中安装有引导多种操作系统的工具软件,通常主引导记录将被替换成该软件的引导代码,这些代码将允许用户选择一种操作系统,然后读取并执行该操作系统的基本引导代码(DOS和Windows的基本引导代码就是分区引导记录)。
上面介绍的便是计算机在打开电源开关(或按Reset键)进行冷启动时所要完成的各种初始化工作,如果我们在DOS下按Ctrl+Alt+Del组合键(或从Windows中选择重新启动计算机)来进行热启动,那么POST过程将被跳过去,直接从第三步开始,另外第五步的检测CPU和内存测试也不会再进行。
我们可以看到,无论是冷启动还是热启动,系统BIOS都一次又一次地重复进行着这些我们平时并不太注意的事情,然而正是这些单调的硬件检测步骤为我们能够正常使用电脑提供了基础。
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
BootSector结构简介
BootSector的组成
BootSector也就是硬盘的第一个扇区,它由MBR(MasterBootRecord),
DPT(DiskPartitionTable)和BootRecordID 三部分组成.
MBR又称作主引导记录占用BootSector的前446个字节(0to0x1BD),
存放系统主引导程序(它负责从活动分区中装载并运行系统引导程序).
DPT即主分区表占用64个字节(0x1BEto0x1FD),记录了磁盘的基本分区
信息.主分区表分为四个分区项,每项16字节,分别记录了每个主分区的信息
(因此最多可以有四个主分区).
BootRecordID即引导区标记占用两个字节(0x1FEand0x1FF),对于合法
引导区,它等于0xAA55,这是判别引导区是否合法的标志.
BootSector的具体结构如下图所示(参见NightOwl大侠的文章):
0000 |------------------------------------------------|
| |
| |
| MasterBootRecord |
| |
| |
| 主引导记录(446字节) |
| |
| |
| |
01BD | |
01BE |------------------------------------------------|
| |
01CD | 分区信息 1(16字节) |
01CE |------------------------------------------------|
| |
01DD | 分区信息 2(16字节) |
01DE |------------------------------------------------|
| |
01ED | 分区信息 3(16字节) |
01EE |------------------------------------------------|
| |
01FD | 分区信息 4(16字节) |
|------------------------------------------------ |
|01FE |01FF |
| 55 | AA |
|------------------------------------------------ |
系统启动过程简介
系统启动过程主要由一下几步组成(以硬盘启动为例):
BIOS芯片是主板上一块长方型或正方型芯片,BIOS中主要存放:
自诊断程序:
通过读取CMOSRAM中的内容识别硬件配置,并对其进行自检和初始化;
CMOS设置程序:
引导过程中,用特殊热键启动,进行设置后,存入CMOSRAM中;
系统自举装载程序:
在自检成功后将磁盘相对0道0扇区上的引导程序装入内存,让其运行以装入DOS系统;
主要I/O设备的驱动程序和中断服务;
1.开机:
-)
2.BIOS加电自检(PowerOnSelfTest--POST)
内存地址为0ffff:
0000
3.将硬盘第一个扇区(0头0道1扇区,也就是BootSector)
读入内存地址0000:
7c00处.
4.检查(WORD)0000:
7dfe是否等于0xaa55,若不等于
则转去尝试其他启动介质,如果没有其他启动介质则显示
"NoROMBASIC"然后死机.
5.跳转到0000:
7c00处执行MBR中的程序.
6.MBR首先将自己复制到0000:
0600处,然后继续执行.
7.在主分区表中搜索标志为活动的分区.如果发现没有活动
分区或有不止一个活动分区,则转停止.
8.将活动分区的第一个扇区读入内存地址0000:
7c00处.
9.检查(WORD)0000:
7dfe是否等于0xaa55,若不等于则
显示"MissingOperatingSystem"然后停止,或尝试
软盘启动.
10.跳转到0000:
7c00处继续执行特定系统的启动程序.
11.启动系统...
以上步骤中2,3,4,5步是由BIOS的引导程序完成.6,7,8,9,10
步由MBR中的引导程序完成.
一般多系统引导程序(如SmartFDISK,BootStar,PQBoot等)
都是将标准主引导记录替换成自己的引导程序,在运行系统启动程序
之前让用户选择要启动的分区.
而某些系统自带的多系统引导程序(如lilo,NTLoader等)
则可以将自己的引导程序放在系统所处分区的第一个扇区中,在Linux
中即为SuperBlock(其实SuperBlock是两个扇区).
注:
以上各步骤中使用的是标准MBR,其他多系统引导程序的引导
过程与此不同.
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
了解计算机系统启动过程
此文译自WindowsXPResourceKitWebResource中UnderstandingtheStartupProcess一章
为了诊断和修复启动故障,您需要理解启动过程中发生了什么。
第一步隔离启动问题,判断问题是发生在Microsoft®Windows®XPProfessional启动之前还是之后。
启动失败的根本原因,包括相关因素,可能是来自多方面的,比如用户错误,应用程序错误,硬件问题,病毒问题。
如果问题过于严重,您可能需要重新安装WindowsXPProfessional或者从备份介质中恢复文件。
在基于x86的系统上,发生在启动故障operatingsystemloader(Ntldr)可能意味着启动文件丢失或者被删除,或者硬盘主引导记录(MBR)损坏,或者分区表,或者引导扇区的损坏。
如果问题发生在启动期间,那么系统可能存在不兼容的软件或者驱动,不兼容或者设置错误的硬件,或者系统文件损坏。
基于Itanium系统的计算机启动或者和x86系统类似。
详见后面的章节"StartupPhasesforItanium-basedSystems"
基于x86系统的启动过程
WindowsXPProfessional启动过程和Microsoft®WindowsNT®version4.0andMicrosoft®Windows®2000类似,区别于Microsoft®MS-DOS®,Microsoft®Windows®95,Microsoft®Windows®98,andMicrosoft®Windows®MillenniumEdition(WindowsMe)这些系统。
所有运行WindowsXPProfessional的系统都遵循如下启动顺序:
上电自检(POST)阶段
初始化启动阶段
启动装载阶段
检测、设置硬件阶段
系统核心装载阶段
登陆阶段
上述的启动过程适用于正常关机后的系统启动或者重新启动,从休眠或者待机状态恢复的情况例外,后者请参考后面的章节"ResolvingPowerManagementProblemsonx86-basedSystems"
为了WindowsXPProfessional能够引导,系统和启动分区必须包含表28.1.中的文件。
表28.1 基于x86系统上WindowsXPProfessional的启动文件
文件名文件所处位置 描述
Ntldr系统分区根目录 操作系统装载器
Boot.ini系统分区根目录 该文件指定WindowsXPProfessional的安装路径。
对于多引导系统Boot.ini包含一个显示在启动菜单上的操作系统选择菜单。
Bootsect.dos(仅适用于多引导系统)系统分区根目录 Ntldr将会装载此文件,以读取可能包含MS-DOS,Windows95,Windows98,orWindowsMe等OS的WindowsXPProfessional多引导系统设定。
Bootsect.dos包含这些操作系统的引导扇区,文件属性为系统、隐藏。
N系统分区根目录 此文件将扫描硬件设置信息,并传递给Ntldr
Ntbootdd.sys系统分区根目录(SCSI或者ATA等固件本身禁用或者不支持INT-13中断扩展调用的设备需要此文件). 该驱动程序用于访问不使用BIOS,而连接到SCSI或者ATA的硬盘驱动器,Thecontentsofthisfiledependonthestartupcontrollerused.
Ntoskrnl.exesystemroot\System32 WindowsXPProfessional操作系统的核心(也被叫做kernel)。
作为kernel的一部分,运行在处理器特权模式下的代码,允许直接访问系统数据和硬件。
在安装WindowsXPProfessional操作系统期间,如果是单处理器系统,setup程序从操作系统光盘上复制Ntoskrnl.exe文件,如果是多处理器系统,Setup从安装光盘上复制Ntoskrnlmp.exe并将它重命名为Ntoskrnl.exe.
Hal.dllsystemroot\System32 硬件抽象层动态(HAL)链接库文件。
HALabstracts从操作系统提取底层硬件信息,并给相同类型的设备,提供公用编程接口。
Microsoft®Windows®XPProfessional操作系统光盘包含若干Hal文件,Setup将适合您系统硬件设置的文件复制到您的计算机,并重命名为Hal.dll.
Systemregistryfilesystemroot\System32\Config\System 此注册表文件包含创建KEY_LOCAL_MACHINE\SYSTEM注册表键值所需要的数据。
该键值包含了操作系统启动设备和系统服务所需要的信息。
Devicedriverssystemroot\System32\Drivers 一些硬件设备的驱动程序文件,比如键盘、鼠标、显卡。
注:
WindowsNT4.0,Windows2000,andWindowsXPProfessional定义"系统"和"启动"分区有别于启动操作系统。
系统卷包含启动WindowsXPProfessional所必须的文件,比如Windowsloader(Ntldr)。
启动卷WindowsXPProfessional操作系统文件和文件夹比如systemroot和systemroot\System32。
在基于x86系统的计算机上,启动卷和系统卷可以但不一定是同一个卷。
在表28.1中,systemroot是众多环境变量之一,用于将象文件和文件路径这样的字符串关联到变量,以便WindowsXPProfessional应用程序和服务使用。
例如,通过使用环境变量,脚本不同修改就可以运行在不同环境设置的计算机上。
您可以通过在命令行执行 set命令查看环境变量列表。
关于环境变量,请参考WindowsXPProfessional中关于"Toaddorcha
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电脑 启动 过程