您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网>电子百科>电脑硬件>台式机>

FAT32文件系统是什么意思

2010年04月15日 15:53 www.elecfans.com 作者:佚名 用户评论(0

FAT32文件系统是什么意思

 (一)FAT32 文件系统将逻辑盘的空间划分为三部分,依次是引导区(BOOT区)、文件分配表区(FAT区)、数据区(DATA区)。引导区和文件分配表区又合称为系统区。

    (二)引导区从第一扇区开始,使用了三个扇区,保存了该逻辑盘每扇区字节数,每簇对应的扇区数等等重要参数和引导记录。之后还留有若干保留扇区。而FAT16文件系统的引导区只占用一个扇区,没有保留扇区。

    (三)文件分配表区共保存了两个相同的文件分配表,因为文件所占用的存储空间(簇链)及空闲空间的管理都是通过FAT实现的,FAT如此重要,保存两个以便第一个损坏时,还有第二个可用。文件系统对数据区的存储空间是按簇进行划分和管理的,簇是空间分配和回收的基本单位,即,一个文件总是占用若干个整簇,文件所使用的最后一簇剩余的空间就不再使用,而是浪费掉了。

   从统计学上讲,平均每个文件浪费0.5簇的空间,簇越大,存储文件时空间浪费越多,利用率越低。因此,簇的大小决定了该盘数据区的利用率。FAT16系统簇号用16位二进制数表示,从0002H到FFEFH个可用簇号(FFF0H到FFFFH另有定义,用来表示坏簇,文件结束簇等),允许每一逻辑盘的数据区最多不超过FFEDH(65518)个簇。FAT32系统簇号改用32位二进制数表示,大致从00000002H到FFFFFEFFH个可用簇号。FAT表按顺序依次记录了该盘各簇的使用情况,是一种位示图法。

   每簇的使用情况用32位二进制填写,未被分配的簇相应位置写零;坏簇相应位置填入特定值;已分配的簇相应位置填入非零值,具体为:如果该簇是文件的最后一簇,填入的值为FFFFFF0FH,如果该簇不是文件的最后一簇,填入的值为该文件占用的下一个簇的簇号,这样,正好将文件占用的各簇构成一个簇链,保存在FAT表中。0000000H、00000001H两簇号不使用,其对应的两个DWORD位置(FAT表开头的8个字节)用来存放该盘介质类型编号。FAT表的大小就由该逻辑盘数据区共有多少簇所决定,取整数个扇区。

   (四)FAT32系统一簇对应8个逻辑相邻的扇区,理论上,这种用法所能管理的逻辑盘容量上限为16TB(16384GB),容量大于16TB时,可以用一簇对应16个扇区,依此类推。FAT16系统在逻辑盘容量介于128MB到256MB时,一簇对应8个扇区,容量介于256MB到512MB时,一簇对应16个扇区,容量介于512MB到1GB时,一簇对应32个扇区,容量介于1GB到2GB时,一簇对应32个扇区,超出2GB的部分无法使用。显然,对于容量大于512MB的逻辑盘,采用FAT32的簇比采用FAT16的簇小很多,大大减少了空间的浪费。

   但是,对于容量小于512MB的盘,采用FAT32虽然一簇8个扇区,比使用FAT16一簇16个扇区,簇有所减小,但FAT32的FAT表较大,占用空间较多,总数据区被减少,两者相抵,实际并不能增加有效存储空间,所以微软建议对小于512M的逻辑盘不使用FAT32。

   另外,对于使用FAT16文件系统的用户提一建议,硬盘分区时,不要将分区(逻辑盘)容量正好设为某一区间的下限,例:将一逻辑盘容量设为1100M(稍大于1024M),则使用时其有效存储容量比分区为950M的一般还少,因其簇大一倍,浪费的空间较多。还有,使用FDISK等对分区指定容量时,由于对1MB的定义不一样(标准的二进制的1MB为1048576B,有的系统将1MB理解为1000000B,1000KB等),及每个分区需从新磁道开始等因素,实际分配的容量可能稍大于指定的容量,亦需注意掌握。

     五)根目录区(ROOT区)不再是固定区域、固定大小,可看作是数据区的一部分。因为根目录已改为根目录文件,采用与子目录文件相同的管理方式,一般情况下从第二簇开始使用,大小视需要增加,因此根目录下的文件数目不再受最多512的限制。FAT16文件系统的根目录区(ROOT区)是固定区域、固定大小的,是从FAT区之后紧接着的32个扇区,最多保存512个目录项,作为系统区的一部分。

   (六)目录区中的目录项变化较多,一个目录项仍占32字节,可以是文件目录项、子目录项、卷标项(仅跟目录有)、已删除目录项、长文件名目录项等。目录项中原来在DOS下保留未用的10个字节都有了新的定义,全部32字节的定义如下:

(1) 0-- 7字节 文件正名。

(2) 8--10字节 文件扩展名。

(3) 11字节 文件属性,按二进制位定义,最高两位保留未用,0至5位分别是只读位、隐藏位、系统位、卷标位、子目录位、归档位。

(4) 11--13字节 仅长文件名目录项用,用来存储其对应的短文件名目录项的文件名字节校验和等。

(5) 13--15字节 24位二进制的文件建立时间,其中的高5位为小时,次6位为分钟。

(6) 16--17字节 16位二进制的文件建立日期,其中的高7位为相对于1980年的年份值,次4位为月份,后5位为月内日期。

(7) 18--19字节 16位二进制的文件最新访问日期,定义同(6)。

(8) 20--21字节 起始簇号的高16位。

(9) 22--23字节 16位二进制的文件最新修改时间,其中的高5位为小时,次6位为分钟,后5位的二倍为秒数。

