在UNIX的文件系统中,一个文件索引节点中磁盘的物理盘块号明细表如下图所示。
如果每个盘块的大小为1KB,每个盘块号占4个字节,请给出:
(1)逻辑文件的字节偏移量转换为文件的物理盘块号的转换方法(步骤)。
(2)将下列文件的字节偏移量转换为物理地址的转换过程。
1)8000;2)14000;3)350000
参考答案:(1)计算文件的逻辑块号和块内偏移量(字节偏移量除以盘块大小所得的商即逻辑块号,余数是块内偏移量);把逻辑块号(LN)转换为物理块号(WN),这有多种情况(假设一个盘块可以放N个块号):
1)若LN<10(直接寻址),该值则为索引节点地址项的下标,从中即可得到WN。
2)若10≤LN<10+N(一次间接寻址),从i.addr[10]中得到一次间接盘块号,查询其中的LN—10号则可得到WN。
3)若10+N≤LN<10+N+N·N(二次间接寻址),从i.addr[11]中得到一次间接盘块号,从中查(LN-10-N)/N号得到二次间接盘块号,查其(LN-10-N) MOD N号可得到WN。
4)若10+N+N·N≤LN<10+N+N·N+N·N·N(三次间接寻址),方法同上,但循环次数增加。
(2)1)逻辑块号为:8000/1024=7。
块内偏移量为:8000-7×1024=832。
该块号小于10,可用直接寻址。由上图可知,其物理盘块号为101,该块中的832字节即为文件的8000字节。
2)逻辑块号为:14000/1024=13。
块内偏移量为:14000-13×1024=688。
由题可知,一个盘块可装256个盘块号。10<13<266,可用一次间接寻址。
由上图可知,一次间接盘块号为428,从该盘块中查13-10=3号得到盘块号952,该盘块中的688字节即为文件的14000字节。
3)逻辑块号为:350000/1024=341
块内偏移量为:350000-341×1024=816
因266<341<65802(10+256+256×256),可用二次间接寻址。由上图可知,一次间接盘块号为9156,从该盘块中查(341-266)/256=0号得到盘块号331,查该二次间接盘块中的(341-266)-0×256=75号得到盘块号333,该盘块中的816字节即为文件的350000字节。