第九章 习题及解答
9-5 设文件A按连续文件构造,并由四个逻辑记录组成 (每个逻辑记录的大小与磁盘块大小相等,均为512B) 。若第一个逻辑记录存放在第100号磁盘块上,试画出此连续文件的结构。 答:连续文件的结构如下图:
磁盘块号 100 101 102 103 文件A 4 100 r0 r1 r2 r3
文件目录
9-6 设文件B按串联文件构造,并由四个逻辑记录组成 (其大小与磁盘块大小相等,均为512B)。这四个逻辑记录分别存放在第100、157、66、67号磁盘块上,回答如下问题。
(1) 画出此串联文件文件的结构,
(2) 若要读文件B第1560字节处的信息,问要访问哪一个磁盘块? 为什么? (3) 读文件B第1560字节处的信息需要进行多少次I/O操作? 为什么? (1) 答:此串联文件结构如下图所示。
文件目录 文件A 100 磁盘块号
100 r 0 157 157 r 1 66 r1
66 67 r 3 r2 67
(2) 答:1560/512=3余24,因此文件第1560逻辑字节在r3逻辑块上,该逻辑块被分配在67号磁盘块上。
(3) 答:要访问67号磁盘块,需要先找到文件目录,然后依次访问100、157和66号磁盘块,最后读取67号磁盘块。因此若文件已打开 (文件目录信息已在内存中) 需要4次I/O操作,文件未打开需要5次I/O操作。
1
9-16什么是“重名”问题 ? 二级文件目录结构如何解决这一问题?
答:重名是指不同用户对不同文件起了相同的名字。在二级文件目录结构中,每个用户建立用户文件目录,系统建立主目录,登记所有用户目录的信息,用目录名加文件名唯一标识每个文件解决重名问题。
9-18 假设两个用户共享一个文件系统,用户甲要用到文件a、b、c、e,用户乙要用到文件a、d、e、f。已知:用户甲的文件a与用户乙的文件a实际上不是同一文件;用户甲的文件c与用户乙的文件f实际上是同一文件;甲、乙两用户的文件e是同一文件。试拟定一个文件组织方案,使得甲、乙两用户能共享该文件系统而不致造成混乱。
答:如下图所示。用户甲的主目录名为jia,有四个文件,文件名为a、b、c、e。 用户乙的主目录名为yi,有四个文件,文件名为a、d、e、f。
9-27设某文件A有10个逻辑块,另一文件B有500个逻辑块,试分别用UNIX 7版本的索引结构画出这两个文件的索引结构图。
答:文件A有10个逻辑块:按UNIX 7版本的索引结构则要构造大型文件结构。这时数组i_addr[ ]用作一级间接索。
文件A的文件索引结构如下图所示 ( 磁盘块号随意设置 ) 。
2
文件索引节点
i_addr[0] 180 i_addr[1] i_addr[2] i_addr[3] i_addr[4] i_addr[5] i_addr[6] i_addr[7] 文件A 的大型文件结构
一级间接索引表 磁盘块号180 98 60 r0 r9 磁盘块号 98 60
文件B有500个逻辑块:按UNIX 7版本的索引结构则要构造大型文件结构。这时数组i_addr[ ]用作一级间接索。
500256 = 1,余244 文件B的文件索引结构如下图所示 ( 磁盘块号随意设置 ) 。
文件索引节点
i_addr[0] 180 i_addr[1] 398 i_addr[2] i_addr[3] i_addr[4] i_addr[5] i_addr[6] i_addr[7] 文件B 的大型文件结构
一级间接索引表 磁盘块号180 98 60 一级间接索引表 磁盘块号398 560 70 r0 磁盘块号 98
r255 60
磁盘块号 r256 560
r243 70
9.38某文件系统中,辅存为硬盘,物理块大小为512B。有文件A,包含590个逻辑记录,每个记录占255B,每个物理块存放2个逻辑记录。文件A所在的目录如图9.32所示,此树型目录结构由根目录节点、作为目录文件的中间节点和作为信息文件的叶节点组成。每个目录项占127B,每个物理块放4个目录项,根目录的第一块常驻主存。回答如下问题:
3
(1)若文件采用串连结构,链接字占2B,那么,要将A读入主存,至少要存取几次硬盘?为什么?
(2) 若文件采用连续结构,那么,要将A的第480号记录读入主存,至少要存取几次硬盘?为什么?
答:(1)第一次读根目录的第二块, 获得usr的地址;
第二次读usr目录的第一块,获得you的地址; 第三次读you目录的第一块,获得dir1的地址; 第四次读dir1目录的第一块,获得A的地址;
第五次开始遍历串联的A的逻辑记录,590个逻辑记录占用295个磁盘
块,需要存取295次。
(2)连续结构可随机访问,第四次获得A的地址后就可计算得到A的第480
号记录的地址,然后直接第五次访问该记录。
9-39某系统采用成组链接法来管理系统盘的空闲存储空间, 目前,磁盘的状态如图9.33所示。回答如下问题:
4
(1)该磁盘中目前还有多少个空闲盘块?
(2)系统需要给文件F分配3个磁盘块,试给出将被分配出去的磁盘块号。 (3)接着(在创建文件F之后),系统要删除另一个文件,并回收它所占的5个盘块,它们的盘块号依次为700、711、703、788、701, 试给出回收后的盘块链接情况。 答:
(1)301个空闲盘块。 (2)100,200,299。
(3)s_free=4, s_free[0]=711, s_free[1]=703 s_free[2]=788 s_free[3]=701, 原299所在位置存放盘块号700。
5