文件系统(四):FAT32文件系统实现原理

2024-05-22 16:52 网游攻略
最佳答案 FAT32是从FAT12、FAT16发展而来,目前主要应用在移动存储设备中,比如SD卡、TF卡。隐藏的 FAT文件系统 现在也有被大量使用..

FAT32是从FAT12、FAT16发展而来,目前主要应用在移动存储设备中,比如SD卡、TF卡。隐藏的 FAT文件系统 现在也有被大量使用在UEFI启动分区中。

为使文章简单易读,下面内容特意隐藏了很多实现细节,关于分区、格式化等相关的内容,可以查看之前的文章:

文件系统(一):存储介质、原理与架构

文件系统(二):分区、格式化数据结构

文件系统(三):嵌入式、计算机系统启动流程与步骤

(一)FAT32 磁盘布局

拿一个FAT32文件系统的存储设备,我们可以看到,它整个存储设备大概可以分为5个部分: 引导、保留扇区、FAT表、目录和文件、备份

(1)引导与保留扇区

引导和保留扇区部分,会因为分区方式的不同(MBR与GPT)而不同,同时也会因为存储设备分区个数的不同也会有差异。

下面这个是使用GPT方式将存储设备分为1个分区并格式化为FAT32文件系统格式的数据分布示意图。

(2)备份

在磁盘末尾的备份区域,主要是使用GPT方式分区的时候,会将分区表信息备份到存储设备的最后区域。对于MBR分区方式,并没有这部分。

(3)FAT表与目录项

在FAT32文件系统的使用过程中,FAT表和目录项是其核心部分,将在下面介绍

(二)文件在哪里?

将一个存储设备格式化成FAT32格式文件系统,然后再在上面创建几个文件夹和文件,那么这些文件和文件夹的名字信息是存储在什么位置?文件里面的数据又是存储在哪?要怎样才能找到这些文件?

上面在一个TF卡中创建了test1、test2、test3、test4 四个文件夹和一个0000.media媒体文件。

System Volume Information 目录及其下面的文件是在Windows系统格式化的时候系统写入的系统文件。

目录项

FAT表后面的区域,是根目录的存储区域,目录和文件以及文件中的实际数据都存储在这个一个大的区域。根目录是在该区域最开始的位置。

从根文件所在扇区的数据我们可以看到根目录的目录项信息:

WinHex 工具上,根目录所在位置的还有4个“ 新建文件夹 ”项。这个是因为在Windows创建文件夹的时候,开始的名字是“新建文件夹”,后面被我重命名成了test1~4

目录项分为 长文件名 短文件名

如果一个文件它的名字大于11个字节,那它就至少有两个目录项,一个短文件名项和一个长文件名项。

文件名长度小于等于11个字节的话,就只有一个短文件名项。短文件名目录项长度为32个字节,各字节的定义如下:

根据上面定义可以对根目录下的目录项进行解析:

以test2目录项举例,我们可以看到:

  • 文件名为test2 (短文件名)
  • 文件属性为 10 (子目录 )
  • 这里时间需要转换,2字节用不同的位表示年月日和时分秒
  • 起始簇号为 07

如果目录项是以 E5 开头,那表示该项是无效的或是已经删除了的目录项,比如上面的四个"新建文件夹"目录项

通过目录项,我们可以知道存储设备上都有哪些文件和目录,相应的子目录也是一样的实现,只不过子目录下面的目录项是在子目录所在的簇中记录。

(三)文件磁盘空间分配

在FAT32文件系统中,它是以簇为单位进行空间分配和管理。一般一个簇的大小为4KB(下面均以4KB做参考)。

一个文件或是一个目录,它是通过目录项知道它在存储设备上存放的的开始位置,也就是开始簇号,而簇号信息,是存储在FAT表上,

一个FAT32文件系统有两个FAT表,一个正常使用,另外一个为备份FAT表

通过分区上的DBR和FSINFO信息可以知道FAT表的大小和所在位置等信息。

FAT32 是以32位(4Byte)来定义一个FAT表项,也就是一个簇的状态,下表是FAT表项中值的含义:

对于FAT表,第0号簇是固定的0x0FFFFFF8,第1号簇项0xFFFFFFFF是被系统使用

第3号簇是根目录的开始簇,如果其值是0x0FFFFFFF,表示根目录只占用一个簇的空间,也就是4KB大小空间,如果其值是0x00000002~0x0FFFFFFE,表示根目录的下一个簇号,直到出现文件结束簇0x0FFFFFFF,也就是根目录大于4KB的大小。

