1.第一章–磁盘结构概述
fat磁盘物理上分为以下四部分组成:
- 保留区(含MBR–Main Boot Record)
- 保留区(含DBR–DOS Boot Record)
- FAT区
- 数据区
1.1保留区(含DBR–DOS Boot Record)
保留区含有一个重要的数据结构–系统引导扇区DBR。FAT12、FAT16的保留区通常只有一个扇区。而FAT32保留的多些,除了0号扇区外,还有一些其他的扇区,其中包括了DBR的备份扇区。
1.2FAT区
FAT区由文件分配表构成–FAT1,FAT2,FAT2紧跟在FAT1后面,是FAT1的备份
1.3数据区
数据区是保存数据的,其中根目录也保存在此。这一区域不以扇区管理,而是以簇进行管理。
第二章–FAT32磁盘结构介绍
FAT32文件系统简介
- FAT(File Allocation Table,文件分配表)文件系统是Windows操作系统所使用的一种文件系统,他的发展过程经历了FAT12,FAT16,FAT32三个阶段。
- FAT文件系统用“簇”作为数据单元。一个“簇”由一连串的扇区组成,簇所含的扇区数必须是2的整数次幂。簇的最大值是64个扇区,即32kb。本文中一簇是4kb。
- 所有簇从2开始进行编号,每个簇都有一个自己的编号。
- 用户文件和目录都存储在簇中。
- 文件系统分配磁盘按照簇进行分配,因此一个文件即使只有1kb,那么也会被分配4kb的空间。
文件分配表
- 文件和文件夹内容存储在簇中,如果一个文件或者文件夹需要多余一个的簇进行存储,那么通过文件分配表建立起多个簇的联系。。FAT结构用于指出下一簇,同时也说明了簇的分配状态。FAT12、FAT16、FAT32的不同就在于文件分配表的大小不同。
文件分配表如何记录文件所包含的簇
我们已经知道,在文件分配表中记录了数据区中簇之间的关系。而数据区中的簇就是存储文件或文件夹信息的基本单位。
- FAT32中簇地址是用4字节进行编址的,故在FAT表中,是以4个字节为单位进行划分,每个单元存储一个簇地址。 **0号地址与1号地址被系统保留并存储特殊标志内容。**从2号地址开始,第i号地址对应数据区中i号簇。我们称FAT表中的地址为FAT表项,FAT表中记录的值为FAT表项值。
- 当文件系统被创建时,FAT表会被清空,在FAT1和FAT2表中的0号地址与1号地址会被写入特定值。由于创建文件系统的同时会创建根目录,也就是在数据区为根目录分配一个簇的空间(2号簇,起始簇)在FAT表中2号地址写入一个结束标记。
- 当FAT表中第i号地址对应的簇未被使用时,表项值为0
- 当FAT表中第i号地址对应的簇是记录一个文件或文件夹的最后的簇时,表项值为0xFFFFFFFF。
- 下表给出了FAT表项值的详细含义(更详细表项值含义请自行利用百度或Google)
表项值(32位) |
簇描述符含义 |
00000000H |
"0"值(未分配使用) |
00000001–FFFFFFEFH |
“一个簇号”(已占用) |
FFFFFFF7H |
坏簇 |
FFFFFFF8–FFFFFFFFH |
“EOF”(文件结束簇) |
第三章–fat文件系统
第二章中文件分配表已经建立起了簇之间的联系。那么对于文件系统来说,如何确定文件与文件、文件夹与文件之间的逻辑存储关系呢?本章中将介绍此内容。
目录项
首先介绍下目录项的概念:
- FAT文件系统的每一个文件和文件夹都被分配到一个目录项,目录项中记录着文件名、大小、文件内容起始地址以及一些其他元数据(简单来说就是文件或文件夹本身的属性)。(具体存储格式可以百度或者Google)跟在目录项之后的是文件或文件夹的具体内容。
- 目录项都有规定好的固定长度以及每个位置代表的含义(以下给出了fat32中目录项的32个字节的含义)
文件(夹)内容
有了目录项,就有了文件或文件夹本身的属性。紧跟目录项后是文件或文件夹的内容。
- 对于文件类来说,存储的就是文件本身的内容
- 对于文件夹来说,存储的是一条一条的记录,每条记录是此文件夹下包含的文件或文件夹(同时也包含父目录…当前目录.)每条记录都应该有固定的格式,但总归需要包含以下内容:
1.记录是文件还是文件夹
2.记录的起始簇号