FAT(File Allocation Table,文件分配表)文件系统是Windows操作系统所使用的一种系统文件,他的发展过程经历了FAT12、FAT16、FAT32三个阶段。
FAT文件系统用“簇”作为数据单元。一个“簇”由一组连续的扇区组成,簇所含的扇区数必须是2的整数次幂。簇的最大值为64个扇区,即32kb。所有“簇”从2开始进行编号,每个“簇”都有一个自己的地址编号。用户文件和目录都存储在“簇”中。
FAT文件系统的数据结构中有两个重要的结构:文件分配表和目录项:
&文件和文件夹内容存储在“簇”中,如果一个文件或文件夹需要多余的一个“簇”的空间,则用FAT表来描述如何找到另外的“簇”。FAT结构用于指出文件的下一个簇,同时也说明了簇的分配状态。FAT12、FAT16、FAT32这三种文件系统之间的主要区别在于FAT项的大小不同。
&FAT文件系统的每一个文件夹和文件都被分配到一个目录项,目录项中记录着文件名、大小、文件内容起始地址以及其他一些元素。
在FAT文件系统中,文件系统的数据记录在“引导扇区(DBR)中”。引导扇区位于整个文件系统的0号扇区,是文件系统隐藏区域(也称为保留区)的一部分,我们称其为DBR(DOS Boot Recode——DOS引导记录)扇区,DBR中记录着文件系统的起始位置、大小、FAT表个数以及大小等相关信息。
在FAT文件系统中,同时使用“扇区地址”和“簇”地址两种地址管理方式。这是因为只有存储用户数据的数据区使用簇进行管理(FAT12和FAT16的根目录除外),所有簇都位于数据区。其他文件系统管理数据区域是不以簇进行管理的,这部分区域使用扇区地址进行管理。文件系统的起始扇区为0扇区。
1. FAT系统文件的整体布局
如图所示:
说明:保留区含有一个重要的数据结构——系统引导扇区DBR,FAT12、FAT16的保留区通常只有一个扇区,而FAT32的保留扇区要多一些,除0号扇区外,还有其他一些扇区,其中包括了DBR的备份扇区。
FAT去由各个大小相等的FAT表组成,——FAT1、FAT2,FAT2紧跟在FAT1之后
FAT12、FAT16的根目录虽然也在数据区,但是他们并不由簇进行管理,也就是说FAT12、FAT16的根目录虽然也属于数据区,但是他们并不由簇进行管理。也就是说FAT12、FAT16的根目录是没有簇号的,他们的2号簇从根目录之后开始。而FAT32 的根目录通常位于2号簇。
2. FAT32的保留区:
FAT32系统的开始部分有一个若干扇区组成的保留区,保留区的刀削会记录在DBR扇区中,比较常见的为32、34或38个扇区。
2.1引导扇区
引导扇区是FAT32文件系统的第一个扇区,也称为DBR扇区。它包含这样一些文件系统的基本信息:每扇区字节数,每簇扇区数,保留扇区,FAT表个数,文件系统大小(扇区数),每个FAT表大小(扇区数),根目录起始簇号,其他一些附加信息(DBR扇区中记录文件系统参数的部分也称为BPB(BISO Parameter Block))
说明:
&引导扇区中的某些参数是至关重要的,我们可以通过每个FAT表的大小扇区乘以FAT表的个数得到FAT区域的大小;通过保留扇区数和FAT区域的大小就可以得知数据区的起始位置,也就得到了文件系统的第一个簇的位置。根据根目录的簇号和第一簇的位置就可以得到根目录的位置。