下面是对FAT表现的一个解析。

从上面可以看出:

  1. 如果文件或是目录小于4K(一个簇),那它所占用的空间就是目录项中起始簇号所分配的空间,该簇号的值为结束簇号的值(0x0FFFFFFF)
  2. 如果一个文件大于4K(一个簇),目录项中的起始簇号所在位置的值,就是下一个位置存储的簇号值,比如0000.media 文件,它的起始簇号是10,第10簇号(0x0000000B)->第11簇号(0x0000000C)->......第241簇号(0x0x00000F2)->第242簇号(0x0FFFFFFF 结束簇号)
  3. 上面这个0000.media文件是以连续的方式存储在磁盘中,当磁盘满了或是使用久了之后,会存在磁盘碎片,有可能就不是连续的空间了。

(四)实现原理

我们从文件的创建、数据写入、文件删除等操作流程看文件系统的基本实现原理

(1)文件创建

  1. 创建文件或是目录的时候,会先在当前目录所在位置的目录项中添加一个目录项
  2. 目录项会记录文件的起始簇号,创建、修改时间,文件属性等信息

(2)文件增删数据

  1. 如果起始簇空间写满了,系统会查找一个空闲簇,数据将继续写入到该空闲簇中,FAT表中该空闲簇会被标记已经被使用,同时,该文件的结束簇号也会往后移动一个簇。
  2. 更新该目录项中的修改时间、文件大小等信息
  3. 删除或是修改文件里面的数据,就是一个反向的过程

(3)文件数据读取

  1. 通过目录项,找需要读取文件所在的开始簇位置
  2. 如果文件大于一个簇,开始簇位置的值为下一个簇的位置,可以顺着这个簇链一直查找,直到结束簇出现。

(4)文件删除

  1. 文件删除的时候,根目录中该目录项的信息并不会被删除,而是将该目录项标记为删除状态
  2. FAT表中该文件所占用的簇号,会被标记为0,表示该簇为未使用的簇。
  3. 该文件所在簇号所对应扇区的实际文件数据不会被擦除,文件里面的数据还是存储在删除上。

文件删除,实际上也就是将该文件在FAT表中的簇信息标记为可使用,然后将目录项标记为已删除,实际数据不会做删除处理

如果要恢复被删除的文件,可以根据目录项中的信息进行恢复,前提是不要再创建新文件和写入新数据,因为新的数据容易将原来文件所在扇区的数据覆盖或是擦除。

(5)基本原理

FAT32文件系统的基本原理,是通过目录项来管理磁盘的文件目录结构,然后通过FAT表来管理磁盘文件所使用的簇(扇区)空间。

FAT32 文件系统的FAT表是通过单向链式的方法来管理扇区,这种方式在小文件和小容量的储存设备上使用比较方便,但不适合于大文件和大容量的存储设备。

目前大于32GB的SDXC卡,SD协会已采用 exFAT 作为默认的文件系统。

(五)优缺点

(1)优点

FAT32 文件系统现在还在被大量使用,其主要的优势在于: 兼容性强和实现简单

兼容性强 : 它可以同时支持Windows、Linux、Mac OS 三个操作系统,同时因为它的历史悠久,很早就已经被广泛使用,所以很多老旧电脑系统和设备都可以支持。

实现简单 : 它的设计相对简单、易于实现和维护,特别是在系统资源紧张的嵌入式设备中。

(2)缺点

它的缺点主要有: 不适合大文件、磁盘碎片化、安全性较差

不适合大文件

目录项中使用4个字节表示文件大小,其最大表示的值为4GB,所以FAT32对于单个文件的最大大小限制为4GB。

安全性较差 :

相比一些现代文件系统(如NTFS、exFAT等),FAT32的安全性较差。它缺乏对文件和文件夹的访问控制、加密、日志记录等高级功能,因此不适合用于存储敏感数据或需要更高安全性的场景。

(3)磁盘碎片化

磁盘碎片化这里描述详细一些,因为它会影响到文件系统的性能。

静态分配簇

FAT32使用固定大小的簇(cluster)来管理存储空间。每个文件都被分配到一个或多个簇来存储,这些簇在存储设备上连续地排列。当文件大小超过一个簇的容量时,系统会分配额外的簇给文件。但是,如果在磁盘上没有足够的连续空闲簇来容纳整个文件,文件就会被分割成多个片段并存储在不同的地方,导致碎片化。

