OS复习——文件系统习题

OS复习——文件系统习题

1. 在文件系统中,访问一个文件 f 时首先需要从目录中找到与 f 对应的目录项。已知文件系统数据块大小为 1KB,一个目录项的大小为 128 字节,文件平均大小为 100KB。该文件系统的目录结构如图所示。不考虑磁盘块的提前读和缓存等加速文件读写的技术, 请回答以下问题:

在这里插入图片描述

(1)如果采用串联文件实现,同时文件属性直接存储在目录项中,并且根目录的目录项已读入内存中。访问第三级目录下的一个文件中的一个块平均需要访问几次磁盘?

(2)如果采用索引文件实现,目录项中仅存储文件名和 i 节点指针,其中文件名占 14 个字节,i 节点指针占 2 个字节。如果仅采用直接索引,每个第三级目录下的文件数不超过 50 个,且根目录的 i 节点已读入内存,访问第三级目录下的一个文件的一个块平均需要访问几次磁盘?

(3)假设该文件系统所管理的磁盘空间为16ZB(1ZB=2^70B)。如果inode中包括512字节的索引区,且允许采用一级间接索引进行组织,那么该文件系统支持的最大文件是多少字节?

(1)由图中可知,第三级目录位于/usr2下面。

  1. 根目录的目录已在内存,因此可以直接读取到对应usr2的目录项,进而需要访问磁盘读取usr2目录的内容(即对应d0-d127的目录项)。一个磁盘块可以放2 ^ 10/(2^7)=8个目录项,所以读取全部d0-d127的目录项需要访问128/8=16次磁盘,平均需要访问(1+16)/2=8.5次磁盘。

  2. 进一步,需要读取第三级目录的内容(即对应目标文件f的目录项),因为题目未给出第三级目录下有多少文件,因此可按1次从磁盘中读出对应f的目录项来计算。

  3. 文件占用的磁盘块数为:100/1=100块,按照串联方式进行组织,访问一个块平均需要访问磁盘(1+100)/2=50.5次。

    ​ 因此,访问第三级目录下的一个文件的一个块平均需要访问磁盘 8.5+1+50.5=60 次。

(2)由图中可知,第三级目录位于usr2下面。一个目录项占16个字节,因此一个磁盘块可以放2 ^ 10/2 ^ 4=2^6=64 个目录项。

  1. 读取根目录的内容需读取1次磁盘:根目录inode已在内存中,根目录下只有3个目录项,可以1次读取。

  2. 读取usr2的inode需读取1次磁盘:从对应usr2的目录项中可获得usr2的inode号,进而通过读取磁盘可获得usr2的inode。

  3. 读取usr2目录的内容(即对应d0-d127的目录项)需读取1.5次磁盘:读取整个第三级目录所对应的目录项需要访问磁盘128/64=2次,因此平均需要读取(1+2)/2=1.5次。

  4. 读取第三级目录的inode需读取1次磁盘。

  5. 读取第三级目录的内容需读取1次磁盘:由于第三级目录下的文件不超过50个,因此读取1次磁盘即可将对应全部文件的目录项读出。

  6. 读取文件的inode需要读取1次磁盘。

  7. 读取文件的1个块需要读取1次磁盘:由于采用直接索引,故根据inode可直接读取磁盘上文件的一个块。

    ​ 综上,访问第三级目录下一个文件的一个块平均需要 1+1+1.5+1+1+1+1=7.5 次磁盘。

(3)文件系统管理的数据块数为16*2 ^ 70/2 ^ 10=2^64。为表示这些磁盘块,需要64/8=8个字节。因此索引区可存放512/8=64个磁盘块号。

​ 因此,在采用一级索引的情况下,支持的最大文件为64 * 1K/8 * 1KB=64 * 128 * 1KB= 8MB。

2. 某文件系统以硬盘作为文件存储器,物理块大小为512B。有文件A包括590个逻辑记录,每个记录占255B,每个物理块存2个记录。文件A在该文件目录中的位置如图所示。每个目录项占127B,每个物理块存放4个目录项。根目录内容常驻内存,其他目录不在内存中。

在这里插入图片描述

(1)若文件系统采用链接分配方式(即串联文件),如果要将文件A读入内存,至少要存取几次硬盘?

(2)若文件系统采用连续分配方式,如果要读取逻辑记录号为480的记录,至少要存取几次硬盘?

(1)采用链接分配:由于根目录内容已在内存中,所以可以根据第二级目录名找到存取第二级目录内容的数据块,因为第二级目录有5个目录项,所以读取第二级目录内容需要存取1次或2次硬盘;读取了第二级目录内容后,获得了第三级目录内容所在的物理块号,因为第三级目录只有1个目录项,所以读取第三级目录内容只需要存取1次硬盘;读取了第三级目录后,获得了文件A所在的物理块号,因为A有590条记录,所以要将文件A读入内存,还需要存取295次硬盘。所以至少存取297次硬盘,至多存取298次硬盘。

(2)采用连续分配方式:知道第一块的物理块号就可直接计算出480记录所在的块。一个块可放两个记录,因此480记录放在第240磁盘块。最少需要1+1+1=3次;最多需要1+2+1=4次。

3. 在采用索引的文件系统中,已知索引节点中可设置10个直接索引,1个一次间接索引,1个二次间接索引。文件块大小为s字节,文件块号为t字节。这个文件系统支持的最大文件是多大?

​ 10个直接索引能够索引10块数据;1个一次间接索引能够索引的数据块的数量为s/t;一个二次间接索引能够索引的数据块的数量为(s/t) * (s/t)。因此文件最大为(10+s/t+s ^ 2/t^2) * s。

接索引能够索引的数据块的数量为(s/t) * (s/t)。因此文件最大为(10+s/t+s ^ 2/t^2) * s。

以上部分内容引自课件,如有侵权,请及时联系我删除!

猜你喜欢

转载自blog.csdn.net/NickHan_cs/article/details/106556486