BIOS启动并加载OS

回顾CPU加电的第一条指令

在0xfffffff0处是存放着一条长跳转指令,直接跳到bios可执行代码区,而这些代码都是固化在主板上的rom区里的。0xF0000~0xFFFFF被映射到Bios ROM。


BIOS 初始化过程
  • BIOS首先会进行POST(power on self test) 上电自检, 检查硬件的好坏 内存地址为0fff:0000
  • 查找并检查显卡等接口卡的BIOS,并进行设备的初始化
  • 执行系统BIOS,进行系统检测,检测和配置系统即插即用设备
  • 更新CMOS中的扩展系统配置数据(ESCD)Extended System Configuration Data,这里保存的是设备资源分配表,每次开机更新是为了应对硬件改动造成与原来的资源分配表冲突.
  • 然后按照启动顺序从软盘.硬盘.光驱启动
BIOS加载OS过程

1.MBR将自己复制到内存地址 0000:0600处,然后开始执行

MBR(主引导扇区)位于硬盘的 0 磁道 0 柱面第1扇区,该磁道均为隐含扇区,普通的磁盘访问命令无法访问,改扇区一共512个字节
在这里插入图片描述


2.在主分区表中搜索标志为活动的分区. 如果发现没有活动分区或有不止一个活动分区, 则转停止.

MBR 主引导记录:

1.启动代码 :446字节
检查分区表正确性
加载并跳转到硬盘上的引导程序


2.硬盘分区表:64字节
描述分区状态和位置
每个描述信息占据16个字节


3.结束标志55AA[0x55 0xAA]双字节
判断是否合法


3.将活动分区的第一个扇区读入内存地址 0000:7c00 处.

硬盘分区表

BYTE State : 分区状态, 0 = 未激活, 0x80 = 激活 (注意此项)
BYTE StartHead : 分区起始磁头号
WORD StartSC : 分区起始扇区和柱面号, 底字节的低6位为扇区号,
高2位为柱面号的第 9,10 位, 高字节为柱面号的低 8 位
BYTE Type : 分区类型, 如 0x0B = FAT32, 0x83 = Linux 等,
00 表示此项未用
BYTE EndHead : 分区结束磁头号
WORD EndSC : 分区结束扇区和柱面号, 定义同前
DWORD Relative : 在线性寻址方式下的分区相对扇区地址
(对于基本分区即为绝对地址)
DWORD Sectors : 分区大小 (总扇区数)

4. 检查 (WORD) 0000:7dfe 是否等于 0xaa55,若不等于则显示 “Missing Operating System” 然后停止, 或尝试软盘启动.

分区引导扇区格式
在这里插入图片描述
JMP:跳转指令
文件卷头:文件系统描述信息
启动代码:跳转到加载程序
结束标志:55AA

5. 跳转到 0000:7c00 处继续执行特定系统的启动程序.

6. 系统启动>>>

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值