文件删除和大小改变

FAT32文件系统的碎片化还会因为文件的删除和大小的改变而产生。当文件被删除时,它占用的簇会被标记为空闲,可以被其他文件使用。如果其他文件需要的空间无法与原文件的簇连续,新文件就会分配到磁盘上的不同位置,造成碎片化。同样地,当文件的大小发生改变时,如果新的大小需要的簇数超过了原文件所占用的连续簇数,文件也会发生碎片化。

碎片化的影响

碎片化会影响文件的读取和写入性能。当文件被分割成多个片段时,系统需要花费更多的时间来定位和读取这些片段,从而降低了文件的读取速度。另外,由于文件存储不连续,存储设备上可能会出现许多小的空闲碎片,导致存储空间的浪费。

结尾

上面内容是以比较概况的方式来介绍FAT32文件系统的实现原理和它的优缺点,至于FAT32文件系统的详细实现细节,可以通过官方文档进行了解(晦涩难懂),也可以找张TF卡,通过winhex等工具,自己动手查看它的实现细节。

---------------------------End---------------------------
如需获取更多内容
请关注 liwen01 公众号

上一篇:《地狱之刃2塞娜的史诗》中圣柱与秘密路径全收集攻略
下一篇:《地下城与勇士手游(DNF手游)》黑话术语介绍
猜你感兴趣
uniapp-vue3-oadmin手机后台实例|vite5.x+uniapp多端仿ios管理系统

uniapp-vue3-oadmin手机后台实例|vite5.x+uniapp多端仿ios管理系统

原创 vue3+uniapp+uni-ui 跨端 仿ios桌面 后台 OA 管理模板 Uni-Vue3-WeOS 。 uniapp-vue3-os 一款基于 uni-app+vite5.x+pinia 等技术开发的 仿ios手机桌面OA 管理系统。实现了 自定义桌面栅格磁..

网游攻略 2024-05-22
dnSpyEx:一款强大的.NET反编译、编辑和调试工具

dnSpyEx:一款强大的.NET反编译、编辑和调试工具

说到.NET相关的反编译工具,大家脑海里第一个想到的是什么?ILSpy、dnSpy、还是dotPeek?今天我们将重点介绍一款名为dnSpyEx的开源.NET程序集反编译、编辑和调试工具。dnSpyEx是dnSpy项目的非官方Fork维护版本,具有强大的功能和灵活的使用方式。 dnSpyEx支持浅色、蓝色和深色主题,可用于调试 .NET Framework、.NET Core 和 Un..

网游攻略 2024-05-22
《原神》大伟丘15个刷新地点汇总

《原神》大伟丘15个刷新地点汇总

原神中新增加的奇怪的丘丘人每天会在不同的位置刷新,杀死二十个丘丘人就能完成一个成就。那么原神大伟丘的刷新地点都在哪里呢?下面小编为大家带来原神大伟丘15个刷新地点的汇总。 《原神》大伟丘15个刷新地点汇总 第一个位置:轻策庄。从传送点过去,飞到对面的梯田上,大伟丘就在广阔的田地里。 第二个位置:风龙废墟。从七天神像的传送点传送过去,在一个平台上。 第三..

网游攻略 2024-05-22
《暗黑破坏神4》s4电冲巧变回火有什么效果

《暗黑破坏神4》s4电冲巧变回火有什么效果

《 暗黑破坏神4 》是暴雪新推出的, 暗黑 破坏神ip下的最新作品。这几天推出了s4赛季。回火是这个赛季新推出的一个功能,这个功能可以重新锻造装备,让装备出现新属性。电冲巧变的效果如下。 电冲巧变效果分享 回火是这个赛季新推出的一个功能,这个功能可以重新锻造装备,让装备出现新属性。电冲巧变的效果如下。 相关攻略:《暗黑破坏神4..

网游攻略 2024-05-22
《最终幻想7重生》防具赛特拉护腕2怎么获得

《最终幻想7重生》防具赛特拉护腕2怎么获得

《最终幻想7重生》是史克威尔·艾尼克斯制作发行的一款动作角色扮演游戏,是重制三部曲的第二部作品,于ps5平台独占发售。游戏中共有9个可操作角色,其中部分角色的装备可以通过不同的方式的来获取,下面为大家带来防具赛特拉护腕2获取攻略,希望有所帮助。 防具赛特拉护腕2怎么获得 所在章节:章节13 位置:野心神殿 在完成考验后继续向前走,下楼梯,然后进入右侧房间找到这..

