<code id='fwzlx'><strong id='fwzlx'></strong></code>

      <i id='fwzlx'></i>

      <dl id='fwzlx'></dl>
    1. <acronym id='fwzlx'><em id='fwzlx'></em><td id='fwzlx'><div id='fwzlx'></div></td></acronym><address id='fwzlx'><big id='fwzlx'><big id='fwzlx'></big><legend id='fwzlx'></legend></big></address><i id='fwzlx'><div id='fwzlx'><ins id='fwzlx'></ins></div></i>
      <ins id='fwzlx'></ins>
        1. <tr id='fwzlx'><strong id='fwzlx'></strong><small id='fwzlx'></small><button id='fwzlx'></button><li id='fwzlx'><noscript id='fwzlx'><big id='fwzlx'></big><dt id='fwzlx'></dt></noscript></li></tr><ol id='fwzlx'><table id='fwzlx'><blockquote id='fwzlx'><tbody id='fwzlx'></tbody></blockquote></table></ol><u id='fwzlx'></u><kbd id='fwzlx'><kbd id='fwzlx'></kbd></kbd>
            <fieldset id='fwzlx'></fieldset>
            <span id='fwzlx'></span>

            FAT32文件系统的存储组织结构(一)

            • 时间:
            • 浏览:25
            • 来源:124软件资讯网

            对磁盘的物理结构 ,逻辑结构和存储结构有了比力深入的相识后  ,我们来仔细探讨FAT32文件系统的存储组织结构  。说到文件系统的组织结构  ,我们应该马上意识到 ,这指的是文件系统在统一个分区内的组织结构  ,在这个话题上  ,我们完全可以不管分区之外的所有事情  。

            为了剖析FAT32文件系统的存储组织结构  ,我们来建设一个实着实在的文件系统:将U盘插入电脑  ,将U盘花样化成FAT32分区花样:

            以建好的U盘FAT32文件系统为基础  ,下面从文件系统的各个组成来划分加以先容  。

            分区指导扇区DBR

            用winhex打开U盘显示如下:

            这是FAT32分区指导记载 ,界说如下:

            偏移00H: 3字节的 跳转指令 EB 58 90  ,跳过下面的BPB和扩展BPB部门

            偏移03H:8字节的硬盘分区类型文本字符名:4D 53 44 4F 53 35 2E 30 即: MSDOS5.0

            偏移0BH: 25字节的分区参数块(BPB) ,细分如下:

            偏移0BH:扇区字节数 00 02 即0X0200,512字节

            偏移0DH:每簇扇区数 08即每簇包罗8个扇区

            偏移0EH:保留扇区数 24 00即保留36个扇区

            偏移10H:FAT表份数 02即两个FAT表

            偏移11H:未用 00 00

            偏移13H:未用 00 00

            偏移15H:介质类型 F8即当地硬盘

            偏移16H:未用 00 00

            偏移18H:每磁道扇区数 3F 00 即每磁道63扇区

            偏移1AH:磁头数 FF 00即255个磁头

            偏移1CH:隐藏扇区数 80 1F即8064个隐藏扇区

            偏移20H:磁盘总扇区数 80 F0 77 00即总共7860352个扇区(7860352*512=4024500224  ,由于我的U盘是4G)

            偏移24H:52字节的扩展分区参数块(扩展BPB)  ,细分如下:

            偏移24H:FAT表占用扇区数 EE 1D 00 00即FAT表占7662个扇区

            偏移28H:未用 00 00 00 00

            偏移2CH:根目录入口簇号 02 00 00 00即根目录从02号簇最先

            偏移30H:文件系统信息扇区号 01 00即扇区1

            偏移32H:备份指导扇区的位置 06 00即6号扇区(第7个扇区)  ,从WINHEX中我们也可以看到  ,6号扇区的内容和0号指导扇区内容 是 一样的

            偏移34H:未用 00 00 00 00 00 00 00 00 00 00 00 00

            偏移40H:物理磁盘号 00

            偏移41H:未用 00

            偏移42H:扩展指导标志 29即0X29

            偏移43H:磁盘序列号F1 2A 27 04通常为一随机数

            偏移47H:卷标ASCII 4E 4F 20 4E 41 4D 45 20 20 20 20 即NO NAME

            偏移52H:文件系统花样ASCII 46 41 54 33 32 20 20 20即FAT32

            偏移5AH:分区指导代码 420字节:

            33C98ED1BCF47B8EC18ED9BD007C884E028A5640B408CD137305B9FFFF8AF166

            0FB6C640660FB6D180E23FF7E286CDC0ED0641660FB7C966F7E1668946F8837E1

            6007538837E2A007732668B461C6683C00CBB0080B90100E82B00E94803A0FA7DB

            47D8BF0AC84C074173CFF7409B40EBB0700CD10EBEEA0FB7DEBE5A0F97DEBE0

            98CD16CD196660663B46F80F824A00666A0066500653666810000100807E02000F8

            52000B441BBAA558A5640CD130F821C0081FB55AA0F851400F6C1010F840D00FE4

            602B4428A56408BF4CD13B0F96658665866586658EB2A6633D2660FB74E1866F7F1

            FEC28ACA668BD066C1EA10F7761A86D68A56408AE8C0E4060ACCB80102CD13666

            10F8254FF81C300026640490F8571FFC34E544C445220202020202000000000000000

            00000000000000000000000000000000000000000000000000000000000000000000000

            00000000000000D0A52656D6F7665206469736B73206F72206F74686572206D656469

            612EFF0D0A4469736B206572726F72FF0D0A507265737320616E79206B657920746F2

            0726573746172740D0A0000000000ACCBD80000

            偏移1FEH:有用扇区竣事标志 55 AA

            到此分区指导扇区先容竣事  。

            文件分配表FAT

            简介:

            FAT表(文件分配表) ,是FAT文件系统中用于磁盘数据索引和定位而引进的一种链式结构  。在FAT文件系统中 ,文件的存储遵照FAT表制订的簇链式数据结构来举行  。同时 ,FAT文件系统将组织数据时使用的目录也抽象为文件  ,以简化对数据的治理 。

            FAT1表位置的定位:

            在我们前面先容分区指导记载的时间提到,在偏移0EH处存储了保留扇区的个数  ,这个保留扇区数指的就是当前分区内DBR到FAT表之间的所有扇区的个数(包罗DBR但不包罗FAT表)  。因此  ,我们可以定位FAT表所在的起始偏移位置了  ,即24H*200H=4800H  。我们贴出4800H处得部门内容如下:

            显然没有错  ,这就是我们FAT1所存储的位置 ,只是当前没有存储文件  ,以是FAT比力简朴而已  。

            FAT2表位置的定位:

            在我们前面先容分区指导记载的时间提到,在偏移24H处存储了FAT表所占用的扇区个数 ,我们又知道FAT2是紧邻FAT1的  ,以是可以很容易获得FAT2的存储位置的偏移地址:FAT1的起始偏移地址+FAT1的巨细=4800H+1DEEH*200H=3C2400H,我们贴出3C2400H处的部门内容如下:

            显然没有错  ,这就是我们FAT2所存储的位置  ,内容与FAT1相同  。

            FAT表的特征:

            FAT表由一系列巨细相等的FAT表项组成  ,它有如下特征:
            FAT32中每个簇的簇地址  ,使用32bit(4个字节)记载在FAT表中 。FAT表中的所有字节位置以4个字节为单元举行划分 ,并对所有划分后的位置由0举行地址编号  。0 号地址与1号地址被系统保留并存储特殊标志内容  。从2号地址最先 ,每个地址对应于数据区的簇号 ,FAT表中的地址编号与数据区中的簇号相同  。我们称FAT中的这些地址为FAT表项  ,FAT表项中记载的值称为FAT表项值 。
            当文件系统被建立  ,也就是举行花样化操作时 ,分配给FAT区域的空间将会被清空 ,在FAT1与FAT2的0号表项与1号表项写入特定值  。由于建立文件系统的同时也会建立根目录  ,也就是为根目录分配了一个簇空间  ,通常为2号簇  ,以是2号簇所对应的2号FAT表项也会被写入一个竣事标志  。
            若是某个簇未被分配使用  ,它所对应的FAT表项内的FAT表项值即用0举行填充  ,表现该FAT表项所对应的簇未分配使用  。
            当某个簇已被分配使用时 ,则它对应的FAT表项值也就是该文件的下一个存储位置的簇号 。若是该文件竣事于该簇  ,则在它的FAT表项中记载的是一个文件竣事标志  ,对于FAT32而言 ,代表文件竣事的FAT表项值为0x0FFFFFFF  。
            若是某个簇存在坏扇区 ,则整个簇会用FAT表项值0x0FFFFFF7标志为坏簇  ,不再使用  ,这个坏簇标志就记载在它所对应的FAT表项中  。
            由于簇号起始于2  ,以是FAT表的0号表项与1号表项不与任何簇对应  。FAT32的0号表项值总是“F8FFFF0F”  。1号表项可能被用于记载脏标志  ,以说明文件系统没有被正常卸载或者磁盘外貌存在错误 。不外此值似乎并不主要  ,因此我们只要相识就可以  。正常情形下 ,1号表项值为“FFFFFFFF”或“FFFFFF0F"  。
            在文件系统中新建文件时 ,若是新建的文件只占用一个簇 ,为其分配的簇所对应的FAT表项将会被写入竣事标志 。若是新建的文件不只占用一个簇  ,则在其所占用的每个簇对应的FAT表项中写入为其分配的下一簇的簇号  ,在最后一个簇对应的FAT表项中写入竣事标志  。
            新建目录时  ,只为其分配一个簇的空间  ,对应的FAT表项中写入竣事标志  。当目录增大超出一个簇的巨细时 ,将会在空闲空间中继续为其分配一个簇 ,并在FAT表中为其建设FAT表链以形貌它所占用的簇情形  。
            对文件或目录举行删除操作时  ,它们所对应的FAT表项将会被清空  ,设置为0以表现其所对应的簇处于未分配状态  。

            根目录区

            简介:

            在FAT32文件系统中 ,根目录的位置不再硬性地牢固  ,可以存储在分区内可寻址的恣意簇内  ,不外通常根目录是最早建设的(花样化就天生了)目录表 。以是  ,我们看到的情形基本上都是根目录首簇紧邻FAT2 ,占簇区顺序上的第1个簇(即2号簇) 。同时  ,FAT32文件系统将根目录当做通俗的数据文件来看  ,所有没有了目录项数的限制 ,在需要的时间可以分配空簇  ,存储更多的目录项  。

            起始偏移地址定位:

            根目录起始扇区=保留扇区数+FAT×2+(起始簇-2)x每簇的扇区数  ,在我们前面先容分区指导记载的时间提到,偏移2CH处生存了根目录起始簇号是2 ,以是求得根目录起始扇区是24H+1DEEH*2H+(2-2)*8H=3C00H,即求得偏移地址3C00H*200H=780000H,我们贴出780000H处的部门内容如下:

            目录区的一个目录项占用32个字节  ,可以是长文件名目录项、文件目录项、子目录项等 。

            漫笔件名花样的目录项

            对于漫笔件名花样的目录项  。其参数意义如下:

            凭据参数界说  ,我们来剖析一下上图的目录项 54 45 53 54 5F 46 41 54 33 32 20 08 00 00 00 00 00 00 00 00 00 00 19 95 10 3F 00 00 00 00 00 00  。其中起始11字节54 45 53 54 5F 46 41 54 33 32 20 是卷标TEST_FAT32;第12字节08指示当前目录项生存的是卷标;第23-24字节19 95即9519H,是最近修改时间:19点40分50秒;第25-26字节10 3F即3F10H,是最近修他日期:2011年8月16日;

            长文件名花样的目录项

            FAT32的一个主要的特点是完全支持长文件名  。长文件名依然是记载在目录项中的  。为了低版本的OS或法式能准确读取长文件名文件  ,系统自动为所有长文件名文件建立了一个对应的漫笔件名  ,使对应数据既可以用长文件名寻址  ,也可以用漫笔件名寻址  。不支持长文件名的OS或法式会忽略它以为不正当的长文件名字段  ,而支持长文件名的OS或法式则会以长文件名为显式项来记载和编辑  ,并隐藏起漫笔件名  。

            当建立一个长文件名文件时 ,系统会自动加上对应的漫笔件名  ,其原则如下:
            (1)、取长文件名的前6个字符加上"~1"形成漫笔件名  ,扩展名稳定  。
            (2)、若是已存在这个文件名  ,则符号"~"后的数字递增  ,直到5  。
            长文件名的实现有赖于目录项第12字节属性字节  ,当此字节的值为0FH时 ,支持长文件名的系统会将其当做长文件名的依据  ,而只支持漫笔件名的系统会以为是异常而忽略掉 。系统将长文件名以13个字符为单元举行切割  ,每一组占有一个目录项 。以是可能一个文件需要多个目录项  ,这时长文件名的各个目录项按倒序排列在目录表中  ,以防与其他文件名混淆  。
            长文件名中的字符接纳unicode形式编码  ,每个字符占有2字节的空间  。其目录项界说如:

            下面是我建设的长文件名文件夹abcdefghijklmnopqrstuvwxyz1234567890的目录项: