FAT文件系统 FAT表
FAT表的位置
FAT表一般有2个,紧跟在保留扇区之后。
FAT1表的位置可以通过引导记录偏移0x0E~0x0F字节处的保留扇区数计算得到。
FAT表的大小
FAT表的大小可能通过引导记录偏移0x16~0x17字节处的每FAT表FAT占用的扇区数计算得到。
FAT表的功能
FAT表用来描述数据区中存储单元的分配状态及为文件或目录内容分配的存储单元的前后顺序关系。
FAT表中内容
FAT表其实就是一个固定大小的数组。数组的下标为FAT表的表项号,值为簇的索引号。
在FAT表项中,0号表项和1号表项即数组的0和1下标作为保留,从2号表项开始,每个表项中的值对应的是数据区的簇号。
对于FAT32文件系统,数组的值都是32位,故其值是以4字节为单位的整数。0号表项的值固定为F8FFFF0F,1号表用于记录脏标志,表示磁盘存在错误或者文件系统未被正常卸载,一般值为FFFFFFFF或FFFFFF0F.
如果新建的文件占用一个簇,为其分配的簇所对应的的FAT表项将会被写入结束标志,如果超过一个簇,则每个簇中写入的是为其分配的下一个簇的簇号,最后一个簇所对应的表项中写入结束标记。
文件或者目录被删除时, 它所对应的FAT表项将会被清0,以表示所对应的簇未分配
分区被格式化后,会自动创建根目录,所以FAT表项2会被填充为FFFFFF0F。
特殊的标项值
如果某个簇存在坏道,则对应的表项值为0xFFFFFFF7
如果某个文件的数值存到本簇就已经完成了,则对应的标项值为FFFFFF0F,表示为一个结束标志。
未被使用的簇,其表项值为00000000.
FAT32文件系统中的FAT表项中使用了32位中的28位,故最大可以描述268435456个簇(实际比这个值还小,因为了除去用做结束的标志,坏簇,空簇等),故如果簇的大小一般固定,那么FAT32文件系统去持的磁盘大小是有限的。
如下为一个空的分区的FAT表