分类:
2009-01-04 11:18:56
一个FAT(FAT12/FAT16/FAT32)文件系统卷由四个部分组成.
a. 保留区(Reserved Region)
分区的保留区(Reserved Region)中的第一个扇区必须是BPB(BIOS Parameter Block) 此扇区也称作”引导扇区” “保留扇区” 或是”零扇区”具体分为:
BS_DrvNum 一个字节 操作系统的参数 0x00为软盘 0x80为硬盘
BS_Reservedl 一个字节 保留 必须为0
BS_BootSig 扩展引导标记(0x29)
BS_VolID 四个字节 卷的序列号
BS_VolLab 11个字节 11个字长的卷标
BS_FilSysType 8个字节 “FAT12” “FAT16” “FAT” 表示格式类型
Executable Code 62字节 引导分区
b. FAT区
FAT即File Allocation Table 文件分配表
操作系统分配磁盘空间按簇来分配的. 因此文件占用磁盘空间时,基本单位不这字节而是簇,即使某个文件只有一个字节,操作系统也会给他分配一个最小单元—即一个簇. 为了可以将磁盘空间有序地分配给相应的文件,而读取文件的时候又可以从相应的地址读出文件,我们把整个磁盘空间分成32K字节的簇来管理,每个簇在FAT表中占据16位的位置,称为一个表项。FAT项数与硬盘上的总簇数相关(因为每一个项要代表一个簇,簇越多当然需要的FAT表项越多)。每一项占用的字节数也与总簇数有关(因为其中需要存放簇号,簇号越大当然每项占用的字节数就大).FAT的格式有多种,最为常见是FAT16和FAT32,其中FAT16是指文件分配表使用16位,由于16位分配表最多能管理65536(即2的16次方)个簇,又由于每个簇的存储空间最大只有32KB,所以在使用FAT16管理硬盘时,每个分区的最大存储量只有(65536*32KB)即2048MB,也就是我们常说2G,现在的硬盘容量越来越大,由于FAT16对硬盘分区的容量限制,所以超过2G之后,用户只能将硬盘分成多个2G的分区后才能正常使用.
对于大文件,需要分配多个簇.用一个文件的数据并不一定完整地存放在磁盘的一个连续的区域内,而往往会分成若干个段,像一条链子一样存放。这种存储方式称为文件的链式存储.为了实现文件的链式存储,硬盘上必须准确地记录哪些簇已经被文件占用,还必须为每个已经占用的簇指明存储后继内容的下一个簇的簇号,对一个文件的最后一簇,则要指明本簇无后继簇。这些都是由FAT表来保存的FAT表的对应表项中记录着它所代表的有关信息:诸如是否空,是否是坏簇,是否已经是某个文件的尾簇.
由于FAT对于文件管理的重要性,所以FAT有一备份,即在原FAT的后面再建一个同样的FAT.
c. 根目录区(Root Directory Region)
对于FAT16紧接着第二个FAT表后面一个扇区,就是根目录区了.根目录区中存放目录项,每个目录项为32个字节,记录一个文件或目录的信息(长文件例外)以下为目录项的结构:
00H-07H 文件名 ASCII字符 不足8个时必须填满
08H-0AH 扩展名 ASCII字符 不足3个时必须填满
0BH 文件的属性 .0为只读 .1隐藏 .2系统 .3卷标 .4目录 .5存档
0CH 保留 10个字节
16H 上次更新的时间
18H 上次更新的日期
1AH 起始的簇号 如果文件有多簇号,可根据FAT中对应的信息可得下一簇号
1CH 文件长度
d. 文件和目录数据区
目录项所占的最后一扇区,便是真正存放数据或是目录的位置