- Computer Startup–加电
- 电源开关打开,开始供电,主板的控制芯片组向CPU发出一个RESET信号,让CPU恢复到初始状态。
- 当芯片组检测到电源已经稳定供电,就会撤去RESET信号。
- CPU从
0xffff0
处开始执行指令。 - 该地址在系统BIOS(Basic I/O System)的地址范围内,大部分系统BIOS厂商放在这里的都只是一条跳转指令,跳转到系统BIOS真正的启动代码处。
- Computer Startup–自检
- 系统BIOS的启动代码首先要做的事情是进行POST(Power-On Self Test,加电后自检)
- POST的主要任务是检测系统中一些关键设备是否存在和能否正常工作,例如内存、显卡、键盘等设备。
- 由于POST 是最早进行的检测过程,此时尚未初始化显卡,如果系统BIOS 在POST 的过程中发现了一些致命错误,有时不会将错误信息在屏幕上显示。
- 例如没有找到内存或者内存有问题(此时只会检查640K 常规内存),或其它关键设备,系统BIOS 就会直接控制喇叭发声来报告错误,声音的长短和次数代表了错误的类型。
- Computer Startup–初始化设备
- 接下来系统BIOS 将查找显卡的BIOS,显卡BIOS在ROM 芯片的起始地址通常设在
0xC0000
处,系统BIOS 在该地址处找到显卡BIOS 之后就调用它的初始化代码,由显卡BIOS 来初始化显卡。 - 此时多数显卡都会在屏幕上显示出一些初始化信息,介绍生产厂商、图形芯片类型等内容。
- 系统BIOS 接着会查找其它设备的BIOS 程序,找到之后同样要调用这些BIOS内部的初始化代码来初始化相关的设备。
- Computer Startup–测试设备
- 查找完所有其它设备的BIOS 之后,系统BIOS 将显示出它自己的启动画面,其中包括有系统BIOS 的类型、序列号和版本号等内容。
- 接着系统BIOS 将检测和显示CPU 的类型和工作频率,然后开始测试所有的RAM (Random Access Memory),并同时在屏幕上显示内存测试的进度。
- 内存测试通过之后,系统BIOS 将开始检测系统中安装的一些标准硬件设备,包括硬盘、光驱、串口、并口、软驱等。
- 另外绝大多数较新版本的系统BIOS 在这一过程中还要自动检测和设置内存的定时参数、硬盘参数和访问模式等。
- 标准设备检测完毕后,系统BIOS 内部的支持即插即用的代码将开始检测和配置系统中安装的即插即用设备,每找到一个设备之后,系统BIOS 都会在屏幕上显示出设备的名称和型号等信息,同时为该设备分配中断(INT)、DMA (Direct Memory Access,直接存储器存取)通道和I/O (Input/Output,输入输出)端口等资源。
- Computer Startup–更新SECD
- 所有硬件都检测配置完毕后,多数系统BIOS 会重新清屏并在屏幕上方显示出一个表格,其中概略地列出了系统中安装的各种标准硬件设备,以及它们使用的资源和一些相关工作参数。
- 接下来系统BIOS 将更新ESCD (Extended System Configuration Data,扩展系统配置数据)
- ESCD (Extended System Configuration Data,扩展系统配置数据)是系统BIOS 用来与操作系统交换硬件配置信息的一种手段,这些数据被存放在CMOS (Complementary Metal Oxide Semiconductor,互补金属氧化物半导体)中;
-
- 操作系统将根据这些信息配置与使用设备
-
- 有些设备安装后需要重启机器
- Computer Startup–启动操作系统
-
ESCD 更新完毕后,系统BIOS 的启动代码将进行它的最后一项工作,即根据用户指定的启动顺序从软盘、硬盘及光驱等启动操作系统。
-
以Windows为例
- 系统BIOS将启动盘(一般是主硬盘)的主引导扇区(MBR, 主引导记录)读入到内存的
0x7c00
处; - 检查
0x7dfe
地址的内存,如果其内容是0xAA55
,就跳转到0x7c00
处执行MBR (Master Boot Record,主引导记录, 512字节); - MBR 从分区表(Partition Table)中找到第一个活动分区(Active Partition,一般是C 盘第一个分区),然后按照类似方式读取并执行这个活动分区的引导扇区(Partition Boot Sector),引导扇区负责读取并执行NTLDR (NT Loader,Windows NT的加载程序),完成Windows的启动 。
- 如果你自己写一个操作系统,一般是从修改主引导扇区开始(汇编),因为BIOS将主引导扇区装入到内存的
0x7c00
处并执行之。需要对所用文件系统在磁盘上的布局相当熟悉。