第一章:从开机加电到执行main函数之前的过程:
实模式(Real Mode):是Inter80286和之后的80x86兼容CPU的操作模式。特性:是一个20位的存储器地址空间(1MB的存储器可被寻址),直接软件访问BIOS及周边硬件,没有硬件支持的分页机制和实时多任务概念。实模式寻址空间0x00000—0xFFFFF
1.1启动BIOS,准备实模式下的中断向量表和中断服务程序
1.1.1BIOS的启动原理
Inter将所有80x86系列的CPU的硬件都设计为加电即进入实模式状态运行,将CPU硬件逻辑设计为加电瞬间强行将CS的值置为0xF000,IP的值置为0xFFF0,这样CS:IP就指向0xFFFF0这个地址位置
IP/EIP(Instruction Pointer):指令指针寄存器,存在于CPU中,记录将要执行的指令在代码段内的偏移位置,和CS组合即为将要执行的指令的内存地址。实模式为绝对地址,指令指针为16位,即IP;保护模式下为线性地址,指令指针为32位,即EIP
CS(Code Segment Register):代码段寄存器,存在CPU中,指向CPU当前执行代码在内存中的区域(定义了存放代码的存储器的起始地址)
这是一个纯硬件完成的动作;BIOS程序的入口地址就是0xFFFFF0
1.1.2BIOS在内存中加载中断向量表和中断服务程序
BIOS程序在内存最开始的位置(0x00000)用1KB的内存空间(0x00000~0x003FF)构建中断向量表,在紧挨着它的位置用256字节的内存空间构建BIOS数据区(0x00400~0x004FF),并在大约57KB以后的位置(0x0E05B)加载了8KB左右的与中断向量表相应的若干中断服务程序(0x00100是256字节,0x00400是1KB)
1.2加载操作系统内核程序并未保护模式做准备
1.2.1加载第一部分内核代码——引导程序(bootsect)
中断向量表(InTerrupt Vector Table):实模式中断机制的重要组成部分,记录所有中断号对应的中断服务程序的内存地址
中断服务(Interrupt Service)程序:通过中断向量表的索引对中断进行响应服务,是一些具有特定功能的程序。