问答题 在UNIX操作系统中,给文件分配外存空间采用的是混合索引分配方式,如图所示,UNIX系统中的某个文件的索引节点指出了为该文件分配的外存的物理块的寻找方法。在该索引节点中,有10个直接块(每个直接块都直接指向一个数据块),有一个一级间接块,一个二级间接块以及一个三级间接块,间接块指向的是一个索引块,每个索引块和数据块的大小均为4KB,而UNIX系统中地址所占空间为4B(指针大小为4B)。假设以下问题都建立在该索引节点已经在内存中的前提下。
【正确答案】本题考查的是对索引分配方式的理解,只需明白索引分配方式组织外存分配的原理即可。计算其实并不难,其中要牢牢抓住的一点是:索引块其实也是物理块,也需要存储在外存上。
(1)对于只用到索引节点的直接块,这个文件应该能全部在10个直接块指向的数据块中放下,而数据块的大小为4KB,所以该文件大小应该≤4KB×10=40KB。即文件的大小小于或等于40KB时,可以只用到索引节点的直接块。
(2)只需要算出索引节点指向的所有数据块的块数,再乘以数据块的大小即可。直接块指向的数据块数=10块。一级间接块指向的索引块里的指针数=4KB/4B=1024个,所以一级间接块指向的数据块数为1024块。二级间接块指向的索引块里的指针数=4KB/4B=1024个,指向的索引块里再拥有4KB/4B=1024个指针数。所以二级间接块指向的数据块数=(4KB/4B)2=10242块。三级间接块指向的数据块数=(4KB/4B)3=10243块。所以,该索引节点能访问到的地址空间大小为
[*]

(3)因为10000B/4KB=2.44,所以第10000B的内容存放在第3个直接块中,所以若要读取一个文件的第10000B的内容,需要访问磁盘1次。
(4)因为10MB的内容需要数据块数=10MB/4KB=2.5K块。直接块和一级间接块指向的数据块数=10+(4KB/4B)=1034块<2.5K块。直接块和一级间接块以及二级间接块的数据块数=10+(4KB/4B)+(4KB、4B)2>1M块>2.5K块。所以第10MB的数据应该在二级间接块下属的某个数据块中,所以若要读取一个文件的第10MB的内容,需要访问磁盘3次。
【答案解析】