-
什么是操作系统?
— Windows,Unix,Linux,Mac OS,Android,IOS…
— 操作系统是直接运行于硬件之上的计算机程序
— 操作系统用于管理和控制计算机的硬件与软件资源
— 操作系统为用户软件的开发提供必要的服务和接口 -
现代计算机系统架构:
-
BIOS-(base input & output system)
— BIOS 是计算机上电后第一个运行的程序
— BIOS 首先检测硬件状态,检测通过后立即进行硬件初始化
— BIOS 会在内存中建立中断向量表(提供硬件访问的方法)
— BIOS 最后将控制权交由主引导程序执行
注:
- 系统启动流程(x86架构)
BIOS 加载主引导程序,主引导程序加载操作系统内核
提出问题:BIOS 也是一个程序,那么是谁加载 BIOS?
- BIOS 的运行机制:
— BIOS 存储于 ROM 中,地址映射为0xF0000-0xFFFFF(实地址)
— BIOS 的入口地址为:0xFFFF0
— 硬件电路的特殊设计使得:
开机后,CPU 从0xFFFF0处开始执行
所以,BIOS 不被谁加载执行,而是通过硬件设计之后 CPU 直接从 BIOS 的入口地址开始执行
- BIOS 的最后使命:
— 按照用户设置扫描各个存储介质(光驱,软驱,U盘,等)
— 发现主引导区后,将主引导区中的主引导程序载入内存
— 主引导程序在内存中的入口地址为0x7c00
— 将控制权交由主引导程序执行(jmp 0x7c00)
思考:BIOS如何在存储介质中寻找主引导区?如何判断引导区中有没有主引导程序?
-
主引导区(MBR:Master Boot Record)
— 位置:位于存储介质的最开始位置处,大小为512字节
— 特点:前512字节的最后2个有效字节为0x55aa—— 是否有效的标志
— 数据:0x55aa之前的数据被视为主引导程序 -
问题1:是不是每个存储介质前512字节就一定是主引导区?
否,BIOS 会查看前512字节的最后2个字节是否为0x55aa,如果是,那么BIOS 会认为这个存储区域为主引导区 -
问题2:如果 BIOS 判断了是主引导区,那么是不是主引导区里面的数据就是合法的主引导程序?
否,很可能加载到内存后,执行出错 -
更详细的启动流程(x86)
小结:
— BIOS是计算机上电后第一个运行的程序
— BIOS进行必要的初始化,并加载运行主引导程序
— 主引导程序位于存储介质的最开始512字节处
— 主引导程序负责后续初始化,并加载运行操作系统内核