我正在构建一个类似于 FAT 的文件系统。它具有以下设置:
| MBR | 脂肪区 | 资料区 |
所以如果给定sector_size(以字节为单位的扇区大小),cluster_size(以扇区为单位的簇大小)和disk_size(以簇为单位的磁盘大小),我如何计算FAT区域的长度?
我知道 MBR 从簇 0 开始,FAT Area 从簇 1 开始。但是我不知道我可以使用什么信息来计算 FAT 区域的长度。
另外,根目录从数据区的第一个簇开始,那么如何计算根目录的长度呢?
我正在构建一个类似于 FAT 的文件系统。它具有以下设置:
| MBR | 脂肪区 | 资料区 |
所以如果给定sector_size(以字节为单位的扇区大小),cluster_size(以扇区为单位的簇大小)和disk_size(以簇为单位的磁盘大小),我如何计算FAT区域的长度?
我知道 MBR 从簇 0 开始,FAT Area 从簇 1 开始。但是我不知道我可以使用什么信息来计算 FAT 区域的长度。
另外,根目录从数据区的第一个簇开始,那么如何计算根目录的长度呢?
这是 FAT12 (MSDOS 6.22) 软盘映像的样子:
驱动几何
胖的
cluster=N*sector
在哪里N={1,2,3,4,...}
heads*tracks*sectors*sector_size
脂肪大小
floor(512*8/12)=341
条目ceil(4096/341)=12
扇区FAT_entries=(drive_size-reserved)/cluster_size
cluster_size=(drive_size-reserved)/FAT_entries
16bit
(2Byte)2heads*1024tracks*64sectprs*512Byte=64MByte
cluster_size=4096Byte
FAT_entries=64*1024*1024/4096=16*1024