网游攻略 2024-05-22
《暗黑破坏神4》s4大地巧变回火有什么效果

《暗黑破坏神4》s4大地巧变回火有什么效果

《 暗黑破坏神4 》是暴雪新推出的, 暗黑 破坏神ip下的最新作品。这几天推出了s4赛季。回火是这个赛季新推出的一个功能,这个功能可以重新锻造装备,让装备出现新属性。大地巧变的效果如下。 大地巧变效果分享 回火是这个赛季新推出的一个功能,这个功能可以重新锻造装备,让装备出现新属性。大地巧变的效果如下。 相关攻略:《暗黑破坏神4..

网游攻略 2024-05-22
《地下城与勇士手游(DNF手游)》深渊票的使用方法介绍

《地下城与勇士手游(DNF手游)》深渊票的使用方法介绍

深渊票是《地下城与勇士手游(DNF手游)》中的一种重要道具,能够帮助玩家获取强力装备的入场券。使用深渊票进行深渊派对副本是获取高级装备的有效途径。那么,深渊票应该如何使用呢?以下将为大家详细介绍。 在游戏的委托栏中,深渊派对开始副本即可使用深渊票。使用深渊票后,会自动消耗一定数量进入副本。需要注意的是,如果在委托界面中看不见深渊派对的选项,那可能是因为玩家的等级还不够。 ..

网游攻略 2024-05-22
《地下城与勇士手游(DNF手游)》开服第二天玩法及注意事项

《地下城与勇士手游(DNF手游)》开服第二天玩法及注意事项

《地下城与勇士手游(DNF手游)》已经开服第二天,此时玩家的进度可能已经可以解锁造功、附魔等功能,同时委托副本也会解锁新的副本。以下是由“冉芝”带来的《地下城与勇士手游(DNF手游)》开服第二天玩法及注意事项,希望对大家有所帮助。 升到25级之后,可以开启游戏打造功能=徽章系统。因为强化和打造过渡装备没有意义,而只有徽章可以随时取下和佩戴。商城中可以购买4种颜色的徽章,分别镶嵌在玩家的..

网游攻略 2024-05-22
《地下城与勇士手游(DNF手游)》鬼泣PK技巧分享 鬼泣连招推荐

《地下城与勇士手游(DNF手游)》鬼泣PK技巧分享 鬼泣连招推荐

第1页: 展开

网游攻略 2024-05-22
《驾考宝典》更新题库方法

《驾考宝典》更新题库方法

在进行驾驶考试时,题库的更新至关重要。驾考宝典是一款备受欢迎的驾考学习软件,其题库的准确性和更新对考生来说具有极高的价值。下文将详细介绍如何在驾考宝典中更新题库,帮助考生们获取最新的驾驶考试资料,为顺利通过考试打下坚实的基础。 驾考宝典怎么更新题库? 1、首先打开驾考宝典软件,进入到首页后,可以切换到报名、直播课、买车、我的页面,然后点击右下角的【我的】; ..

网游攻略 2024-05-22
《地下城与勇士:起源》诱魔者职业介绍

《地下城与勇士:起源》诱魔者职业介绍

地下城与勇士:起源中的诱魔者职业备受关注。这个职业是女圣职者转职后的一种职业,在培养上有一定的技巧。下面将为大家介绍诱魔者的全面攻略,希望对感兴趣的玩家有所帮助。 《地下城与勇士:起源》诱魔者职业介绍 一、职业介绍 诱魔者是地下城与勇士中女圣职者的转职职业。擅长使用镰刀武器和重甲防具。一次觉醒称为断罪者,二次觉醒则是救世主。 二、技能加点 1、诱魔者重做..

网游攻略 2024-05-22
《决胜之心》风暴萨满角色介绍

《决胜之心》风暴萨满角色介绍

决胜之心风暴萨满如何?索德是兽人七大氏族中雷鸣氏族的长,年轻时是善于战斗的战士,后来被部族长老发现具有元素之力的天赋,成为出色的萨满并担任部族的酉长。以下是对这个角色的详细介绍,希望可以帮助大家了解。 《决胜之心》风暴萨满角色介绍 二、技能介绍: 1、雷霆图腾 在自身周围召唤一个【雷霆图腾】,继承80%输出属性,持续8秒。最多可同时存在..

