1、FAT文件系统分为三个部分:保留区、FAT区和数据区 FAT文件系统将逻辑盘的空间分为DBR引导区(BOOT区)、文件分配表(FAT)、根目录表(FDT)和数据区(DATA区)。 FAT16只有一个DBR,占用逻辑0扇区;FAT32中的DBR多了一个副本,分别起始于逻辑0扇区(0头、1扇区)和逻辑6扇区(0头、7扇区)。 FAT32在DBR副本和FAT1之间有保留扇区;FAT16没有保留扇区。 FAT16文件系统中的FAT1从逻辑0扇区(1头、1扇区)开始;FAT32文件系统中的FAT1从逻辑32扇区(1头、33扇区)开始。 FAT32,DBR占用一个扇区,之后还留有31个保留扇区。文件分配表区跟在DBR及保留扇区后,FAT1的地址偏移量为0E~0FH,FAT2跟在FAT1之后,其地址可以用FAT1的所在扇区号加上每个FAT所占的扇区数获得。保留区中还包括DBR的备份扇区,FSINFO(记录文件系统中空闲簇数量以及下一个可用簇号灯信息)扇区,保留区后面为FAT区(2个) 2、定位FAT位置: 从MBR的分区表中得知分区的起始扇区,偏移到此扇区。 从DBR的BPB中得知:每簇的扇区数(0X0D位置处),保留扇区数(偏移0XE~F),FAT表个数(偏移0X10),FAT的扇区数(0X24~27),起始簇号(从DBR的偏移0X2C~2F)。 FAT1=分区起始扇区+DBR保留扇区,FAT2=分区起始扇区+DBR保留扇区+FAT1。 根目录=数据区的起始扇区+(簇大小*2) 根目录=分区起始扇区+DBR保留扇区+(FAT表*2)+(簇大小*2) 相对地址 FAT1表偏移 = 保留扇区数 FAT2表的偏移 = FAT1+FAT表的大小 = 保留扇区数 + FAT表扇区数 根目录起始扇区 = 保留扇区数 + 隐藏扇区数+ FAT的扇区数 × FAT表个数 + (起始簇号-2) x 每簇的扇区数 数据簇的起始位置=保留区扇区数+ FAT扇区数* FAT表数+(簇号-2)*每簇扇区数】。 绝对地址 DBR起始扇区=隐藏扇区 FAT1起始扇区=保留扇区+隐藏扇区 根目录起始扇区=隐含扇区+保留扇区+FAT*2+(文件起始簇-2)×每簇扇区数 设总扇区为N 则FAT16,数据区扇区=N-FAT大小*2-FDT(32个扇区)-保留扇区,数据区的簇=FAT扇区总数*512/2,每簇扇区数=数据区扇区/数据区的簇。假设保留扇区为1 FAT32,数据区扇区=N-FAT大小*2-保留扇区;数据的簇=FAT扇区总数*512/4。假设保留扇区为32 3、MBR MBR(Main Boot Record 主引导记录区)位于硬盘的0磁道0柱面1扇区。在512字节的主引导扇区中,MBR占用了446个字节(00-1BD),64个字节 DPT(Disk Partition Table硬盘分区表),以“55AA”结束 分区表由4项组成,每项16个字节,共4×16 = 64字节。每项描述一个分区的基本信息。 例如:(80) (01 01 00) (07) (FE FF FF) (3F 00 00 00) (82 C1 3B 3A) 存贮字节位 内容及含义 第1字节 引导标志。若值为80H表示活动分区,若值为00H表示非活动分区。 第2-4字节 本分区的起始磁头号、扇区号、柱面号。其中:磁头号——第2字节;扇区号——第3字节的低6位; 柱面号——为第3字节高2位+第4字节8位。 第5字节 分区类型符。0H——该分区未用;06H——FAT16分区;0BH——FAT32分区;05H——扩展分区;07H——NTFS分区;0FH——扩展分区(LBA模式)。 第6-8字节 本分区的结束磁头号、扇区号、柱面号。其中:磁头号——第6字节;扇区号——第7字节的低6位;柱面号——第7字节的高2位+第8字节。 第9-12字节 逻辑起始扇区号 ,本分区之前已用了的扇区数。 第13-16字节 本分区的总扇区数。 分区表上有四项,每一项表示一个分区,所以一个分区表最多只能表示4个分区。扩展分区最多只能有一个,所以硬盘最多可以有四个主分区,或者三个主分区一个扩展分区。 0X1C6~1C9 第一个分区的起始扇区 4、DBR DBR(DOS boot record) ,位于每个分区的第一个扇区。 FAT32中的DBR多了一个副本,而且从偏移量0BH开始的BPB参数及一些相关地址的表示方法也有区别。 DBR由5部分组成,分别为跳转指令(EB5890),OEM代号(3-A,8个字节),BPB,引导程序(5A-1FD,420个)和结束标志(55AA)。合计=3+8+79+420+2=512 跳转指令(0-2):本身占3字节,它将程序执行流程跳转到引导程序处。 OEM代号(3-A):占8字节,其内容由创建该文件系统的OEM厂商具体安排。 BPB(0B-59):FAT32的BPB从DBR的第12个字节开始,占用79字节。BPB(13、19、21字节),扩展BPB(32或51,FAT32为60或70字节) FAT32(5A-1FD):DBR引导程序占用420字节 结束标准,1FE-1FF 表6-15 FAT16和FAT32文件系统的DBR中相关地址参数分配表 偏移量 FAT16 FAT32 0B--0CH 每个扇区的字节数 0DH 每簇的扇区数 0E--0FH 保留扇区数。至少为1,FAT32通常为32 10H FAT个数 11--12H 根目录登记项个数。FAT32为0 13--14H 磁盘总扇区数,小于32MB 20--23H 逻辑盘总扇区数,大于32MB 15H 磁介质类型说明符,例如F8 16--17H 每个FAT表的扇区数 18--19H 每个磁道的扇区数 1A--1BH 磁头的个数 1C--1FH 当前分区前隐含扇区数,LBR=0到DBR的扇区数 27--2AH FAT16格式磁盘系列号 2B--35H FAT16卷标名 36--3AH FAT16磁盘格式标志 FAT32 24-27H 每个FAT表的扇区数 2C-2F 根目录开始簇,例如2 30-31 逻辑扇区FS Information扇区号,典型值为1 32-33 第一个DBR复制位置,典型值为6 43--46H FAT32格式磁盘系列号 47--51H FAT32卷标名 52--56H FAT32磁盘格式标志 5、FS扇区 0-3 标识符,5252 6141 4 480位 保留 1E4-1E7 标识符,7272 4161 1FC-1FF 标识符,00 55AA 6、FAT表 FAT16/32保存了两个FAT文件分配表。 FAT16簇号用16位二进制数表示,从02到FFEFH(65519)可用簇号,FFF8-FFFF为结束簇。最大文件65517 FAT32簇号用32位二进制数表示,从02到0FFFFFEFH(268435439)可用簇号。未被分配的簇——零,文件的最后一簇为0FFFFFF8H。FAT的0和1号表项中写入特定值(0x0FFFFFFF)。文件系统根目录会被创建,并为根目录分配一个簇的空间(2号簇),并在2号簇对应的FAT表项中写入结束标记。 7、FDT表及目录项 FAT16的根目录区的FDT作为系统区的一部分,是从FAT表区之后紧接着的32个扇区,最多保存512个目录项。 FAT32的根FDT不再是固定的大小,但一个目录项仍然占32个字节,可以是文件目录项、子目录项、卷标项(仅根目录有)、已删除目录项、长文件名目录项等。 32字节的定义如下 字节位置FAT16 FAT32 0--7字节 表示文件名 8--10字节 表示文件的扩展名 11字节 文件的属性 12--13字节 保留未用 仅长文件名目录项用,存储其对应的短文件名目录字节校验和等 14--15字节 文件建立时间 16--17字节 文件建立日期 18--19字节 文件最新访问日期 20--21字节 文件首簇号的高16位 22--23字节 文件的创建时间 文件最新修改时间 24--25字节 文件的创建日期 文件最新修改日期 26--27字节 文件的首簇号 文件首簇号的低16位 28--31字节 文件的大小(字节) |
|