、 FAT 表结构
七、 FAT 表结构FAT 表(File Alloacation Table)是一一对应于数据簇号的列表。文件系统分配磁盘空间按簇来分配。因此,文件占有磁盘空间时,基本单位不是字节而是簇, 即使某个文件只有一个字节,操作系统也会给它分配一个最小单元:即一个簇。为了可以将磁盘 空间有序地分配给相应的文件,而读取文件的时候又可以从相应的地址读出文件,我们可以把数 据区空间分成 BPB_BytsPerSec*BPB_SecPerClus 字节长的簇来管理,FAT 表项的大小与 FAT 表的类型有关,FAT12 的表项为 12bit ,FAT16 为 16bit, 而 FAT32 则为 32bit。对 于大文件,需要分配多个簇。同一个文件的数据并不一定完整地存放在磁盘中一个连续地区域 内,而往往会分若干段,像链子一样存放。这种存储方式称为文件的链式存储。为了实现文件的 链式存储,文件系统必须准确地记录哪些簇已经被文件占用,还必须为每个已经占用的簇指明存 储后继内空的下一个簇的簇号,对于文件的最后一簇,则要指明本簇无后继簇。这些都是由 FAT 表来保存的,FAT 表的对应表项中记录着它所代表的簇的有关信息:诸如是空,是不是坏簇,是 否是已经是某个文件的尾簇等。
以 FAT16 为例说明 FAT 的结构如下:
表项 示例代码 描述
FFF8 磁盘标识字,必须为 FFF8
1 FFFF 第一簇已经被占用
2 0003 0000h :可用簇
3 0004 0002h - FFFEF :已用簇,表项中存放文件下个簇的簇号
…… ……
N FFFF FFFF0h - FFFF6 :保留簇
N+1 0000 FFFF7h :坏簇
…… …… FFFF8h - FFFFFh :文件的最后一簇
FAT各系统记录项的取值含义(16进制)
FAT12记录 FAT16记录项 FAT32记录项的取值 对应簇的表现情况
项的取值 的取值
0 0 0 未分配的簇
002~FFF 0002~FFEF 00000002~FFFFFFEF 已分配的簇
FF0~FF6 FFF0~FFF6 FFFFFFF0~FFFFFFF6 系统保留
FF7 FFF7 FFFFFFF7 坏簇
FF8~FFF FFF8~FFFF FFFFFFF8~FFFFFFFF 文件结束簇
页:
[1]
