深入浅出操作系统(四)主引导程序的扩展(上)

1、限制

主引导程序的代码量不能超过512字节!!!

2、突破限制的思路

  • 主引导程序
    • 完成最基本的初始化工作
    • 从存储介质中加载程序到内存中
    • 将控制权交由新加载的程序执行
    • ……

3、问题

主引导程序如何加载存储介质中的其它程序?

4、文件系统

存储介质上组织文件数据的方法(数据组织的方式)

5、文件系统示例

  • FAT12DOS时代的早期文件系统
  • FAT12结构非常简单,一直沿用于软盘
  • FAT12的基本组织单位
    • 字节(Byte):基本数据单位
    • 扇区(Sector):磁盘中的最小数据单元
    • 簇(Cluster):一个或多个扇区

6、解决方案

  • 使用FAT12对软盘( data.img )进行格式化
  • 编写可执行程序(Loader)并将其拷贝到软盘中
  • 主引导程序(Boot)在文件系统中查找Loader
  • Loader复制到内存中,并跳转到入口处执行

7、实验:往虚拟软盘中写入文件

  • 原材料:FreeDos, Bochs , bximage
  • 步骤:
    • 创建虚拟软盘data.img
    • 在FreeDos中进行格式化(FAT12)
    • 将data.img挂载到Linux中,并写收入文件

8、编程实验:将文件写入虚拟软盘

9、下一步的工作

Boot查找目标文件(Loader),并读取文件的内容!

10、深入FAT12文件系统

FAT12文件系统由引导区,FAT表,根目录项表和文件数据区组成。

11、FAT12的主引导区

主引导区存储的比较重要的信息是文件系统的类型,文件系统逻辑扇区总数,每簇包含的扇区数,等。

主引导区最后以0x55AA两个字节 作为结束,共占用一个扇区。

12、实验:读取data.img中的文件系统信息

  • 步骤:
    • 创建Fat12Header结构体类型
    • 使用文件流读取前512字节的内容
    • 解析并打印相关的信息

13、编程实验:读取FAT12文件系统信息

14、实验结论

1. FreeDos中的format程序在格式化软盘的时候自动在第0扇区生成了一个主引导程序,这个主引导程序只打印一个字符串

2. 文件格式和文件系统都是用于定义数据如何存放的规则,只要遵循这个规则就能够成功读写目标数据

15、小结

  • 主引导程序的代码量不能超过512字节
  • 可以通过主引导程序加载新程序的方式突破限制
  • 加载新程序需要依赖于文件系统
  • FAT12是一种早期用于软盘的简单文件系统
  • FAT12文件系统的重要信息存储于 0 扇区
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值