操作系统引导过程
The Boot Process
1. ⚡Power ON Reset
激活CPU
所有寄存器初始化为0,CS:IP被强制初始化为0xF0000:0xFFF0
- 在实模式下被转化为0xFFFF0地址,所以第一条指令位于0xFFFF0
- 第一条指令:转移指令 jmp far f000:e05b
- 作用是:Jump to ROM BIOS。BIOS代码真正保存在0xfe05b处。从0xFFFF0到0xFFFFF只有16个字节的空间,too small,所以存放一个转移指令很合理。
2. CPU will move to BIOS in ROM : Basic Input Output System
当JMP到真正的BIOS区域时,BIOS开始进行初始化的工作。
3. BIOS will be executed (POST: Power On Self Test
)
- 首先自检,通过BIOS中断呼叫对硬体进行测试、初始化。如果有故障,主板会发出不同含义的蜂鸣,启动终止。
- All the hardware will be tested (Integrity Check)
- 其次,提供基本服务。从现在开始要用到键盘和鼠标了,这些都是通过中断进行的,所以建立中断向量表和中断服务程序,在0x00000~0x003FF处建立数据结构,中断向量表并填写中断例程。
- 同时,为了显示诊断资讯或显示设定画面,需要在内存空间映射显存的空间,在显示器上显示一些字符。
- 做完自己的事情之后,开始打听操作系统的下落,寻找启动盘
- 最后一个跳转指令:JMP 0:0x7c00
4. BIOS will load MBR to RAM: Master Boot Record
- First sector of bootable disk, < 512 bytes in size
- MBR的作用:告诉CPU去硬盘的哪个主分区去找操作系统
5. MBR will load Boot-Loader to RAM
- MBR包含硬盘分区表,硬盘分区表以特定的标识符区分活动分区
active partition
: is the partition that the computer will boot fromMaster boot record
扫描硬盘分区表,识别活动分区,加载活动分区partition boot record
PBR在活动分区的第一个扇区,作用是寻找并激活分区根目录下的启动管理器:用于引导操作系统的程序
- PBR搜索并加载启动管理器
- 最后,终于可以加载操作系统