• 什么是操作系统?
    — Windows,Unix,Linux,Mac OS,Android,IOS…
    — 操作系统是直接运行于硬件之上的计算机程序
    — 操作系统用于管理和控制计算机的硬件与软件资源
    — 操作系统为用户软件的开发提供必要的服务和接口

  • 现代计算机系统架构:
    门徒进阶课第1课:进阶操作系统

  • BIOS-(base input & output system)
    — BIOS 是计算机上电后第一个运行的程序
    — BIOS 首先检测硬件状态,检测通过后立即进行硬件初始化
    — BIOS 会在内存中建立中断向量表(提供硬件访问的方法)
    — BIOS 最后将控制权交由主引导程序执行

注:
门徒进阶课第1课:进阶操作系统

  • 系统启动流程(x86架构)
    门徒进阶课第1课:进阶操作系统
    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)
    门徒进阶课第1课:进阶操作系统

小结:

— BIOS是计算机上电后第一个运行的程序

— BIOS进行必要的初始化,并加载运行主引导程序

— 主引导程序位于存储介质的最开始512字节处

— 主引导程序负责后续初始化,并加载运行操作系统内核

相关文章: