总结FAT32文件系统

记下学习fat32文件系统的过程,备忘

一、fat32总体结构

按在磁盘中顺序储存如下

主引导记录        MBR

                            DPT

分区引导扇区    DBR

                            保留区域                           

FAT文件表          FAT1

                             FAT2(FAT1的备份)

数据区                 根目录

                             数据区

二、剖析

1.MBR

MBR位于磁盘的首部,占用446byte(磁盘一个扇区),该扇区的其余64byte留给DPT(磁盘分区表),并以 0x55AA 结束

DPT确定了以下信息

注意:磁盘中数据的的读取是little ending 也就是将数据高位的放在前面

起始地址

字节数

描述

0x1BE

1

可引导标志,0x00不可引导,0x80可引导

0x1BF~0x1C1

3

分区起始CHS地址(CHS=磁头、柱面、扇区),起始地址

0x1C2

1

分区类型

0x1C3~0x1C5

3

分区结束CHS地址

0x1C6

4

从磁盘开始到该分区开始的偏移量(分区起始LBA地址Little-endian顺序)

0x1CA

4

总扇区数(Little-endian顺序)

DPT中预留了四个分区的位置,当分区大于4时,第四个分区为扩展分区,并在其分区头部储存有下一个分区位置的信息

--------------------------------------------------------------

写的东西丢了=  =补充

--------------------------------------------------------------

通过从此盘开始的偏移量找到分区地址,注意这里是小端编址

2.DBR

DBR是分区的首部,记录了以下信息:

主要关注扇区字节数 、簇扇区数、 保留扇区数 、FAT个数、 FAT大小

【2】0x03~0x0A:8字节,文件系统标志和版本号,这里为MSDOC5.0。 

【3】0x0B~0x0C:2字节,每扇区字节数,512(0X02 00)。 

【4】0x0D~0x0D:1字节,每簇扇区数,8(0x08)。 

【5】0x0E~0x0F:2字节,保留扇区数,38(0x00 26,符合FAT1起始地址为38扇区。 

【6】0x10~0x10:1字节,FAT表个数,2。 

【7】0x11~0x12:2字节,FAT32必须等于0,FAT12/FAT16为根目录中目录的个数; 

【8】0x13~0x14:2字节,FAT32必须等于0,FAT12/FAT16为扇区总数。 

【9】0x15~0x15:1字节,哪种存储介质,0xF8标准值,可移动存储介质,常用的 0xF0。 

【10】0x16~0x17:2字节,FAT32必须为0,FAT12/FAT16为一个FAT 表所占的扇区数。

【11】0x18~0x192字节,每磁道扇区数,只对于有“特殊形状”(由磁头和柱面每 分割为若干磁道)的存储介质有效,63(0x00 3F)。 

【12】0x1A~0x1B:2字节,磁头数,只对特殊的介质才有效,255(0x00 FF)。 

【13】0x1C~0x1F:4字节,EBR分区之前所隐藏的扇区数,8192(0x00 00 20 00,与MBR中地址0x1C6开始的4个字节数值相等

【14】0x20~0x23:4字节,文件系统总扇区数,7736320(0x 00 76 0C 00),7736320 *  512 = 3960995840   3.67GB

【15】0x24~0x27:4字节,每个FAT表占用扇区数,7541(0x 00 00 1D 75)。 

【16】0x28~0x29:2字节,标记,此域FAT32 特有。 

【17】0x2A~0x2B:2字节,FAT32版本号0.0,FAT32特有。 

【18】0x2C~0x2F:4字节,根目录所在第一个簇的簇号,2。(虽然在FAT32文件系统 下,根目录可以存放在数据区的任何位置,但是通常情况下还是起始于2号簇) 

【19】0x30~0x31:2字节,FSINFO(文件系统信息扇区)扇区号1,该扇区为操作 系统提供关于空簇总数及下一可用簇的信息。 

【20】0x32~0x33:2字节,备份引导扇区的位置。备份引导扇区总是位于文件系统 的6号扇区。 

【21】0x34~0x3F:12字节,用于以后FAT 扩展使用。 

【22】0x40~0x40:1字节,与FAT12/16 的定义相同,只不过两者位于启动扇区不

同的位置而已。

  【23】0x41~0x41:1字节,与FAT12/16 的定义相同,只不过两者位于启动扇区不

同的位置而已 。 

【24】0x42~0x42:1字节,扩展引导标志,0x29。与FAT12/16 的定义相同,只不过 两者位于启动扇区不同的位置而已

【25】0x43~0x46:4字节,卷序列号。通常为一个随机值。 

【26】0x47~0x51:11字节,卷标(ASCII码),如果建立文件系统的时候指定了卷 标,会保存在此。 

【27】0x52~0x59:8字节,文件系统格式的ASCII码,FAT32。 

★【28】0x5A~0x1FD:90~509共410字节,未使用。该部分没有明确的用途。 

【29】0x1FE~0x1FF:签名标志“55 AA”。

通过计算 保留区域+FAT表个数×FAT表大小=根目录偏移量

3.FAT

FAT32中每个簇的簇地址是有32bit(4个字节),FAT表中的所有字节位置以4字节为单位进行划分,并对所有划分后的位置由0进行地址编号。0号地址与1号地址被系统保留并存储特殊标志内容。从2号地址开始,每个地址对应于数据区的簇号,FAT表中的地址编号与数据区中的簇号相同。我们称FAT表中的这些地址为FAT表项,FAT表项中记录的值称为FAT表项值。 

当文件系统被创建,也就是进行格式化操作时,分配给FAT区域的空间将会被清空,在FAT1与FAT2的0号表项与1号表项写入特定值。由于创建文件系统的同时也会创建根目录,也就是为根目录分配了一个簇空间,通常为2号簇,与之对应的2号FAT表项记录为2号簇,被写入一个结束标记。

【0号表项】:0x0FFFFFF8;FAT表起始固定标识

【1号表项】:0xFFFFFFFF;不是用,默认值

【2号表项】:0x0FFFFFFF;根目录所在簇


4.根目录

目录所在的扇区,都是以32 Bytes划分为一个单位,每个单位称为一个目录项(Directory 

Entry ),即每个目录项的长度都是32 Bytes 。根目录由若干个目录项组成,一个目录项占用32个字节,可以是长文件名目录项、文件目录项、子目录项等。32字节的具体定义如下图:

总结FAT32文件系统_第1张图片


    


你可能感兴趣的:(总结FAT32文件系统)