系统的初始化代码在内存的ROM引导下开始执行
内存中有一段BIOS启动固件
cpu初始换完成之后处于实模式,地址总线只有20位地址可用
在BIOS中有基本的输入输出的程序,系统设置信息,开机自检程序,系统自启动程序等等
BIOS
会将加载程序从磁盘的引导扇区(512bytes)加载到0x7c00,然后跳转到CS:IP = 0000:7c00,此时控制权转到了从磁盘上读进的程序
加载程序
将操作系统的代码和数据从硬盘加载到内存中
跳转到操作系统的起始地址
BIOS系统调用
- int 10h:字符显示
- int 13h:磁盘扇区读写
- int 15h:检测内存大小
- int 16h:键盘输入
- inter的cpu 只能在x86的实模式下访问
系统启动流程
加电->BIOS->主引导记录->活动分区->加载程序->内核镜像
CPU初始化
CPU加电稳定后从0xffff0读第一条指令
- CS:IP = 0xf000:fff0
- 第一条指令是跳转指令
CPU初始状态为16位实模式
- CS:IP 为16位
- 指令指针PC = 10h*CS+IP
- 最大地址空间1mb(20位的地址总线)
BIOS初始化过程
- 硬件自检POST
检测系统关键部件 - 执行系统BIOS 进行系统自检
- 更新CMOS中的扩展系统配置数据ESCD
主引导记录MBR格式
- 启动代码 446
检查分区表正确性
加载并跳转到磁盘上的引导程序 - 硬盘分区表 64
描述分区状态和位置
每个分区描述信息占据16字节 - 结束标志 2 55AA
主引导记录的有效标志
分区引导扇区格式
- 跳转指令 跳到启动代码
与平台相关代码 - 文件卷头 文件系统描述信息
- 结束标志 55AA
加载程序(bootloader)
系统启动规范
BIOS
- 固化到计算机主板上的程序
- 包括系统设置,自检程序和系统启动程序
- BIOS-MBR,BIOS-GPT(分区不再是四个),PXE
UEFI
- 接口标准
- 在所有平台上一致的操作系统启动服务