(2012,OS46).某文件系统空间的最大容量为4TB(1TB=240B),以磁盘块为基本分配单位。磁盘块大小为1KB。文件控制块(FCB)包含一个512B的索引表区。请回答下列问题。
1)假设索引表区仅采用直接索引结构,索引表区存放文件占用的磁盘块号,索引表项中块号最少占多少字节?可支持的单个文件最大长度是多少字节?
2)假设索引表区采用如下结构:第0~7字节采用<起始块号,块数>格式表示文件创建时预分配的连续存储空间,其中起始块号占6B,块数占2B:剩余504字节采用直接索引结构,一个索引项占6B,那么可支持的单个文件最大长度是多少字节?为了使单个文件的长度达到最大,请指出起始块号和块数分别所占字节数的合理值并说明理由。
根据题目:
第一题:
- 某文件系统空间的最大容量为
4
T
B
4TB
4TB,磁盘块大小为
1
K
B
1KB
1KB
- 则文件系统空间可以有磁盘块共 4 T B ÷ 1 K B = 2 32 {4TB}\div{1KB} = 2^{32} 4TB÷1KB=232个磁盘块。故最少可以用32bit,即4B来表示磁盘块号。
- 这里为什么是最少呢,我一开始觉得是最多。解释一下原因:因为在磁盘中,任一磁盘块都可能会存储数据,磁盘块号必须覆盖住所有的磁盘号,这样才不会出现有的磁盘块表示不出来的情况。
- 一个文件对应一个
i
n
o
d
e
inode
inode,件控制块
(
F
C
B
)
(FCB)
(FCB)包含一个
512
B
512B
512B的索引表区,在inode的表项里存放的是磁盘块号.
- 由上述知磁盘块号最小为4B,故最多有
512
B
÷
4
B
=
2
7
512B\div{4B} = 2^7
512B÷4B=27个表项,即一个文件最大
2
7
∗
1
K
B
=
128
K
B
2^7*1KB=128KB
27∗1KB=128KB
第二题
- 由上述知磁盘块号最小为4B,故最多有
512
B
÷
4
B
=
2
7
512B\div{4B} = 2^7
512B÷4B=27个表项,即一个文件最大
2
7
∗
1
K
B
=
128
K
B
2^7*1KB=128KB
27∗1KB=128KB
- 这一题所采用的索引结构与我们学的有所不同,由两部分组成:
- 预分配空间+直接索引
- 块数 2 B = 16 b i t 2B = 16bit 2B=16bit 故预分配空间可表示的最大长度为 2 16 ∗ 1 K B 2^{16} *1KB 216∗1KB
- 直接索引的最大长度: 504 B / 6 B ∗ 1 K B {504B}/{6B}*1KB 504B/6B∗1KB
- 则总长度最大为:84KB + 64MB