例题 1
(1) 题目
某文件系统采用索引节点管理,其磁盘索引块和磁盘数据块大小均为4KB字节,且每个文件索引节点有8个地址项iaddr[0] ~ iaddr[7],每个地址项大小为 4 字节,其中 iaddr[0] ~ iaddr[4]采用直接地址索引,iaddr[5]和iaddr[6]采用一级间接地址索引,iaddr[7]采用二级间接地址索引。若用户要访问文件fileX中逻辑块号为5和2056的信息,则系统应分别采用( )物理块。
A. 直接地址访问和直接地址访问 B. 直接地址访问和一级间接地址访问 C. 一级间接地址访问和一级间接地址访问 D. 一级间接地址访问和二级间接地址访问
试题信息:通过率:64% 所属知识点:操作系统>索引文件;
(2)解答
为了解答这个问题,我们需要首先了解每个索引节点的各个地址项如何被使用来访问文件数据块。
直接地址索引(iaddr[0]~iaddr[4]):这些地址项直接指向文件的数据块,因此前5个数据块(逻辑块号0-4)可以通过这5个直接地址访问。
一级间接地址索引(iaddr[5] 和 iaddr[6]):每个一级间接地址项指向一个包含1024个数据块地址的块(因为每个地址项是4字节,所以一个4KB的块可以存放 ( frac{4096}{4} = 1024 ) 个地址)。因此,iaddr[5] 可以访问从逻辑块号5开始的接下来1024个块(逻辑块号5-1028),而iaddr[6] 可以访问逻辑块号1029-2052的块。
二级间接地址索引(iaddr[7]):iaddr[7] 指向一个块,该块包含1024个一级地址块的地址,每个一级地址块又包含1024个数据块的地址。因此,iaddr[7] 可以访问 ( 1024 times 1024 = 1048576 ) 个数据块,从逻辑块号2053开始。
因此,访问文件fileX中的逻辑块号:
- 逻辑块号5:由于它在逻辑块号5-1028范围内,将通过一级间接地址iaddr[5]访问。
- 逻辑块号2056:由于它在逻辑块号2053之后,将通过二级间接地址iaddr[7]访问。
所以,对于这道题目的正确答案是 D. 一级间接地址访问和二级间接地址访问。
举一反三
某文件系统采用索引节点管理,磁盘索引块和磁盘数据块大小均为8KB,每个文件索引节点有6个地址项iaddr[0]~ iaddr[5],每个地址项大小为 8 字节。其中 iaddr[0] ~ iaddr[2] 采用直接地址索引,iaddr[3] 和iaddr[4] 采用一级间接地址索引,iaddr[5] 采用二级间接地址索引。若用户要访问文件 fileY中逻辑块号为 3 和4097 的信息,则系统应分别采用( )物理块。
答案选项: A. 直接地址访问和直接地址访问 B. 直接地址访问和一级间接地址访问 C. 一级间接地址访问和一级间接地址访问 D. 直接地址访问和二级间接地址访问
解析:
- 直接地址索引(iaddr[0]~iaddr[2]):直接访问前三个数据块(逻辑块号0-2)。
- 一级间接地址索引(iaddr[3] 和 iaddr[4]):每个一级间接地址项指向一个包含1024个数据块地址的块,iaddr[3] 可以访问逻辑块号3-1026,iaddr[4] 可以访问逻辑块号1027-2050。
- 二级间接地址索引(iaddr[5]):iaddr[5] 通过二级间接方式可以访问 ( 1024 times 1024 = 1048576 ) 个数据块,从逻辑块号2051开始。
正确答案:D. 直接地址访问和二级间接地址访问(逻辑块号3通过iaddr[3]访问,逻辑块号4097通过iaddr[5]访问)。