FAT文件系统分析.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
FAT文件系统分析

FAT文件系统的数据结构中有两个重要的结构:文件分配表和目录项: 文件和文件夹内容储存在簇中,如果一个文件或文件夹需要多余1个簇的空间,则用FAT表来秒速如何找到另外的簇。FAT结构用于指出文件的下一个簇,同时也说明了簇的分配状态。FAT12、FAT16、FAT32这三种文件系统的主要区别在于FAT项的大小不同。 FAT文件系统的每一个文件和文件夹都被分配到一个目录项,目录项中记录着文件名、大小、文件内容起始地址以及其他一些元数据。 在FAT文件系统中,文件系统的数据记录在“引导扇区DBR”中。引导扇区位于整个文件系统的0扇区,是文件系统隐藏区域的一部分,我们称其为DBR(DOS Boot Recorder——DOS引导记录)扇区,DBR中记录着文件系统的起始位置、大小、FAT表个数及大小等相关信息。 在FAT文件系统中,同时使用“扇区地址”和“簇地址”两种地址管理方式。这是因为只有存储用户数据的数据区使用簇进行管理(FAT12和FAT16的根目录除外),所有簇都位于数据区。其他文件系统管理数据区域是不以簇进行管理的,这部分区域使用扇区地址进行管理。文件系统的起始扇区为0号扇区。 FAT32的保留区 FAT32文件系统的开始部分有一个由若干扇区组成的保留区,保留区的信息会记录在DBR扇区中,比较常见的为32、34或38个扇区。 引导扇区: 引导扇区是FAT32文件系统的第一个扇区,也称DBR扇区。包含以下基本信息: ·每扇区字节数 ·每簇扇区数 ·保留扇区数 ·FAT表个数 ·文件系统大小(扇区数) ·每个FAT表大小(扇区数) ·根目录起始簇号 ·其他附加信息 说明:我们可以通过每个FAT表的大小扇区数乘以FAT的个数得到FAT区域的大小;通过保留扇区数和FAT区域的大小就可以得知数据区的起始位置,也即文件系统第一簇的位置。由根目录的簇号和第一簇的位置就可以得到根目录的位置。 引导代码 FAT文件系统将引导代码与文件形同数据结构融合在一起,而不像Unix文件系统那样各自存在,引导扇区的前三个字节为一个由机器代码构成的跳转指令,以使CPU越过跟在后面的配置数据跳转到配置数据后面的引导代码处。 FAT32文件系统引导扇区的512字节中,90~509字节为引导代码,而FAT12/FAT32则是62~509字节为引导代码。同时,FAT32还可以利用引导扇区后的扇区空间存放附加的引导代码。 一个FAT卷即使不是可引导文件文件系统,也会存在引导代码。 FSINFO信息扇区 FAT32文件系统在保留区中增加了一个FSINFO扇区,用以记录文件系统中空闲簇以及下一可用簇的簇号等信息。 FAT32的FAT表 位于保留区后的FAT区,有两个完全相同的FAT(文件分配表)组成。 说明: 对于文件系统来说,FAT表有两个重要作用:描述簇的分配状态以及标明文件或目录的下一簇的簇号 通常情况下,一个FAT文件系统会有两个FAT表,但有时也允许只有一个FAT表,FAT表的具体个数记录在引导扇区的偏移0x10字节处 由于FAT区紧跟在文件系统保留区后,所以FAT1在文件系统中的位置可以通过引导记录中偏移0x0e~0x0f字节处得保留扇区数得到。 FAT2紧跟在FAT1之后,它的位置可以通过FAT1的位置加上FAT表的大小扇区数来计算出。 FAT表的特性: FAT表由一系列大小相等的FAT表项组成,总的来说FAT表有如下特性: FAT32中每个簇的簇地址,是有32bit记录在FAT表中。FAT表中的所有字节位置以4字节为单位并存储特殊标志内容。从2号地址开始,每个地址对应于数据区的簇号,FAT表中的地址编号于数据区中的簇号相同。故我们也称FAT表中的这些地址为FAT表项,FAT表项中记录的值称为FAT表项值。 当文件系统被创建,也就是进行格式化操作时,分配给FAT区域的空间将会被清空,在FAT1与FAT2的0号表项与1号表项写入特定值。由于创建文件系统的同时也会创建根目录,也就是为根目录分配了一个簇空间,通常为2号簇,所以2号簇对应的2号FAT表项也会被写入一个结束标记。 如果某个簇未被分配使用,它所对应的FAT表项内的FAT表项值即用0进行填充,表示该FAT表项对应的簇未被分配。 当某个簇已被分配使用时,则它对应的FAT表项内的FAT表项值也就是该文件的下一存储位置的簇号。如果该文件结束于该簇,则在它的FAT表项中记录的事一个文件结束标记,对于FAT32而言,代表文件结束的FAT表项值为0x0fffffff。 如果某个簇存在坏扇区,则整个簇会用FAT表项值0xfffffff7标记为坏簇,不再使用,这个坏簇标记就记录在它所对应的FAT表项中。 由于簇号起始于2号,所以FAT表项的0号表项与1号表项不与任何簇对应。FAT32的0号表项值总

文档评论(0)

yaobanwd + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档