FAT文件系统中的内存转换如何工作?

green_tee

我需要用C创建自己的文件系统实现。我计划创建一个类似于FAT系统的系统。我们获得了一个大小为10MB的文件,该文件充当我们自己的“磁盘”。我知道FAT表存储簇号,而根目录存储有关我们创建的每个文件的其他相关信息(例如文件名,大小,上次修改的日期和时间,FAT中的起始块等)。但是我对群集号如何转换为磁盘上数据区域中的物理地址感到困惑。

例如,假设根目录中的条目说文件从FAT表的块100开始,而在FAT表的块100中是整数327,这是文件的下一个群集所在的位置。这些地址如何转换为磁盘数据区域中的物理地址?这些物理地址在哪里翻译和存储?

蔡司·伊孔

群集的大小在不同版本的FAT(FAT12,FAT16和FAT32)之间会有所不同,但通常,群集号指向的是连续编号的群集,无论其大小与现有文件系统的格式相同。我记得(很久以前),FAT12至少在硬盘上使用了2吉字节的群集(每个群集由四个512字节的扇区组成),最大群集数量为2 ^ 11(从零开始的12位),因此从磁盘的数据区域开始,群集327将为327 * 2048字节。

数据区域包括FAT,备份FAT和所有目录。我的回忆是,FAT中的每个群集条目都包含一个指向文件中占用该群集的下一个群集的指针,数据长度(如果它是文件的最后一个群集)以及读取或写入文件所需的一些其他信息,而目录条目包含文件名,第一个群集,大小/日期/等。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章