1 快速了解Fat32文件系统
1.1 只读文件系统
首先看一下我们的第一个需求,如果我们现在需要实现只读文件系统。假设现在有3个文件需要存储,使用时只需要读取。我们可以采取顺序存储的方式,如下;
但是按照上述方式存储遍历文件时会非常麻烦,我们进行下改进,将所有的文件信息集中存储:
不过,试着想一下,文件一般是由层次结构了,为了方便组织文件,我们可以采用树形结构对文件进行分层,树形结构如下:
我们可以继续改进文件的存储方式:
对于FAT32文件系统来说,目录也被视作文件。
我们可以采用另一视角看待一下:
1.2 可写文件系统
我们现在对需求升下级,我们需要可写的文件系统。
文件的写包含:调整文件大小、写入数据等。
上图中所示的方法明显是行不通的。我们可以采用文件不连续存储:找出其余的空闲空间,将其与原有文件数据链接起来。
我们怎样表示及存储链接关系呢?
为了快速查找及节省空间,链接关系应集中存储。
考虑到块设备的特性,文件数据应按照扇区/块分配空间。
考虑到磁盘空间有限及查找效率,我们可以将多个扇区组织为簇进行读写。
考虑到块设备的特殊性,链接关系几种存储于一个表中。
1.3 Fat32分区结构
根据前面所述原理,FAT32文件系统将分区划分为以下几个区域。
保留区:主要保存文件系统配置数据、启动代码等。
FAT表区:保存文件不连续存储的各部分链接关系。
数据区:存储文件和目录数据,一切都是文件。特别的,目录存储文件信息。
总结一下:
参考资料: