今天看了前两章,现将重点记录如下:
操作系统的启动,关键点时同BIOS的接口:
这里有两个地址很重要,
a, 0x7c00+510=0x7dfe登记标志位(两个byte): 0xaa55
b, 0x7c00,操作系统加载的目标地址
系统启动过程
1 Bios清零CPU现场: 发送RESET信号
2 CPU从0xf ff f0处开始执行指令,该地址在系统的BIOS地址范围内
PS: 大部分系统BIOS厂商在该地址放置的是一条跳转指令
3 BIOS启动代码首先要POST(Power-On self Test, 加点自检)
此时出错,只有机箱喇叭的发声警报,因为还未初始化显卡。
4 初始化设备:
显卡BIOS起始地址一般为0xC 00 00处,系统
BIOS自检后调用该地址的代码。
然后调用其他设备的BIOS程序来进行相关初始化。
5 测试设备
初始化后,系统BIOS显示其自身的信息,
然后是CPU测试,
然后是内存测试,
然后是标准硬件(硬盘,光驱,串口,并口,软驱)的检查与测试
然后是即插即用设备的检测,并为该设备分配中断,DMA通道和I/O端口等资源
6 更新ESCD
Extended System Configuration Data, 是系统BIOS用于同操作系统交换硬件配置信息的一种手段。
这些数据一般存于CMOS中。
7 启动操作系统
将启动装置(光盘,软盘,硬盘)的第一个山区读入内存,并检查0x7dfe地址,如果其值为0xaa55,
则跳转到0x7c00处执行MBR(master boot record),MBR再负责装载操作系统。