某文件系统空间的最大容量为 4TB(1TB=240 B),以磁盘块为基本分配单位。磁盘块大小为 1KB。文件控制块 (FCB) 包含一个 512B 的索引表区。请回答下列问题。
(1) 假设索引表区仅采用直接索引结构,索引表区存放文件占用的磁盘块号,索引表项中块号最少占多少字节?可支持的单个文件最大长度是多少字节?
(2) 假设索引表区采用如下结构:第 0~7 字节采用 <起始块号,块数> 格式表示文件创建时预分配的连续存储空间,其中起始块号占 6B,块数占 2B;剩余 504 字节采用直接索引结构,一个索引项占 6B,那么可支持的单个文件最大长度是多少字节?为了使单个文件的长度达到最大,请指出起始块号和块数分别所占字节数的合理值并说明理由。
[tag_link]
1)文件系统中所能容纳的磁盘块总数为 4TB/1KB=2³²。要完全表示所有磁盘块,索引项中的块号最少要占 32/8=4B。而索引表区仅采用直接索引结构,故 512B 的索引表区能容纳512B/4B=128 个索引项。每个索引项对应一个磁盘块,所以该系统可支持的单个文件最大长度是 128×1KB=128KB.
2)这里的考查的分配方式不同于我们所熟悉的三种经典分配方式,但是题目中给出了详细的解释,这个小问采用 混合索引的方式。所求的单个文件最大长度一共包含两部分:预分配的连续空间和直接索引区。连续区块数占 2B,共可以表示 2¹⁶ 个磁盘块,即 2²⁶B。直接索引区共 504B/6B=84 个索引项。所以该系统可支持的单个文件最大长度是 2²⁶B+84KB。为了使单个文件的长度达到最大,应使连续区的块数字段表示的空间大小尽可能接近系统最大容量 4TB。分别设起始块号和块数分别占 4B,这样起始块号可以寻址的范围是 2³² 个磁盘块,共 4TB,即整个系统空间。同样,块数字段可以表示最多 2³² 个磁盘块,共 4TB。