FAT32文件系统研究1-FAT文件系统结构

在FAT32之前还有FAT12,FAT16等文件系统,他们都是位数不一样,但是已经很少用了,所以这里写的都是FAT32系统。

1.FAT32优缺点

优点:
1.简单
2.读取快速(这里的快速是有条件的,指文件数量不多,磁盘不大的情况下。)

缺点:
⒈太浪费磁盘空间
⒉磁盘利用效率低
⒊文件存储受限制
⒋不支持长文件名,只能支持8个字符。
⒌安全性较差

**

2.文件系统结构

FAT32文件系统由DBR及保留扇区,FAT1,FAT2,DATA区四个部分组成,结构如图FAT32文件系统研究1-FAT文件系统结构_第1张图片
DBR:DOS Boot Record,含义是DOS结构引导记录,也称为操作系统引导记录。
保留扇区:就是保留起来,不适用的扇区。
DATA:数据区,是FAT32文件系统的主要区域,其中也包含目录区。

3.FAT32文件系统的DBR分析

如下图所示
FAT32文件系统研究1-FAT文件系统结构_第2张图片
1:跳转指令
跳转指令本身占用2字节,它将程序执行流程跳转到引导程序处。例如,当前DBR中的“EB 58”,就是代表汇编语言中的“JMP 58”。需要注意该指令本身占用2个字节,计算跳转目标地址时该指令的下一个字节为基准,所以实际上执行的下一条指令应该位于 5A。紧接着跳转是一条空的指令NOP(90H)

2:OEM代号
占用8个字节,这个说明了微软不同的操作系统版本。修改这个值不影响文件系统的使用。

3:BPB(BIOSParameter Block,BIOS参数块)
BPB从DBR的第12个字节开始(也就是偏移11开始),占用79个字节,记录了有关该文件系统的重要信息,具体信息在下面详细展开

4:引导程序
Fat32的DBR引导程序占用420个字节,在98 之前的系统之下,这段代码负责完成DOS三个系统文件的装入; 2000之后的系统中,其负责完成将系统文件NTLDR装入。对于一个没有操作系统的分区来讲,这段代码是没有作用的。

5:结束标志
结束标记55 AA,这个也是一个重要的标记。

实例分析:
FAT32文件系统研究1-FAT文件系统结构_第3张图片
如下是我的U盘的数据截图,在分区的开头的数据,

如图EB 58 90.其中EB是跳转指令的特殊标记。58是跳转到的位置。就是代表汇编语言中的“JMP 58”,基地址为90

OEM代码长度为8字节,如下图,看右边的ASCII解析,为MSDOS5.0.FAT32文件系统研究1-FAT文件系统结构_第4张图片

BPB详细参数

字节偏移 字段长度(字节) 字段名与定义
0X0B 2 每扇区字节数
0X0D 1 每簇扇区数
0X0E 2 DOS保留扇区数
0X10 1 FAT个数
0X11 2 未用
0X13 2 未用
0X15 1 介质描述符
0X16 2 未用
0X18 2 每磁道扇区数
0X1A 2 磁头数
0X1C 4 隐藏扇区数
0X20 4 该分区的扇区总数
0X24 4 每FAT扇区数
0X28 2 标记
0X2A 2 版本
0X2C 4 根目录首族号
0X30 2 文件系统信息扇区号
0X32 2 DBR备份扇区扇区号
0X34 12 保留
0X40 1 BIOS驱动器号
0X41 1 未用
0X42 1 扩展引导标记
0X43 4 卷序序列号
0X47 11 卷标
0X52 8 文件系统类型

(1)每扇区字节数
每扇区字节数记录每个逻辑扇区的大小,其常见的值为512,但是并不是固定的值。该值可以由程序定义,合法值包括512,1024,2048,4096。但是我看到这里的信息字段是00 02,为什么是2的?我这里不太明白,可能是程序中512字节对应的编号是2
(2)每簇扇区数
每簇扇区数记录着文件系统的簇大小,即由多少个扇区组成一个簇。
簇是FAT12,FAT16及FAT32文件系统下数据的最小存储单元,一个簇由一组连续的扇区组成,簇所含的扇区数必须是2的整数次幂,如1,2,4,8,16,32,64,128.
在Windows 2000以前族最大值为64扇区,之后最大值为128.
在FAT文件系统中,所有的族是从2开始编号,每个簇都有一个自己的地址编号,但是所有的族都位于数据区,在数据区之前没有族。
(3)DOS保留扇区数
DBR及保留扇区数是DBR到FAT1表之间的扇区数,或者说是FAT1的开始扇区号
对于FAT32文件系统来说,该值的范围是32扇区到38扇区之间。
(4)FAT个数,一般为2.
(5)未用
(6)未用
(7)介质描述符
介质描述符是描述磁盘介质的参数,根据磁盘性质的不同,取不同的值
(8)未用
(9)每磁道扇区数 一般其值为63.
(10)磁头数 其值一般为255.
(11)隐藏扇区数
是MBR到DBR之间的扇区数,对于扩展分区中逻辑驱动顺来说,是其EBR到DBR
(12)分区总扇区数
扇区总数是指分区的总扇区数,也就是FAT32分区的大小。
(13) 每FAT扇区数

(14)标志,FAT2是否可用,2为可用。
(15)版本 通常为0.
(16)根目录首簇号
.分区在格式化的时候,格式化程序会在数据区中指派一个簇作为FAT32的根目录的开始,并把该簇号记录在BPB中。通常都是把数据区中的第一人簇分配给根目录使用,也就是2号簇。
(17)文件系统信息扇区号
FAT32文件系统在DBR的保留扇区中安排了一个文件系统信息扇区,用以记录数据区中空闲簇的数量及下一个可用的空闲簇的簇号,该扇区一般在分区的1号扇区,也就是紧跟在DBR之后的一个扇区。
(18)DBR备份扇区号
FAT32文件系统在DBR的保留扇区中安排了一个DBR的备份,一般在6号扇区,也就是分区的第7个扇区,该备份扇区与原DBR扇区的内容完全一样,如果原DBR遭到破坏,可以用备份扇区号修复。
(19)未用
(20)BIOS驱动器号
这是BIOS的INT 13H所描述的设备号码,一般把硬盘定义为8xh.
(21)未用
(22)扩展引导标记
用来确认后面的三个参数是否有效,一般值为29H
(23)卷序列号
(24)卷标
不在这里进行记录,放到目录项中来管理
(25)文件系统类型
使用ASCII码记录当前分区的文件系统类型

引导程序截图
FAT32文件系统研究1-FAT文件系统结构_第5张图片

你可能感兴趣的:(LINUX-KERNEL)