网游攻略 2024-05-22
《地下城与勇士:起源》服务器上限解决方法

《地下城与勇士:起源》服务器上限解决方法

地下城与勇士起源服务器上限怎么办?在地下城与勇士手游公测当天,许多玩家遇到了服务器达到上限的问题,导致无法进入游戏。以下将介绍几种解决方法,希望对大家有所帮助。 《地下城与勇士:起源》服务器上限解决方法 答:等待官方优化、重新登录、换区注册。 1、等待官方优化 在公测首日出现服务器爆满的情况,官方一定会进行优化,但具体优化时间无法确定,玩家需要每隔一段时间尝试..

网游攻略 2024-05-22
《暗黑破坏神4》s4死灵法师效能回火有什么效果

《暗黑破坏神4》s4死灵法师效能回火有什么效果

《 暗黑破坏神4 》是暴雪新推出的, 暗黑 破坏神ip下的最新作品。这几天推出了s4赛季。回火是这个赛季新推出的一个功能,这个功能可以重新锻造装备,让装备出现新属性。死灵法师效能的效果如下。 死灵法师效能效果分享 回火是这个赛季新推出的一个功能,这个功能可以重新锻造装备,让装备出现新属性。死灵法师效能的效果如下。 相关攻略:《..

网游攻略 2024-05-22
《歧路旅人:大陆的霸者》每日必做日常优先级

《歧路旅人:大陆的霸者》每日必做日常优先级

《歧路旅人:大陆的霸者》是一款非常像素风格的角色扮演类冒险游戏。游戏目前已经公测上线,其中的日常任务比较繁多。为了帮助玩家节省时间,下面给大家分享《歧路旅人:大陆的霸者》的每日必做日常优先级。 《歧路旅人:大陆的霸者》每日必做日常优先级 每日必做日常优先级如下: 1. 无名小镇: 获得经验值坚果、金币兑换物品、必杀技强化材料。 2. 讨伐请求/高级讨伐请求: ..

网游攻略 2024-05-22
《地下城与勇士手游(DNF手游)》元素师PK技巧分享 元素师连招推荐

《地下城与勇士手游(DNF手游)》元素师PK技巧分享 元素师连招推荐

第1页: 展开

网游攻略 2024-05-22
《地狱之刃2塞娜的史诗》中圣柱与秘密路径全收集攻略

《地狱之刃2塞娜的史诗》中圣柱与秘密路径全收集攻略

地狱之刃2塞娜的史诗中的圣柱与秘密路径是两种收集要素,全部收集后也能解锁米德加德的故事与众神掠影两个成就。下面请看由“爱玩游戏的小透明”带来的《地狱之刃2塞娜的史诗》圣柱与秘密路径全收集攻略,希望对大家有用。 更多相关内容请关注: 地狱之刃2:塞娜的史诗专区 责任编辑:夏目贵志 本文是否解决了您的问题 已解决 0 未解决 ..

网游攻略 2024-05-22
文件系统(四):FAT32文件系统实现原理

文件系统(四):FAT32文件系统实现原理

FAT32是从FAT12、FAT16发展而来,目前主要应用在移动存储设备中,比如SD卡、TF卡。隐藏的 FAT文件系统 现在也有被大量使用在UEFI启动分区中。 为使文章简单易读,下面内容特意隐藏了很多实现细节,关于分区、格式化等相关的内容,可以查看之前的文章: 文件系统(一):存储介质、原理与架构 文件系统(二):分区、格式化数据结构 ..

网游攻略 2024-05-22
《地下城与勇士手游(DNF手游)》黑话术语介绍

《地下城与勇士手游(DNF手游)》黑话术语介绍

第1页: 展开

网游攻略 2024-05-22
《地下城与勇士手游(DNF手游)》宠物与宠物装备获取指南

《地下城与勇士手游(DNF手游)》宠物与宠物装备获取指南

《地下城与勇士手游(DNF手游)》中宠物系统是玩家提升战力的方法之一,那么宠物与宠物装备要怎么获取呢?下面为大家带来《地下城与勇士手游(DNF手游)》宠物与宠物装备获取指南,希望可以帮到大家。 宠物的获取 礼包内赠品 购买师恩如明月礼包时,礼包内会赠送宠物礼盒。打开后,可以五种导师类宠物中选择1个。所选择的宠物品级是神器级,该宠物属性已经是目前较强的了。 商城 ..

网游攻略 2024-05-22
加载中...