1 快速了解Fat32文件系统

1.1 只读文件系统

首先看一下我们的第一个需求,如果我们现在需要实现只读文件系统。假设现在有3个文件需要存储,使用时只需要读取。我们可以采取顺序存储的方式,如下;
快速了解FAT32文件系统
但是按照上述方式存储遍历文件时会非常麻烦,我们进行下改进,将所有的文件信息集中存储:
快速了解FAT32文件系统
不过,试着想一下,文件一般是由层次结构了,为了方便组织文件,我们可以采用树形结构对文件进行分层,树形结构如下:
快速了解FAT32文件系统
我们可以继续改进文件的存储方式:
快速了解FAT32文件系统

对于FAT32文件系统来说,目录也被视作文件。
快速了解FAT32文件系统
我们可以采用另一视角看待一下:
快速了解FAT32文件系统

1.2 可写文件系统

我们现在对需求升下级,我们需要可写的文件系统。

文件的写包含:调整文件大小、写入数据等。
快速了解FAT32文件系统
上图中所示的方法明显是行不通的。我们可以采用文件不连续存储:找出其余的空闲空间,将其与原有文件数据链接起来。

快速了解FAT32文件系统
我们怎样表示及存储链接关系呢?

为了快速查找及节省空间,链接关系应集中存储。
快速了解FAT32文件系统
考虑到块设备的特性,文件数据应按照扇区/块分配空间。
快速了解FAT32文件系统
考虑到磁盘空间有限及查找效率,我们可以将多个扇区组织为簇进行读写。
快速了解FAT32文件系统
考虑到块设备的特殊性,链接关系几种存储于一个表中。
快速了解FAT32文件系统

1.3 Fat32分区结构

根据前面所述原理,FAT32文件系统将分区划分为以下几个区域。
快速了解FAT32文件系统
保留区:主要保存文件系统配置数据、启动代码等。
快速了解FAT32文件系统
FAT表区:保存文件不连续存储的各部分链接关系。
快速了解FAT32文件系统
数据区:存储文件和目录数据,一切都是文件。特别的,目录存储文件信息。
快速了解FAT32文件系统
快速了解FAT32文件系统
总结一下:
快速了解FAT32文件系统
快速了解FAT32文件系统


参考资料:

  1. 自己动手从0到1学写FAT32文件系统

相关文章: