自定义文件系统下的磁盘访问次数计算

来源:互联网 发布:c 结构体数组初始化 编辑:程序博客网 时间:2024/05/21 10:06

有一个文件系统如图所示:

文件系统树形图

图中的方框表示目录,圆圈表示普通文件。根目录常驻内存,目录文件组织成链接文件不设FCB,普通文件组织成索引文件。目录表指示下一级文件名及其磁盘地址(各占2B,共4B)。若下级文件是目录文件,指示其第一个磁盘块地址。若下级文件是普通文件,指示其FCB的磁盘块地址。每个目录的文件磁盘块的最后4B供拉链使用。下级目录文件在上级目录文件中的次序在图中是从左往右。每个磁盘块有512B,与普通文件的一页等长
普通文件的FCB组织如表所示。其中,每个磁盘地址占2B,前十个地址直接指示该文件的前10页的地址。第11个地址指示一级索引表地址。一级索引表中每个磁盘地址指示下一个文件页地址;第12个地址指示二级索引表地址,二级索引表中每个地址指示一个一级索引表地址;第13个地址指示三级索引表地址。三级索引表中每个地址指示一个二级索引表地址。

索引块地址结构

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

分析:这是一道非常综合全面的题目,需要彻底把握每一个知识点才能解出来。
首先从题干中抽取主要信息。根目录在内存,这样不用计算找到根目录下面的目录文件名的访问磁盘的次数,但是不可忽视的是根据文件目录项的结构文件名及磁盘地址,因此把目录文件的第一个磁盘块调入内存需要访问磁盘一次。因为目录文件的组织形式是链接,因此,需要考虑如何链接。根据题目可以看出来这是隐式链接,即目录文件占用多个磁盘块时,除了最后一个磁盘块,前面的磁盘块均伸手拉着下一个磁盘块。最多最少的考察,主要来自两个方面:文件的页可以在三级索引,这样即使在文件目录中找到FCB的地址,在内存中查到这个页的磁盘地址是三级索引,还要一级一级往后找到真正的页所在的磁盘地址,再最后访问磁盘读取到这个页所在的磁盘块。
本题中一个文件页大小与磁盘块大小一致,如果不一致的情况下还要注意计算边界。

1)一个普通文件的可以有多少页这种计算是套路题。即:直接地址10个,那么可以用的磁盘个数是10,也即10个文件页。一个一级索引地址,可以导向到一个磁盘块,这个磁盘块上存着512÷2=256直接地址,对应256个磁盘块。二级索引则可以对应256个一级索引地址,乘法规则:2562个磁盘块,三级索引是2563个磁盘块。因此共有:
10+256+2562+2563个磁盘块,也可以说是文件页。
说是套路是因为可以推导一个简洁的公式:
一个磁盘块可以存的地址(直接地址,间接地址一样大小)数是k, 直接地址数是λ0,一级索引地址是λ1,…, i级是λi,
则可以索引的块数是:λ0+λ1k+..+λiki..

2)文件目录A和D的目录项只有两个,因此可以确定只占用一个物理块。读取文件J的某一页,首先任务是找到J所在的FCB。遍历这个过程:从根目录中找到A的磁盘地址,访问磁盘一次把A所在的磁盘块调入内存,找到了D的磁盘地址,访问磁盘第二次把D所在的块调入内存,找到J的FCB地址,把FCB所在的磁盘块调入内存,这是第三次访问磁盘。在内存中计算得到J那一页的磁盘地址,但是这个地址可以是三级索引,地址指向二级索引表。因此,调入二级索引表所在磁盘块,第四次访问磁盘;取出以及索引表的磁盘地址,调入一级索引表所在的磁盘,第五次访问磁盘;在一级索引表中找到直接索引磁盘块的地址,调入内存,这是第六次访问磁盘;从中取出这一页的磁盘地址,调入该页所在的磁盘块,这是第七次访问磁盘,可以在内存中完成页的读取了。

可以看出找到三级索引表项,还需要4次访问磁盘。只需要说一级级访问直接给出4即可,不必细致到每一步。

3)目录C和U在图上反映的是目录项很多,因此可能存在多个磁盘块上,因此题目问的是最少。假设文件在第一个磁盘块上就是最少次数的场景。即:所有目录文件都在第一个磁盘块上。从根目录读到C的磁盘地址,调入C在的磁盘块,访问磁盘一次;查出I的磁盘号,调入I到内存,第2次访问磁盘;查出P的磁盘块号,调入该磁盘块到内存,第3次访问磁盘;再查出U并调入第4次访问磁盘;查出W的FCB,并把该FCB所在磁盘块调入内存,第5次访问。从FCB中读出文件页的地址,假设是直接地址,取出该磁盘块到内存,第6次访问磁盘。共6次。可以看出是从根到W的边数+1。作为验证。

4)策略是:将需要访问的W文件目录项挂在根目录中,这样可以直接找到W的FCB,调入FCB所在的磁盘块,访问磁盘一次。最多的情况仍然是当三级索引时,三级索引表项到直接磁盘块还需要4次访问磁盘,因此共需要访问磁盘5次。这是最差的情况。

0 0
原创粉丝点击