(10)24--25字节 16位二进制的文件最新修改日期,定义同(6)。

(11)26--27字节 起始簇号的低16位。

(12)28--31字节 32位的文件字节长度。

   其中第(4)至(8)项为以后陆续定义的。 对于子目录项,其(12)为零;已删除目录项的首字节值为E5H。在可以使用长文件名的FAT32系统中,文件目录项保存该文件的短文件名,长文件名用若干个长文件名目录项保存,长文件名目录项倒序排在文件短目录项前面,全部是采用双字节内码保存的,每一项最多保存十三个字符内码,首字节指明是长文件名的第几项,11字节一般为0FH,12字节指明类型,13字节为校验和,26--27字节为零。

修复被CIH破坏的硬盘一例(FAT32)

1) 用无毒系统Windows 9X软盘启动计算机,进入CMOS SETUP,将系统日期修改为26日以前。

2) 用软盘重新引导计算机,运行FDISK /MBR,清除主引导记录MBR代码区。

3) 运行DEBUG,输入以下程序:

-a

XXXX:0100 mov ax,201

XXXX:0103 mov bx,1000

XXXX:0106 mov cx,1

XXXX:0109 mov dx,80

XXXX:010C int13

XXXX:010E int3

XXXX:010F [回车]

-g

....(显示寄存器结果,略去)

-f11BE 11FD 00

-f11FE 11FF 55 AA

-a100

XXXX:0100 mov ax,301

XXXX:0103 [回车]

-g=100

......

-q

以上程序清空分区表。或者,直接运行DISKEDIT,选择物理驱动器HARD DISK 1,按Alt-P

选择物理扇区,Side 0,Cylinder 0,Sector 1,用00清空偏移01BE至01FD,并在扇区最

后输入55,AA。在启动DISKEDIT后,系统自动设为READ ONLY,从菜单中选TOOLS-]CONFIGURATION,

清除READ ONLY标记并回车,就可以对硬盘进行写操作了。在写操作之后,按Ctrl-W存盘。

4) 清空分区表后,用NDD重建原分区。如果硬盘上还有除C以外的逻辑分区,可以一齐找回。

5) 为重建逻辑驱动器C,下面将计算FAT区:

a) Windows 9X操作系统的逻辑驱动器C的BOOT区在Cylinder 0,Side 1,Sector 1。

b) 用DISKEDIT的FIND功能寻找ASC II字符串:COMMAND COM

(COMMAND与COM中间有一个空格,ASC II值为20,找寻FDT表中COMMAND.COM的原因是,根目录中一般都有此文件,如果你的计算机里该文件不在根目录,就将上述字符串改为根目录中的其他文件名,如IO.SYS或MSDOS.SYS。但要注意文件名和后缀名之间要有空格,总长度为11字节)

c) 找到后,用PgUp向前翻页,直到上一扇区尾部出现连续的00

(一般说,没见过硬盘的最后几十K还有存放数据的情况,否则,Windows 9X的虚拟内存恐怕就没法建立了,)

d) 记录该扇区的Cylinder,Side,Sector值。——ROOT

e) 寻找FAT2的开始扇区,其特点是:

(要选中“Search at specified sector offset:[0...]”)

扇区偏移0000H处为F8 FF FF ;FAT16

扇区偏移0000H处为F8 FF FF FF ;FAT32

找到后,确认上一扇区尾部出现连续的00,则该扇区为FAT2头部。

(FAT1应与FAT2内容相同,但其头部数个扇区已被CIH破坏)

f) 记录该扇区的Cylinder,Side,Sector值。——FAT2

g) 计算FAT2的扇区数,用以下公式,其中,尾标0为FAT2地址,尾标1为ROOT地址:

扇区数=(Cylinder1-Cylinder0)*Sectors/Cylinder+(Side1-Side0)*Sides

*Sectors/Cylinder+Sector1-Sector0

说明:Sectors/Cylinder为每道扇区数,Sides为硬盘的总磁头数。一个简单的查看方法是:在DISKEDIT中按下[End]键,屏幕右下角的Sector值即为每道扇区数,而Side值+1即为总磁头数。FAT1扇区数与FAT2相同。

h) 计算出FAT1头部地址,并记录。——FAT1

i) 在DISKEDIT中按Alt-P重选Physical Sector,起始地址为步骤e)记录的地址。扇区数为步骤g)计算出的扇区数。按Alt-W将选中的扇区(即FAT2)存至FAT1开始的地址(步骤h)计算出的FAT1头部)。

j) 至此,FAT2-]FAT1的恢复工作宣告结束。

6) 下面恢复主引导记录中的标志:

用DISKEDIT选择Cylinder 0,Side 0,Sector 1,将此扇区尾部偏移为01C2H地址的标志修复。如果为FAT16系统,应为06H;如果为FAT32系统,应为0CH。均表示PRI-DOS分区。

7) 恢复BOOT扇区,位置在Cylinder 0,Side 1,Sector 1,以下用0-1-1表示,以此类推。

a) 在步骤5)中,已计算出了FAT1的起始位置。在FAT16系统中,FAT1一般自0-1-2开始;在FAT32系统中,FAT1一般自0-1-33开始。如果你的系统与此不同,以实际计算出的数值为准。

b) 将FAT1的起始扇区号减1,就是系统的隐含扇区数,一般FAT16为1,FAT32为32。

c) 如为FAT16系统,跳过本步骤,至d)。

选择一台无毒的FAT32系统作参考,将0-1-1至FAT1前面的隐含扇区保存到

非常好我支持^.^

(246) 50.4%

不好我反对

(242) 49.6%

( 发表人:admin )

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!