问题 问答题

某文件系统空间的最大容量为16TB(1T=240),以存储块为基本分配单位,存储块大小为4KB。文件控制块(FCB)包含一个1024B的索引表区。请回答下列问题。

假设索引表区采用如下结构:第0~15字节采用<起始块号,块数>格式表示文件创建时预分配的连续存储空间,其中起始块号占8B,块数占8B;剩余1008字节采用直接索引结构,一个索引项占8B,则可支持的单个文件最大长度是多少字节为了使单个文件的长度达到最大,请指出起始块号和块数分别所占字节数的合理值并说明理由。

答案

参考答案:块号占8字节,块数占8字节的情形下,最大文件长度:264×212+(1008/8)×212≈276B。合理的起始块号和块数所占字节数分别为<12,4>(或<0,16>或<9,7>或<10,6>或<11,5>等)。理由:块数占4B或以上,就可表示16TB大小的文件长度,达到文件系统的空间上限。

解析: 本题考查文件系统中有关多级索引的结构和使用的问题。已知文件系统最大容量为16TB(244),因此,每个文件块为4KB,那么对这么大的文件管理需要记录的文件块数是16TB/4KB=4G项(244/212=232)。对于第一问,采用直接索引,则所有的索引项在文件控制块内,已知文件控制块内有1024B的索引表区,要完全索引4G项的索引,每个索引项的长度必须大于等于32位,或4B,那么1024B中可以容纳1024B/4B=256项的索引项,每项索引项可以指出一个磁盘块,每块4KB,则,其文件最大容量为4KB×256=1MB。
若采用混合索引,那么根据前16个字节的分配,前8B为起始块号,在此无用,后8B为块数,即64位用来表示块数。则容量为264×4KB=276B,剩余:1008B用于直接索引,而且每个索引项为8B,则总共索引项为1008B/8B=126索引项,每项4KB,共504KB,所以总容量为276B+504KB≈276B,远远超过系统的总容量16TB。所以<8,8>分配是冗余的。
根据第一问,我们知道,要表示最大文件数,索引项不得小于4G项,即索引号必须在32位(含)以上,所以,对于前16个字节的分配,可以考虑表示块数的部分大于等于32位,即4B即可,例如可以按<12,4>,<11,5>,<10,6>,<9,7>,<8,8>等来分配,当然<0,16>分配默认只能从0起始,只能存放一个大文件,其他文件只能利用后面的1008B直接索引项来索引了,造成对文件的数量有限制;同理其他的分配也存在类似问题,需要注意。

填空题
单项选择题