视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
FAT文件系统简介
2025-09-28 02:09:22 责编:小OO
文档
   FAT文件系统简介

Hiyou1 2010.10

FAT文件系统分为三种类型:FAT12、FAT16、FAT32,FAT12和FAT16基本相同,FAT32与其稍有不同,所以下面在介绍中将主要以FAT16和FAT32为例,FAT12不同的地方会另外说明。

●簇

簇的大小是2^n个扇区(2^表示2的n次方),扇区通常为512字节(可以是2^nBytes)。有资料上说簇在大小要在32K之内,因为虽然有些版本的操作系统支持K的簇,但很多应用程序的安装程序无法在这样的文件系统上正常运行。

簇是文件存储在基本单位。哪怕文件只有一个字节它也要占一个簇。所以在可表示的总容量允许的情况下,我们尽量要将簇设得小一些,以此来减少浪费的空间。

FAT文件系统后面的数字即与簇相关,它表示簇号所占的bit位数。如FAT16表示一个簇号占16位,这样它可表示的最大簇数是2^16。由此我们可以由 簇数*字节/簇得到该分区的文件系统所支持的最大分区容量。

●结构

FAT16

保留区FAT区

根目录区文件和目录数据区
FAT32

保留区FAT区

文件和目录数据区(根目录在其中)
●保留区

保留区(Reserved Region),是分区内位于FAT区前的区域,至少有1个Sector。FAT16一般为1,FAT32一般为32。

操作系统引导记录DBR即位于保留区的第一个Sector(即为什么保留区至少有1个sector)。

●DBR

DBR(Dos Boot Record)是分区的第一个扇区,又称启动扇区,以0xAA55为结束标志。操作系统即以此标志判断DBR,进而读取磁盘参数和进行其它操作。

DBR中有两个重要结构:BPB(BIOS Parameter Block)和BS(Boot Sector),其成员分别以BPB_和BS_开头,描述了分区的各个信息如:

跳转指令、每扇区字节数、每簇扇区数、            

保留扇区数、FAT表数、FAT所占扇区数、          

根目录文件数、逻辑扇区总数、磁头数、隐藏扇区数、

每磁道扇区数、媒体描述符、文件系统标识……      

具体请参阅有关资料。                            

FS系统标识占8个字节,形如"FAT16   ",但MS操作系统并非依此判定FS类型,即使把此处的记号表示为其它甚至为宽,MS OS仍能根据其它判断OS类型,但你还是严格来写此区域,因为一些其它的OS据此判定FS。 

从偏移36开始,FAT16和FAT32的DBR开始有所区别。

     注意:文件系统的数据存储形式是小端方式(Little-endian)我们所写的0XAA55,在小端方式存储的机器上是低字节55在前。哈佛架构的计算机是小端方式存储的。我们在写入时只要指定所写数据的类型(决定了数据所占字节)即可。下面不再说明

●FAT区

FAT(File Allocation Table)文件分配表,是FAT文件系统的得名。FAT表一般为两个,第二个用于备份。

FAT表以链式存储的形式,记录了文件所在的簇号,OS即以根目录中存储的文件首簇号及FAT表中存储的簇号,实现对文件的读写。

下面以FAT16说明簇号所代表的含义:

FFF8 磁盘标识字  FFFF 第一簇已经被占用 0000 可用 0002-FFEF 已用簇

FFF0-FFF6  保留簇    FFF7 坏簇    FFF8-FFFF 文件的最后一簇       

FAT12和FAT32与此类似,只不过用12和32位表示,前面加上或减去F即可。这些标识一般由OS在存储文件时自动完成

FAT表的前两个簇号为标识信息,

FAT12为0XFFFFF8           占3个字节

FAT16为0xFFFFFFF8,       占4个字节

FAT32为FFFFFFFFFFFFFFF8,占8个字节

(最低字节与DBR偏移21处的磁盘介质描述符要保持一致,F8表示可移动盘,F0表示软盘)

●根目录区

Root Directory Region.存储了该分区文件所在的首簇号和文件的基本信息,如文件名、文件长度、文件属性等。每个文件信息占32字节。

FAT12和FAT16固定为32个sector。以每个sector为512字节计算,它们支持的最大目录项数是512。

FAT32没有此区域,它的根目录在文件和目录数据区,它将根目录等同于普通的文件,这样就没有了FAT12/16中512个目录项的,不够时增加簇链即可。

卷标在根目录区的前几个字节。

●长文件名

FAT12和FAT16文件名和后缀名共11Bytes,它支持长文件名,但这种支持是以目录项的减少为代价的,就是说如果文件使用的是长文件名,那么此分区所支持的最大文件数就会变少。

FAT32完全支持长文件名。这正是因为其目录项在文件和数据区而可以增加的缘故。

文件是长文件名时,系统会自动产生一个短文件名,用于其它较低版本的OS正确识别文件。

●文件和目录数据区

File And Directory Data Region 存储的是文件或目录的内容,文件在此区域不是连续存储的,而是由FAT表中的簇号确定的。

●文件的存取

文件的存取是操作系统完成的。

写文件时,OS在根目录区与入文件首簇号和基本信息,在FAT表中写入文件所占的簇号,在数据区写入文件的内容。

读文件时,操作系统首先从根目录区取得文件的首簇号x,再去FAT表的x簇号处取得文件的下一个簇号a,再到a号处读取下个簇号,直到读到的簇号为FFFFFFFF表示文件结束。这样就知道了整个文件所占的簇号,再到磁盘中簇号所代表的区域读取文件。

●我们要做的工作

那么我们在写一个文件系统时要做些什么呢?其实很简单

首先是根据容量,确定要写的合适文件系统。

再就是计算DBR、FAT表、跟目录所占扇区数并将这些扇区擦“0”,可以发命令实现,如果不知道命令我们也可以在这些直接写“0”。

然后写DBR,在FAT表中的前两个簇号所占的字节写相应文件系统及介质标志,在目录项写卷标。

●MBR

如果我们只是把磁盘作为存储介质,那么上面的工作已经够了。

如果磁盘有大于一个分区或作为启动盘等,我们还要写MBR(Main Boot Sector)。

MBR也占512字节,也是以0xAA55(55在前)作为结束标志。

结束标志前面的个字节用来表示磁盘分区,每个分区占16字节,描述了分区的大小,分区开始和结束位置,分区文件系统类型等信息。具体请参阅有关资料,这里不再做详细介绍。

最前面的448个字节保留。

MBR所在区域称为隐藏扇区(Hidden Sector),隐藏扇区是第一个分区的DBR之前的部分,MBR即隐藏扇区的第一个扇区。所以隐藏扇区的大小至少为1.下载本文

显示全文
专题