文件系统之启动磁盘数

【知识回顾】

(1)OS给文件分配存储空间是以 簇/物理块 为单位的。如下题的一个目录即一个文件即分配一个对应磁盘块

(2)文件索引结点也是存放在簇中的,并且一个文件对应一个索引结点;但是一个目录文件的目录项比较多的话,是可以存放在多个链接在一起的磁盘块的。

【题目】

一文件系统如图,方框表示目录,圆圈表示普通文件。根目录常驻内存,目录文件组织成链接文件,不设FCB,普通文件组织成索引文件。目录表指示下一级文件名及其磁盘地址(各占2B,共4B)。下级文件是目录文件时,指示其第一个磁盘块地址,下级文件是普通文件时,指示其FCB的磁盘地址(注意这句话,举例:从U目录文件找出[找出指每个目录文件的磁盘块的最后指针作用]W的FCB地址读入内存)。每个目录的文件磁盘块的最后4B供拉链使用。下级文件在上级目录文件中的次序在图中为从左至右。每个磁盘块有512B,与普通文件的一页等长。

文件系统之启动磁盘数_第1张图片

普通文件的FCB组织如图所示,每个磁盘地址占2B,前10个地址直接指示该文件前10页的地址,第11个地址指示一级索引表地址,一级索引表中的每个磁盘地址指示一个文件页地址;第12个地址指示二级索引表地址,二级索引表中的每个地址指示一个一级索引表地址,第13个地址指示三级索引表地址,三级索引表中的每个地址指示一个二级索引表地址。

(1)一个普通文件最多可有多少个文件页?

【解析】因为磁盘块大小为512B,所以索引块大小也为512B,每个磁盘地址大小为2B,因此一个一级索引表可以容纳256个磁盘地址,所以一个普通文件最多可以有的文件页数为10+256+256×256+256×256×256=16843018。

(2)若要读文件J中的某一页,最多启动磁盘多少次?

【解析】由图可知道,目录文件A和D中的目录项都只有2个,因此这2个目录文件都只占用一个物理块。要读文件J中的某一页,先从内存的根目录中找到目录文件A的磁盘地址,将其读入内存(已访问磁盘1次)。然后从目录A中找出目录文件D的磁盘地址读入内存(已访问磁盘2次)。再从目录D中找出文件J的FCB地址读入内存(已访问磁盘3次)。在最坏情况下,该访问页存放在三级索引下,这时候要一级级地读三级索引块才能得到文件J的地址(已访问磁盘6次)。最后读入文件J的相应页(共访问磁盘7次),所以最多7次。

(3)若要读文件W中的某一页,最少启动磁盘多少次?

【解析】由图可知道,目录文件C和U的目录项比较多,可能存放在多个链接在一起的磁盘块中。在最好情况下,所需的目录项都在目录文件的第一个磁盘块中,先从内存的根目录中找到目录文件C的磁盘地址并读入内存(已访问磁盘1次)。。。从P中找到目录文件U的磁盘地址并读入内存(已访问磁盘4次)。从U的第一个磁盘块中找出文件W的FCB地址并读入内存(已访问磁盘5次)。在最好情况下,要访问的页在FCB的前10个直接块中,按照直接块指示的地址读文件Q的相应页(已访问磁盘6次)。所以要读文件W中的某页,最少启动磁盘6次。

(4)根据(3)为最大限度地减少启动磁盘的次数,可采用什么方法?此时,磁盘最多启动几次?

【解析】为了减少启动磁盘的次数,可以将需要访问的W文件挂在根目录的最前面的目录项中,此时只需要读内存中的根目录就可找到W的FCB,将FCB读入内存(已访问磁盘1次),最差情况下,需要的W文件的那个页挂在FCB的三级索引下。因此读3个索引块需要访问磁盘3次(已访问磁盘4次),得到该页的物理地址,再去读这个 页即可(已访问磁盘5次)。此时磁盘最多启动5次。

【回顾】一般的FCB,但是上题的FCB结构和这个略不同。

文件系统之启动磁盘数_第2张图片

 

你可能感兴趣的:(操作系统)