您现在的位置是:首页 > 服务器相关

系统启动步骤和编写引导扇区(二)

batsom2020-12-11服务器相关

简介操作系统启动步骤:

操作系统启动步骤:
BIOS加电自检---->跳转引导扇区0x7c00---->加载内核进内存

FAT12文件系统(理论篇)
文件系统


 

FAT12_简介.png
文件系统示例


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

深入FAT12文件系统


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

FAT12的主引导区


 
1 主引导区存储的比较重要的信息是文件系统的类型,文件系统逻辑扇区总数,

FAT12_文件信息.png

根目录区的大小和位置
FAT12_计算公式.png


 
1 可以看到根目录区起始于第19扇区

根目录区的目录项


 

FAT12_文件信息.png

FAT表 - FAT12的数据组织核心


 
1 - FAT1和FAT2是相互备份的关系 ,数据内容完全一致
2 - FAT表是一个关系图,记录了文件数据的先后关系
3 - 每一个FAT表项占用12比特
4 - FAT表的前2个表项规定不使用
5 - FAT表中的每个表项只占用12比特(1.5字节)
6 - FAT表一共记录了BPB_BytsPerSec * 9 * 2 / 3个表项 (9个扇区 * 512 /1.5)
7 - 可以使用一个short表示一个表项的值
8 - 如果表项值大于等于0xFF8,则说明已经到达最后一个簇
9 - 如果表项值等于0xFF7,则说明当前簇已经损坏

FAT表中的先后关系


 
1 - 以簇(扇区)为单位存储文件数据(这里一簇等于一扇区大小)
2 - 每个表项(vec[i])表示文件数据的实际位置(簇)
3 (1)DIR_FstClus表示文件第0簇(扇区)的位置
4 (2)vec[DIR_FstClus]表示文件第1簇(扇区)的位置
5 (3)vec[vec[DIR_FstClus]]表示文件第2簇(扇区)的位置...

FAT12数据物理组织示意
FAT12_物理.png
FAT12数据逻辑组织示意
FAT12_逻辑.png

FAT12文件系统(实战篇):

测试文件


 
1 创建虚拟硬盘

创建虚拟硬盘.png


 
1 格式硬盘

格式硬盘.png


 
1 添加文件

添加文件.png

由于根目录是从19扇区开始的,每个扇区是512字节,所以第一个字节位于偏移19*512=9728=0x2600
现在用二进制查看器查看!
看到三个文件名没?那么我们现在来查看文件内容!

查看文件内容.png


 
1 - 数据区起始簇(扇区)号为33,地址为0x4200(33 * 512)
2 - 数据区起始地址所对应的编号为2(不为0)(有了起始地址,这里可以用偏移地址)

A文件内容开始地址为:0×4200+(26-2)*0x200=0x8a00

看到内容没?

下面就是代码了!

请到我的网盘下载(在友链页面):
/batsom系统开发/batsom1/

郑重声明:

本站所有活动均为互联网所得,如有侵权请联系本站删除处理

随便看看

文章排行

本栏推荐

栏目更新