分享

FAT系统简介

 蓦然挥守 2020-05-07

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字节     文件的大小(字节)

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多