FAT16文件系统结构扇区数据分析

23 篇文章 71 订阅

FAT,英文为File Allocation Table,文档分配表。先要记住几个概念:
扇区:一般扇区为512个字节。
:由若干个扇区组成,是存取数据的最小单位。如果簇大小为16K,文件大小为1字节,那也要用一个簇来存,而且该簇不用再拿来他用。
FAT文件系统就是专门管理这些簇的。一个文件可能占据一个或者多个簇,按正确的顺序去读取这些簇,就可以获取这个文件的内容了。
一、FAT16的基本结构
FAT16基本结构依次为:DBR扇区、FAT表1、FAT表2、根目录和数据区。
1、DBR扇区
DBR是操作系统可以直接访问的第一个扇区,包括一个引导程序和一个称为BPB的本分区参数记录表。BPB参数块记录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个数、分配单元的大小等重要参数。
在这里插入图片描述

在这里插入图片描述

2、FAT表1和FAT表2
FAT表1和FAT表2是保存簇状态的地方,从DBR可知一个FAT表是21个扇区。它里面的内容很简单就是指出下一个簇在哪里。盘里有多少个簇,FAT就有多少个项来描述它们。FAT16用16bit来描述一个簇。第0和第1个字节表示第0个簇,第2和第3个字节表示第1个簇,第4和第5个字节表示第2个簇…就这样,每个簇都有两个和它对应的字节,这两个字节里面存放的数据就是文件中下一个簇大小数据所在的簇号。
比如要读new.txt文件,从根目录中找到了它,读它的根目录信息知道它的第一个簇的簇号是5,于是把第5号簇的数据送出去,在FAT表中5号簇是第10和第11字节来表示的,于是去读第10和第11字节,得到0007,知道了文件接下来的数据保存在7号簇中,把7号簇的数据送出去,又去读第14和第15字节的数据,得到FFFF,说明文件到末尾了。
下面是FAT中数据的含义:
在这里插入图片描述

对于FAT16,每个簇用16Bit来表示,最大能表示65536,FAT16的簇最大为32K,因此FAT16最大只能支持6553632K约等于2G。因此大于2G的盘必须选择其他的文件系统,比如FAT32,没有簇用32bit来表示。
根据DBR的参数,我们可以算出FAT1的偏移地址以及根目录的偏移值。
FAT1偏移地址:保留扇区(FAT1之前的扇区,包括引导扇区)之后就是FAT1。因此可以得到,FAT1的偏移地址就是第1个扇区的位置,也就是512。大小为21个扇区,即21
512=10752字节。
FAT2偏移地址:FA1偏移地址+FAT1的大小,512+21512 = 11264。
在这里插入图片描述
3、根目录
根目录偏移地址: FAT2偏移地址+ FAT2的大小,11264+21
512= 22016。
根目录的偏移地址也是第1个簇的起始位置,根目录保存在第1个簇中,即第1个簇地址为22016,第2个簇为22016+32512=38400(每个簇占32个扇区)。我们来看看根目录的数据:
在这里插入图片描述
在根目录中,一个文件或者一个文件夹用32字节来表示。
在这里插入图片描述
根据这个我们就可以解读根目录的信息了,可以看到现在根目录中只有一个名字为IMAGE和名字为VERINFO的文件夹。可以看到VERINFO文件夹的首簇号是 9F 12 也就是 0x129F = 4767号簇。可以得到VERINFO文件夹的偏移地址是22016+(4767-1)51232 = 78108160。数据如下:
在这里插入图片描述
VERINFO文件夹下文件信息的组织方式和根目录一样,可以看到现在VERINFO文件夹下有两个不知名的文件夹和一个叫ver_info.txt的文件。又可以继续得到该文件的首簇号和文件的长度。首簇号是 A0 12 也就是0x12A0=4768。文件长度是1F 也就是31字节,小于簇大小512
32字节,因此只占一个簇,不需要回去查看FAT来找到剩下的簇。
该文件所在位置:22016+(4768-1)51232 = 78124544。
在这里插入图片描述
上面看到的数据就正好是ver_info.txt中保存的数据。

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
FAT32(文件分配表32)是一种常见的文件系统,用于在计算机硬盘驱动器上存储和管理文件。该文件系统最早由微软引入,适用于各种操作系统,包括Windows、macOS和Linux。FAT32文件系统主要用于较小的存储设备,例如闪存驱动器和SD卡。 FAT32文件系统采用了有趣的文件结构,其中包含了几个重要的组件。首先是引导记录(Boot Record),其位于存储设备的第一个扇区中。引导记录存储了启动硬件的相关信息,并在文件系统初始化时充当重要的角色。 文件分配表(File Allocation Table)是FAT32文件系统的核心组件之一。它记录了存储设备上每个文件的分配信息。文件分配表中的每个表项都指示与文件相关的簇(cluster)号码,用于确定文件在存储设备上的物理位置。 目录条目(Directory Entry)也是FAT32文件系统中重要的组成部分。每个目录条目对应着一个文件或子目录。每个目录条目包含一些元数据信息,例如文件名、扩展名、文件大小、创建日期等。FAT32文件系统使用一种层次结构来组织目录条目,使得用户可以轻松地浏览和查找文件。 在FAT32文件系统中,还有一个名为文件簇(Cluster)的概念。文件簇是最小的可分配存储单位,用于存储文件的内容。文件系统通过在文件分配表中跟踪文件的簇号码来定位文件的内容所在位置。每个簇的大小通常是4KB或8KB,具体取决于存储设备的大小。 总的来说,FAT32文件系统结构包括了引导记录、文件分配表、目录条目和文件簇等关键组件。这些组件紧密配合,使得FAT32文件系统能够在存储设备上高效地存储和管理文件。虽然FAT32文件系统有一些限制,如单个文件的最大大小仅为4GB,但它仍然被广泛应用于移动存储设备等场景中,由于其易于兼容和可靠性的特点。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

【ql君】qlexcel

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值