计算机启动过程——每个程序员都应该知道

写在前面:今天是2013年的最后一天,应该有一种纪念的方式,记录给需要的人。

计算机的启动包括:

1、加电

2、自检

3、初始化设备

4、测试设备

5、更新ESCD,即Extended System Configuration Data

6、启动操作系统

下面我们来意义详解;


计算机的启动——加电

      

      电源开关被按下时,机器就开始供电,主版的控制芯片组会向CPU(Central Processing Unit,中央处理器)发出一个RESET(重置)信号,让CPU恢复到初始状态。

      当芯片组检测到电源已经开始稳定供电时就会撤去RESET信号(松开台式机的重启键是一样的效果),这是CPU就从 0xffff0 处开始执行指令。这个地址在系统BIOS(Basic Input/Output System,基本输入输出系统)的地址范围内,大部分系统BIOS厂商放在这里的都只是一条跳转指令,跳到系统BIOS真正的启动代码处。


计算机的启动——自检


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

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


计算机的启动——初始化设备


      POST后接下来系统BIOS将查找显卡的BIOS,存放显卡BIOS的ROM芯片的起始地址通常设置 0x0000 处,系统BIOS在这个地方找到显卡BIOS之后就调用它的初始化代码,由显卡BIOS来初始化显卡,此时多数显卡都会在屏幕上显示出一些初始化信息,介绍生产厂商、图形芯片类型等内容。

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


计算机的启动——测试设备


      查找完所有其它设备的BIOS之后,系统BOS将显示出它自己的启动画面,其中包括所有系统BIOS的类型、序列号和版本号等内容。接着系统BIOS将检测和显示CPU的类型和工作频率,然后开始测试所有的RAM,并同时在屏幕上显示内存测试的进度。内存测试通过之后,系统BIOS将开始检测系统中安装的一些标准硬件设备,包括硬盘、光驱、串口、并口、软驱等,另外绝大多数较新版本的系统BIOS在这个过程中还要自动检测和设置内存的定时参数。硬件参数和访问模式等。

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


计算机的启动——更新ESCD


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

      接下来系统BIOS将更新ESCD(Extended System Configuration Data,扩展系统配置数据)。ESCD是系统BIOS用来与操作系统交换硬件配置信息的一种手段,这些数据存放在CMOS(Complementray Metal Oxide Semiconductor,互补金属氧化物半导体)之中。


计算机启动过程——启动操作系统


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

      以Windows XP为例,系统BIOS将启动盘(一般是主硬盘)的第一扇区(Boot Sector,引导扇区)读入到内存 0x7c00处,并检查0x7cdfe地址的内存,如果其内容是0xaa55,跳转到0x7c00处执行MBR(Master Boot Record,主引导记录),MBR接着从分区表(Partition Table)中找到第一个活动分区Active Partition,一般是C盘分区,然后按照类似方法读取并执行这个活动分区的引导扇区(Partition Boot Sector),而引导扇区将负责读取并执行NTLDR(NT Loader,Windows NT的加载程序),然后主动权就移交给了Windows。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值