题目:某文件系统采用索引节点管理,其磁盘索引块和磁盘数据块大小均为1KB字节且每个文件索引节点有8个地址项iaddr[0]~iaddr[7],每个地址项大小为4字节,其中iaddr[0]~iaddr[4]采用直接地址索引I,iadd5]和iaddr[6]采用一级间接地址索引,iaddr[7]采用二级间接地址索引。若用户要访问文件userA中逻辑块号为4和5的信息,则系统应分别采用(1)该文件系统可表示的单个文件最大长度是(2)KB.

一、关键参数提取

  • 块大小:1KB = 1024 字节

  • 地址项大小:4 字节

  • 每个索引块可存放地址数:1024 ÷ 4 = 256 个

  • 索引节点结构

    • iaddr[0~4]:5个直接地址(直接指向数据块)

    • iaddr[5~6]:2个一级间接(指向索引块,该块存256个数据块地址)

    • iaddr[7]:1个二级间接(指向索引块,该块存256个二级索引块地址,每个二级索引块再存256个数据块地址)


二、问题(2):最大文件长度计算

各层级数据块数量

表格

索引类型

地址项数

计算逻辑

指向数据块数

直接索引

5个 (iaddr[0-4])

直接指向

5

一级间接

2个 (iaddr[5-6])

2 × 256

512

二级间接

1个 (iaddr[7])

1 × 256 × 256

65536

总块数计算

总块数=5+512+65536=66053 块

最大文件长度

66053 块×1KB/块=66053 KB

答案选 D (66053)

三、问题(1):访问逻辑块号 4 和 5

逻辑块号从 0 开始计数:

  • 逻辑块号 0~4(共5块)→ 对应 iaddr[0]iaddr[4] 直接地址索引

  • 逻辑块号 5~260(共256块)→ 对应 iaddr[5] 一级间接地址索引iaddr[5] 指向的索引块内的第 0~255 个地址)

  • 逻辑块号 261~516(共256块)→ 对应 iaddr[6] 一级间接地址索引

  • 逻辑块号 517 开始 → 对应 iaddr[7] 二级间接地址索引

因此:

  • 逻辑块号 4直接地址索引iaddr[4]

  • 逻辑块号 5一级间接地址索引(通过 iaddr[5] 找到索引块,再取索引块中第 0 个地址)

问题(1) 答案直接地址索引一级间接地址索引(或表述为"一级索引")


四、记忆口诀

直一一级二二二
直接块数 = 地址项数
一级块数 = 地址项数 × 256
二级块数 = 地址项数 × 256 × 256

易错点提醒

  • 地址项是 4 字节(不是 8 字节),所以每块存 256 个地址(不是 128 个)

  • 逻辑块号从 0 开始,不是从 1 开始!块号 4 是第 5 个块(0,1,2,3,4)

  • 二级间接是 256×256=65536,不是 256+256