前言
具体的多级索引的知识可看另外一篇文章:【系统架构设计师】操作系统 - 文件管理 ① ( 索引文件结构 | 直接索引方式 | 间接索引方式 | 一级间接索引方式 | 二级间接索引方式 | 三级间接索引方式 )-CSDN博客
2020年下半年
答案:25题答案选B;26题答案选D(直接选最大的)
分析题目信息:
- i_addr[0]~i_addr[4] 采用直接地址索引(对应逻辑块号0~4)。
- i_addr[5]和i_addr[6] 采用一级间接地址索引。
- i_addr[7] 采用二级间接地址索引。
第25问中,问的是逻辑块号为4和5的信息,逻辑块号是从0开始的,所以逻辑块号4是采用直接地址索引,逻辑块号5采用一级间接地址索引。
第26问中,
步骤1:计算直接地址索引贡献的数据块数
i_addr[0]~i_addr[4] 共5个直接地址索引,每个直接指向一个数据块
步骤2:计算一级间接地址索引贡献的数据块数
i_addr[5]和i_addr[6] 共2个一级间接地址索引,每个指向一个一级索引块,且每个索引块大小为1KB(1024字节),每个地址项大小为4字节,因此每个索引块可包含的地址项数量为:
因此,2个一级间接地址索引贡献的数据块数为:2 × 256个地址项 = 512个数据块
步骤3:计算二级间接地址索引贡献的数据块数
i_addr[7] 是一个二级间接地址索引,它指向一个一级索引块(第一层)。二级间接地址索引能寻址的数据块数量为:
256个 × 256个 = 65536个数据块
步骤4:计算总数据块数
直接、一级间接和二级间接贡献的数据块数相加:
5(直接)+ 512(一级间接)+ 65536(二级间接)= 66053个数据块
步骤5:计算文件最大长度
66053个数据块 × 1KB = 66053KB
2017年下半年
答案:选择C选项
分析:
求物理块数量 = 1KB / 3B = 1024B / 3B = 341个,余数为1个
一级索引的文件最大长度为:341个 × 1 KB = 341 KB
一级索引的文件最大长度为:341个 × 341个 × 1 KB = 116281 KB
2012年下半年
答案:27题选择C;28题选择D(直接选最大的)
分析:
- i_addr[0]~i_addr[4] 采用直接地址索引(对应逻辑块号0~4)。
- i_addr[5]和i_addr[6] 采用一级间接地址索引。
- i_addr[7] 采用二级间接地址索引。
第27问中,问的是逻辑块号为5和518的信息,逻辑块号是从0开始的,所以逻辑块号5是采用一级地址索引,逻辑块号518的计算方法如下:
直接地址索引的覆盖范围:0 ~ 4块
一级间接地址索引的覆盖范围:
∵ 每个索引块可包含的地址项数量 = 索引块大小 / 地址项大小 = 1024字节 / 4字节 = 256个地址项
第1个一级间接地址索引覆盖块号:5 ~ 260(5 + 256 - 1 = 260)
第2个一级间接地址索引覆盖块号:261 ~ 516(261 + 256 - 1 = 516)
即 5号 ~ 516号 为一级间接索引块号范围
二级间接地址索引的覆盖范围:
二级间接地址索引能覆盖的数据块数量为:256 × 256= 65536个数据块
即 517 ~ 66052(517 + 65536 - 1)
所以518号物理块是二级间接索引。
第28问中,
步骤1:计算直接地址索引贡献的数据块数
i_addr[0]~i_addr[4] 共5个直接地址索引,每个直接指向一个数据块
步骤2:计算一级间接地址索引贡献的数据块数
i_addr[5]和i_addr[6] 共2个一级间接地址索引,每个指向一个一级索引块,且每个索引块大小为1KB(1024字节),每个地址项大小为4字节,因此每个索引块可包含的地址项数量为:
因此,2个一级间接地址索引贡献的数据块数为:2 × 256个地址项 = 512个数据块
步骤3:计算二级间接地址索引贡献的数据块数
i_addr[7] 是一个二级间接地址索引,它指向一个一级索引块(第一层)。二级间接地址索引能寻址的数据块数量为:
256个 × 256个 = 65536个数据块
步骤4:计算总数据块数
直接、一级间接和二级间接贡献的数据块数相加:
5(直接)+ 512(一级间接)+ 65536(二级间接)= 66053个数据块
步骤5:计算文件最大长度
66053个数据块 × 1KB = 66053KB
题目3
某文件系统文件存储采用文件索引节点法。假设文件索引节点中有8个地址项iaddr[0]~iaddr[7],每个地址项大小为4字节,其中地址项iaddr[0]~iaddr[5]为直接地址索引,iaddr[6]是一级间接地址索引,iaddr[7]是二级间接地址索引,磁盘索引块和磁盘数据块大小均为4KB。该文件系统可表示的单个文件最大长度是( )KB。若要访问iclsClient.dll文件的逻辑块号分别为6、520和1030,则系统应分别采用()。
第一问:
A.1030
B.65796
C.1049606
D.4198424
第二问:
A.直接地址索引、一级间接地址索引和二级间接地址索引
B.直接地址索引、二级间接地址索引和二级间接地址索引
C.一级间接地址索引、一级间接地址索引和二级间接地址索引
D.一级间接地址索引、二级间接地址索引和二级间接地址索引
答案:第一问选D选项(选最大值就行),二问选C选项
解析:
- i_addr[0]~i_addr[5] 采用直接地址索引(对应逻辑块号0~5)。
- i_addr[6]采用一级间接地址索引(对应逻辑块号6)。
- i_addr[7] 采用二级间接地址索引(对应逻辑块号7)。
第一问:
步骤1:计算直接地址索引贡献的数据块数
i_addr[0]~i_addr[5] 共6个直接地址索引,每个直接指向一个数据块
步骤2:计算一级间接地址索引贡献的数据块数
i_addr[6]为一级间接地址索引,每个指向一个一级索引块,且每个索引块大小为4KB(4096字节),每个地址项大小为4字节,因此每个索引块可包含的地址项数量为:
4096字节 / 4字节 = 1024个地址项
步骤3:计算二级间接地址索引贡献的数据块数
i_addr[7] 是一个二级间接地址索引,它指向一个一级索引块(第一层)。二级间接地址索引能寻址的数据块数量为:
1024个 × 1024个 = 1048576个
步骤4:计算总数据块数
直接、一级间接和二级间接的数据块数相加:
6(直接) + 1024(一级间接)+ 1048576(二级间接)= 1049606(个)
步骤5:计算文件最大长度
1049606 × 4KB = 4198424KB
第二问:
第【0 ~ 5】号为直接索引。
第【6 ~ 1029】号为一级间接索引(1024 + 6 - 1)
第【1030 ~ 1049605】号为二级间接索引(1024 * 1024 +1030 - 1)
逻辑块号6是一级间接索引,可直接排除A选项和B选项;逻辑块号520为一级间接索引,逻辑块号1030为二级间接索引,所以选择C选项。