操作系统的文件系统习题,理解不上去了

某文件系统使用多级目录结构,目录文件采用串联文件形式存放,普通文件采用二级索引结构。假设磁盘块大小为1KB,磁盘块号需要4个字节,每个目录文件最多占用4个磁盘块,每个文目录项占102 个字节。对于目录文件,上级目录存放目录文件的第1个磁盘块号,普通文件则存放索引表信息,索引表长度是10项,第0~6项为直接索引.第7~8项为一级间接索引,第9项为二级间接索引,文件读写以磁盘块为单位。回答以下问题并简要给出计算过程。

(1)一个目录下最多有多少个文件? 一个普通文件到多少K大小时,系统需要为其建立二级系引表?

(2)打开文件/home/user/os/os1/os1.c 最少需要读多少个磁盘块?最多需要读多少个磁盘块?

(3)普通文件最大可达多少K字节?达到最大时,如果文件目录已打开,读取文件的某个字节最多需要读多少个磁盘块?

 

(1) 一个目录下最多有多少个文件?

根据题目中的信息,一个目录文件最多占用4个磁盘块,每个磁盘块的大小为1KB,而每个目录项占102字节。因此,一个目录文件最多可以容纳的目录项数量为:

每个磁盘块的目录项数量 = 磁盘块大小 / 目录项大小 = 1KB / 102B = 10
一个目录文件最多占用4个磁盘块,所以每个目录文件最多可以容纳的目录项数量为:4磁盘块 * 10目录项/磁盘块 = 40个目录项。

因此,一个目录下最多有40个文件。

一个普通文件到多少K大小时,系统需要为其建立二级索引表?

每个普通文件最多可以占用4个磁盘块,每个磁盘块的大小为1KB,而索引表的长度为10项。直接索引表可用于直接访问前7个磁盘块,一级索引表可用于访问下一个8个磁盘块,二级索引表可用于访问下一个64个磁盘块。

所以最多可以访问的磁盘块数量为:
直接索引块数量:7个
一级索引块数量:8个 * (1KB / 4B) = 8 * 256 = 2048个
二级索引块数量:64个 * (1KB / 4B) * (1KB / 4B) = 64 * 256 = 16384个

因此,系统需要为一个普通文件建立二级索引表的情况是:
直接索引块 + 一级索引块 + 二级索引块数量 <= 文件磁盘块数量
7 + 2048 + 16384 <= 4
这是不满足的条件,所以不需要为其建立二级索引表。

(2) 打开文件/home/user/os/os1/os1.c 最少需要读多少个磁盘块?最多需要读多少个磁盘块?

假设根目录位于磁盘块号0,目录文件存储为串联文件。那么打开文件/home/user/os/os1/os1.c 需要经历以下步骤:

读取根目录的磁盘块0,获取到目录文件/home的磁盘块号。
读取目录文件/home的磁盘块,获取到目录文件/home/user的磁盘块号。
读取目录文件/home/user的磁盘块,获取到目录文件/home/user/os的磁盘块号。
读取目录文件/home/user/os的磁盘块,获取到目录文件/home/user/os/os1的磁盘块号。
读取目录文件/home/user/os/os1的磁盘块,获取到文件os1.c的磁盘块号。
以上是最少需要读取的磁盘块数量,即5个磁盘块。

最多需要读取的磁盘块数量取决于文件os1.c的大小和磁盘块的大小。假设文件os1.c占用x个磁盘块,则最多需要读取的磁盘块数量为x+1个磁盘块(包括文件os1.c所在的磁盘块和文件内容所在的磁盘块)。

(3) 普通文件最大可达多少K字节?达到最大时,如果文件目录已打开,读取文件的某个字节最多需要读多少个