您现在的位置是:首页 > 电脑技术查询 > 电脑知识

文件分配表

编辑:chaxungu时间:2022-12-07 04:48:57分类:电脑知识

文件分配表fat(fileallocationtable)用来记录文件所在位置的表格.它对于硬盘的使用是非常重要的,假若丢失文件分配表,那么硬盘上的数据就会因无法定位而不能使用了。不同的操作系统所使用的文件系统不尽相同,在个人计算机上常用的操作系统中,dos6.x及以下版本和windows3.x使用fat16;os/2使用hpfs;windowsnt则使用ntfs;而ms-dos7.10/8.0(windows95osr2及windows98自带的dos)及rom-dos7.x同时提供了fat16及fat32供用户选用。其中我们接触最多的是fat16、fat32文件系统。

windows95osr2和windows98开始支持fat32文件系统,它是对早期dos的fat16文件系统的增强,由于文件系统的核心--文件分配表fat由16位扩充为32位,所以称为fat32文件系统。在一逻辑盘(硬盘的一分区)超过512兆字节时使用这种格式,会更高效地存储数据,减少硬盘空间的浪费,一般还会使程序运行加快,使用的计算机系统资源更少,因此是使用大容量硬盘存储文件的极有效的系统。

(一)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字节为零。

(七)以前版本的windows和dos与fat32不兼容,不能识别fat32分区,有些程序也依赖于fat16文件系统,不能和fat32驱动器一道工作。将硬盘转换为fat32,就不能再用双引导运行以前版本的windows(windows95[version4.00.950]、windowsnt3.x、windowsnt4.0和windows3.x)。

上一篇:中国远程教育网

下一篇:飞利浦898