1. BIOS初始化
1.1 CPU启动后,它会先加载BIOS模块代码到内存中执行。
1.2 BIOS会初始化硬件设备,初始化初始中断描述符表,这个中断描述符表叫“初始”是因为它是供内存描述符表初始化之前使用的,内核描述符表初始化后就会被清除。
1.3 BIOS会从启动盘中读取第一块内容并加载到内存的0x7c00,之后就跳转到0x7c00出执行。到这里,BIOS使命就完成了,boot loader模块开始运行。
2. BOOT模块
2.1 首先,看一下JOS的磁盘布局:boot loader存在第一扇区,而内核代码从第二扇区开始存储。
2.2 到目前为止,处理器还处于实模式状态,所以boot loader的第一个工作就是重置数据段寄存器DS,ES,SS为0
2.3 开启A20地址线,为进入保护模式做准备
2.4 加载全局描述符表,置位CR0寄存器的PE位,通过ljmp指令正式进入保护模式