文件分配表

付强(www.fuqiang.org

    文件分配表即FAT(File Allocation Table),是系统的文件寻址系统,顾名思义,就是用来表示磁盘文件的空间分配信息的。它不对引导区、文件目录表的信息进行表示,也不真正存储文件内容。为了数据安全起见,FAT一般做两个,第二FAT为第一FAT的备份。

    磁盘是由一个一个扇区组成的,若干个扇区合为一个簇,文件占用磁盘空间,基本单位不是字节而是簇。文件存取是以簇为单位的,哪怕这个文件只有1个字节,也要占用一个簇。每个簇在文件分配表中都有对应的表项,簇号即为表项号,同一个文件的数据并不一定完整地存放在磁盘的一个连续的区域内,而往往会分成若干段,像一条链子一样存放。这种存储方式称为文件的链式存储。由于FAT表保存着文件段与段之间的连接信息,所有操作系统在读取文件时,总是能够准确地找到文件各段的位置并正确读出。

    为了实现文件的链式存储,硬盘上必须准确地记录哪些簇已经被文件占用,还必须为每个已经占用的簇指明存储后续内容的下一个簇的簇号。对一个文件的最后一簇,则要指明本簇无后续簇。这些都是由FAT表来保存的。表中有很多表项,每项记录一个簇的信息。初形成的FAT中所有项都标明为“未占用”,但如果磁盘有局部损坏,那么格式化程序会检测出损坏的簇,在相应的项中标为“坏簇”,以后存文件时就不会再使用这个簇了。FAT的项数与数据区的总簇数相当,每一项占用的字节数也要能存放得下最大的簇号。

    当一个磁盘格式化后,在其逻辑0扇区(即BOOT扇区)后面的几个扇区中就形成一个重要的数据表——文件分配表。文件分配表位于DBR之后,其大小由本分区的大小及文件分配单元的大小决定。FAT的格式有很多种,大家比较熟悉的有FAT16和FAT32等格式。FAT16只能够用于2GB以下的分区;而FAT32使用最为广泛,可管理的最大分区为32GB。文件系统的格式处了FAT16和FAT32外,还有NTFS、REISERFS、EXT、EXT2、EXT3、ISO9660、XFS、MINX、VFAT、HPFS、NFS、SMB、SYSV、PROC、JFS等

    在读文件分配表时要注意以下几个问题:

    (1)不要把表项内的数字误认为表示当前簇号,而应是该文件的下一个簇的簇号。

    (2)高字节在后,低字节在前是存储数字的一种方式,读出时应进行调整。文件分配表与文件目录表(FDT)相配合,可以统一管理整个磁盘的文件。它告诉系统磁盘上哪些簇是坏的或哪些簇可以用,并存储每个文件所使用的簇号,它就好比文件的“总调度师”。

 

No comments yet.

发表回复