在Windows操作系统中支持FAT32文件系统,一个文件的物理结构是用文件分配表FAT来表示的,在FAT32中,FAT表有2份,主FAT表和备用FAT表,都是从存储块起始排列,FAT文件分配表的每个表项占32位。如果某分区为FAT32磁盘文件系统,每簇32扇区,扇区的大小为512字节,请问:
FAT表和备用FAT表共占用多少个簇
参考答案:FAT表和备用FAT表共占用1048576×2=2097152=2M。
解析: 考查FAT文件系统的基本原理。当一个程序对文件系统要求提供某一个文件的内容时,会到此文件的目录记录表去寻找它的第一个簇号码,然后再到FAT记录表里去找在此链表(Chain)里的下一个簇。此动作不断地重复直到找到文件的最后一个簇为止,文件系统可以精确地计算哪些簇属于这个文件及其先后顺序。由此方式,文件系统可提供程序所要求之文件的任何部分。这种组织文件的方式称为FAT链(FAT Chain),在FAT文件系统下,文件永远被分配到整数单位的簇。例如,在一个每一簇大小为32K的11GB磁盘中,一个只包含“Hello, Wodd”这几个字符的大小为12字节文件仍要在磁盘中占32KB的空间。在簇中没有用到的部分称为耗损(Slack),文件的耗损平均为半个簇。在一个每簇为16KB的850MB硬盘中其中平均文件大小为50KB的话,每4个簇约64K只用到50K,浪费约14K,大概有21.9%分配给文件的硬盘空间实际上浪费掉了。
真实的FAT32文件系统并不完全用32位来作为簇指针,一般用到28位就已经能管理很大的磁盘了。
FAT文件系统将数个扇区合并成一个簇(Cluster),作为为文件分配存储空间时的基本单位,簇里的扇区数目必须是2的n次方。FAT32文件系统中,用32位来表示磁盘簇号的位数,每个分区最大可存放232=4294967296个簇,每个簇为32×512字节=25×29=214=16K字节,则该分区最大可存放232×214=246B,约70TB。4294967296个簇号,每个簇要1个FAT表项指针,则FAT表所占的存储空间为是232×4=16GB。每簇16K字节,需要占用16GB/16KB=1048576=1M个簇。这里请注意,FAT表中只需要存放簇号,并不存放扇区的指针。