---- 整理自狄泰软件唐佐林老师课程
查看所有文章链接:(更新中)深入浅出操作系统 - 目录
文章目录
1. BIOS - Base input & Output system
- BIOS是上电后第一个运行的程序
- BIOS首先检测硬件状态,检测通过后立即进行硬件初始化工作
- BIOS会在内存中建立 中断向量表(提供硬件访问的方法)
- BIOS最后将控制权交由 主引导程序 执行
BIOS不是软件 ,而是 固件Firmware
固件是固化在硬件中的程序,在硬件出厂前已经烧写固定。
1.1 系统启动流程
==> 上电
==> 运行BIOS(0xFFFF0)
==> 硬件初始化
==> 建立中断向量表
==> 加载运行主引导程序(0x07c00)
==> 软件初始化
==> 加载运行操作系统内核
==> 系统初始化
==> …
问题:
- BIOS是如何被运行起来的?
1.2 BIOS的运行机制
- BIOS存储于ROM中,地址映射为0xF0000~0xFFFFF(实地址)
- BIOS的入口地址为:0xFFFF0
- 硬件电路的特殊设计使得:
- 开机后,CPU从0xFFFF0处开始执行,也即 开机后运行BIOS
1.3 BIOS的最后使命
- 按照用户设置扫描各个 存储介质(光驱、软驱、U盘,等),寻找是否有 主引导程序
- BIOS发现主引导程序后,BIOS将存储介质主引导区中的 主引导程序载入内存
- 主引导程序在内存中的入口地址为 物理地址 0x07c00
- 将控制权交由主引导程序执行(jmp 0x07c00)
思考:
- BIOS如何在存储介质中寻找主引导区?
- 如何判断引导区中有没有主引导程序?
1.3.1 主引导区(MBR:Master Boot Record)
- 位置:位于存储介质的 最开始处,大小为 512字节
- 特点:前512字节的 最后两个字节为 0x55aa
- 数据:0x55aa之前的数据被视为主引导程序
1.3.2 更详细的系统启动流程(x86架构)
2. 小结
- BIOS是计算机上电后第一个运行的程序
- BIOS进行必要的初始化 ,并加载运行主引导程序
- 主引导程序位于存储介质的最开始512字节处
- 主引导程序负责后续初始化,并加载操作系统内核