问题 问答题

有一个文件系统如图5.4所示。图中的框表示目录,圈表示普通文件。根目录常驻内存,目录文件组织成链接文件,不设文件控制块,普通文件组织成索引文件。目录表目指示下一级文件名及其磁盘地址(各占2个字节,共4个字节)。若下级文件是目录文件,指示其第一个磁盘块地址。若下级文件是普通文件,指示其文件控制块的磁盘地址。每个目录文件磁盘块后4个字节供拉链使用。下级文件在上级目录文件中的次序在图中为从左至右。每个磁盘块有512字节,与普通文件的一页等长。


普通文件的文件控制块组织结构如图5.5所示,其中每个磁盘地址占2个字节,前10个地址直接指示该文件前10页的地址。第11个地址指示一级索引表地址,一级索引表中每个磁盘地址指示一个文件页地址;第12个地址指示二级索引表地址,二级索引表中每个地址指示一个一级索引表地址;第13个地址指示三级索引表地址,三级索引表中每个地址指示一个二级索引表地址。


问:
(1)一个普通文件最多可有多少个文件页
(2)若要读文件J中的某一页,最多启动磁盘多少次
(3)若要读文件W中的某一页,最少启动磁盘多少次
(4)就(3)而言,为最大限度减少启动磁盘的次数,可采用什么方法此时,磁盘最多启动多少次

答案

参考答案:(1)由题目中所给条件可知,磁盘块大小为512B,每个磁盘地址大小为2B。因此,一个一级索引表可容纳256个磁盘地址。同样的,一个二级索引表可容纳256个一级索引表地址,一个三级索引表可容纳256个二级索引表地址。这样,一个普通文件最多可有文件页数为:10+256+256×256+256×256×256=16843018页。
(2)目录文件A和D中的目录项都只有两个,因此这两个目录文件都只占用一个物理块。要读文件J中的某一项,先从内存的根目录中找到目录文件A的磁盘地址,将其读入内存(已访问磁盘1次)。然后从目录A中找出目录文件D的磁盘地址读入内存(已访问磁盘2次)。再从目录D中找出文件J的文件控制块地址读入内存(已访问磁盘3次)。在最坏情况下,该访问页存放在三级索引下,这时候需要一级一级的读三级索引块才能得到文件J的地址(已访问磁盘6次)。最后读入文件J中的相应页(共访问磁盘7次)。所以,若要读文件J中的某一页,最多启动磁盘7次。
(3)目录文件C和U的目录项较多,可能存放在多个链接在一起的磁盘块中。在最好情况下,所需的目录项都在目录文件的第一个磁盘块中。先从内存的根目录中找到目录文件C的磁盘地址读入内存(已访问磁盘1次)。在C中找出目录文件I的磁盘地址读入内存(已访问磁盘2次)。在I中找出目录文件P的磁盘地址读入内存(已访问磁盘3次)。从P中找到目录文件U的磁盘地址读入内存(已访问磁盘4次)。从U的第一个磁盘块中找出文件W的文件控制块地址读入内存(已访问磁盘5次)。在最好情况下,要访问的页在文件控制块的前10个直接块中,按照直接块指示的地址读文件W的相应页(已访问磁盘6次)。所以,若要读文件W中的某一页,最少启动磁盘6次。
(4)为了减少启动磁盘的次数,可以将需要访问的W文件挂在根目录的最前面的目录项中。此时,只需读内存中的根目录就可以找到W的文件控制块,将文件控制块读入内存(已访问磁盘1次),最差情况下,需要的W文件的那个页挂在文件控制块的三级索引下,那么读3个索引块需要访问3次(已访问磁盘4次)得到该页的物理地址,再去读这个页即可(已访问磁盘5次)。此时,磁盘最多启动5次。

单项选择题
多项选择题