以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 计算机考研交流 』   (http://bbs.xml.org.cn/list.asp?boardid=67)
----  关于操作习题一道课后习题-读盘次数  (http://bbs.xml.org.cn/dispbbs.asp?boardid=67&rootid=&id=56554)


--  作者:okdavinci
--  发布时间:12/9/2007 6:21:00 PM

--  关于操作习题一道课后习题-读盘次数
题目如下
===========================
5、有一个文件系统,根目录常驻内存,如图所示:
目录文件采用链接结构,规定一个目录下最多存放40个下级文件。下级文件可以是目录文件,也可以是普通文件。每个磁盘块可存放10个下级文件的描述信息,若下级文件为目录文件,则上级目录指向该目录文件的第一块,否则指向普通文件的文件控制块。
(1)普通文件采用UNIX的三级索引结构,即文件控制块中给出13个磁盘地址,前10个磁盘地址指出文件前10块的物理地址,第11个磁盘地址指向一级索引表,一级索引表给出256个磁盘地址,即指出该文件第11块至第266块的物理地址;第12个磁盘地址指向二级索引表,二级索引表中指出256个一级索引表的地址;第13个磁盘地址指向三级索引表,三级索引表中指出256个二级索引表的地址。该文件系统中的普通文件最大可有多少块? 假设主索引表放在FCB中,若要读文件\A\D\G\I\K中的某一块,最少要启动磁盘几次? 最多要启动磁盘几次?若要减少启动磁盘的次数,可采用什么方法?
===================
以下是解答过程:
======
(1)一个文件的所有块可以通过下面三种途径找到:直接通过FCB找到前10块,通过一级索引找到256块,通过二级索引找到256*256块,通过三级索引找到256*256*256块,所以一个文件最大可以有10+256+256^2+256^3=16,843,018块
如果要找\A\D\G\I\K中的某一块,首先要找到其FCB,最好的情况是:每次读取目录描述信息的时候都在第一块找到下级目录或文件,所以要找到该文件至少要读取A、D、G、I四个目录项的第一块,读取K的FCB,

总共5次启动硬盘;//对的。

最坏情况是:每次读取目录描述信息的时候都在最后一个块找到下级的目录或文件,所以要找到该文件,所以要找到该文件至少要读取A的第一块,D、G、I三个目录项的所有四个块,在读取K的FCB,

总共要1+4*3+1=14次启动硬盘。
/////*我认为应该是4*4+1=16.
原因是根目录常驻内存,首先不用找根目录,并且根目录中的FCB可以直接获得A目录的磁盘块号。但是由于根目录中每一个子目录或者文件的FCB是大概这样的结构(目录是FCB的有序集合)
磁盘块号(指针)+ 文件名

D目录的FCB最坏情况下的第4个磁盘块上,要找到D,A目录需要四次启动硬盘。同理G,I,K都在第四个磁盘上,
最坏情况下要读A,G,I,K的四个磁盘块
因此要通过4×4才能获得指向K文件的指针,最后读取K的FCB到内存,读盘一次。
****//////


找到FCB后在读取某一块,如果这一块在前10块之列,那么在启动一 次硬盘就可以找到这一块,如果这一块在最后一块,则可能需要通过三级索引找到这一块,这总共需要读取三级索引和最后一块共3+1次读取硬盘。综上,最好情况下只需要启动5+1次硬盘,最坏情况需要启动14+3+1=18次硬盘

=====
问题:如上注释的地方。
目录文件中存储的都是子目录和文件的文件控制块(分解下为 磁盘块号+文件名)

我哪里理解错了?
谢谢帮忙。



--  作者:okdavinci
--  发布时间:12/9/2007 6:24:00 PM

--  
不知道为什么图片传不上
--  作者:蝶影
--  发布时间:12/9/2007 8:51:00 PM

--  
是P329第12吗?那个图,D明显是在A的第一块
--  作者:okdavinci
--  发布时间:12/9/2007 10:44:00 PM

--  
对。是这个图。
你是这样理解的呀。好像你理解的对哈。
那看来我的理解也是没有错的了 。
--  作者:xwxwxw123
--  发布时间:2/11/2009 9:30:00 AM

--  读取inode难道不需要读盘?
我有一个疑问,就是inode不是也在硬盘中嘛?难道读取一个目录的inode不需要启动硬盘?inode难道常驻内存?
--  作者:xwxwxw123
--  发布时间:2/11/2009 9:48:00 AM

--  
读取K的FCB难道不要再读取一下K的文件内容嘛?我觉得这个答案有问题啊

--  作者:xwxwxw123
--  发布时间:2/11/2009 10:01:00 AM

--  
是不是应该是读A的inode(即FCB),A的内容,D的inode,D的内容,G的inode,G的内容,I的inode,I的内容,K的inode,K的内容。。。。
至少是10次吧。我这么想是不是哪里有问题,清高手指教。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
8,625.000ms