【软考备考】文件管理详解:i-node 混合索引与位示图,操作系统收官篇(附 10 道练习)

操作系统最后一篇,讲文件管理。这块上午题的计算点就两个,但都是"会者一分钟、不会者瞪半天"的典型:

  • 索引节点(i-node):直接索引、一级间接、二级间接,算单个文件最大长度,或反推"第 N 个字节走哪级索引";

  • 位示图:一个比特管一个磁盘块,算块号对应的"第几字第几位"。

一、文件怎么存?从"数组"到"目录页"

文件存在磁盘上,最简单的办法是连续分配:一个文件占一串连续的块。像数组——访问快,但用久了磁盘全是碎片,文件想变大还得看后面有没有地方。

更好的办法是索引分配:文件的数据块随便放,另建一张"块号清单"记录它们的位置。这就像书的目录页——正文(数据块)顺序无所谓,目录(索引)告诉你要的内容在第几页。想看文件第 100 块,查清单第 100 项,直接定位,随机访问飞快。

这张清单连同文件的属性(大小、权限、时间……)合在一起,就是索引节点 i-node:每个文件一个 i-node,相当于文件的"身份证 + 藏宝图"。

二、混合索引结构:小文件走近路,大文件走远路

问题来了:清单(地址项)放在 i-node 里,i-node 大小有限,地址项也就那么几个。文件小还好,文件要是几十万块,几个地址项哪够?

解决方案是混合索引——i-node 里的地址项分三种角色:

i-node:
┌────────────┐
│  文件属性   │
├────────────┤
│ 直接[0]  ───┼──→ 数据块                     (指哪是哪)
│ 直接[1]  ───┼──→ 数据块
│    ……      │
│ 一级间接 ───┼──→ 索引块 ──→ 一批数据块       (拐一道弯)
│ 二级间接 ───┼──→ 索引块 ──→ 一批索引块 ──→ 一大批数据块(拐两道弯)
└────────────┘
  • 直接索引:地址项直接指向数据块,指哪是哪;

  • 一级间接:地址项指向一个索引块,索引块里装满数据块地址——一个地址项撬动几百个块;

  • 二级间接:再拐一道弯,索引块指向一批索引块——撬动平方级数量。

计算的命门只有一个数字:一个索引块能装多少个地址?

每块地址数 = 块大小 ÷ 地址长度

例:块 1KB(1024B)、地址占 4B → 1024 ÷ 4 = 256 个地址/块

例题(真题风格):i-node 有 5 个直接地址项、1 个一级间接项、1 个二级间接项,块 1KB、地址 4B,求单个文件最大长度。

直接索引:5 块                        → 5 KB
一级间接:256 块                      → 256 KB
二级间接:256 × 256 = 65536 块        → 65536 KB = 64 MB
─────────────────────────────────
合计:5 + 256 + 65536 = 65797 块 = 65797 KB ≈ 64.26 MB

看出来了吗?二级间接是绝对主力,直接索引那 5 块只是零头——但考试最爱在零头上挖坑(见练习题第 8 题)。

三、反向题:第 N 个字节,走哪级索引?

正着会算,反着也要会查。套路三步:

  1. 逻辑块号 = 文件偏移 ÷ 块大小(整除);

  2. 算出各级索引的覆盖范围

  3. 对号入座。

沿用上例(5 直接 + 1 一级 + 1 二级,块 1KB):

直接索引覆盖:块 0 ~ 4           (5 块)
一级间接覆盖:块 5 ~ 260         (256 块)
二级间接覆盖:块 261 ~ 65796     (65536 块)

例:访问文件偏移 300KB 处的内容。逻辑块号 = 300KB ÷ 1KB = 300。300 超出了一级间接的 260 上限 → 走二级间接

四、位示图:一个比特管一块

管理磁盘空闲块的极简方案:拿一串二进制位,每位对应一个磁盘块,比如 0 表示空闲、1 表示占用(具体约定看题目)。这串位就是位示图,存放在若干个"字"里。

两个方向的换算(设字长 w,字号、位号、块号均从 0 开始):

块号 → 位置:字号 = 块号 ÷ w(整除),位号 = 块号 mod w
位置 → 块号:块号 = 字号 × w + 位号
位示图大小 = 总块数 ÷ w(向上取整)字

例:字长 16 位,块号 53 → 53 ÷ 16 = 3 余 5 → 第 3 字第 5 位

唯一的坑:编号从 0 还是从 1 开始,直接决定答案。软考真题多为从 0 开始,但题目怎么约定就怎么算,审题时先把这三个编号的起点圈出来


五、10 道练习题

基础题(1~5)

1. 索引节点(i-node)中存放的是( )。

A. 文件内容本身 B. 用户的登录口令 C. 进程的运行信息 D. 文件的属性及数据块地址等元数据

2. 某文件系统的 i-node 中有 8 个直接地址项,磁盘块大小为 1KB,仅通过直接索引可表示的文件最大长度为( )。

A. 8KB  B. 1KB  C. 64KB  D. 8MB

3. 磁盘块大小为 1KB,每个块地址占 4B,则一个索引块可存放的块地址数量为( )。

A. 512  B. 1024  C. 256  D. 4

4. 位示图在文件系统中的作用是( )。

A. 记录文件内容 B. 管理磁盘空闲块,每一位对应一个磁盘块 C. 保存文件属性 D. 加快目录检索

5. 某磁盘共有 8192 个盘块,采用位示图管理,字长 32 位,则位示图需要占用( )个字。

A. 256  B. 8192  C. 32  D. 512

进阶题(6~10,带坑)

6. 块大小 1KB、块地址占 4B,i-node 中有 1 个一级间接地址项,通过它可索引的文件长度为( )。

A. 1KB  B. 256KB  C. 64MB  D. 4KB

7. 同上题条件,i-node 中有 1 个二级间接地址项,通过它可索引的文件长度为( )。

A. 256KB  B. 512KB  C. 16MB  D. 64MB

8. 某 i-node 有 5 个直接地址项、1 个一级间接项、1 个二级间接项,块大小 1KB、地址占 4B,则单个文件的最大长度为( )。

A. 65797KB  B. 64MB  C. 65792KB  D. 256KB

9. 同上题的 i-node 结构,要访问文件偏移 300KB 处的内容,应通过( )。

A. 直接索引  B. 一级间接索引  C. 二级间接索引  D. 无法访问

10. 某系统用位示图管理磁盘块,字长 16 位,字号、位号、块号均从 0 开始编号,则块号 53 对应位示图的( )。

A. 第 5 字第 3 位  B. 第 4 字第 6 位  C. 第 3 字第 5 位  D. 第 3 字第 4 位


六、答案与详解

1. D i-node = 文件的"身份证 + 藏宝图":属性 + 数据块地址(元数据)。文件内容在数据块里,不在 i-node 里——选 A 的是把"图"和"宝"搞混了。

2. A 直接索引一项一块:8 × 1KB = 8KB

3. C 命门公式:1024 ÷ 4 = 256 个地址/块。这个数字是后三题的全部基础。

4. B 位示图管的是磁盘空闲块,一位一块。和 i-node 分工不同:i-node 管"这个文件的块在哪",位示图管"哪些块还空着"。

5. A 8192 ÷ 32 = 256 字。整除正好,不用向上取整。

6. B 一级间接:一个索引块装 256 个地址 → 256 块 × 1KB = 256KB

7. D 二级间接:256 个地址各指一个索引块,每个索引块再装 256 个地址 → 256² = 65536 块 = 65536KB = 64MB。注意是"平方",不是"乘 2"——选 B(512KB)的就是错算成 256×2。

8. A 本题大坑:5 + 256 + 65536 = 65797 块 = 65797KB。选 C(65792KB)的把直接索引那 5 块漏了——平时说"约 64MB"可以,精确计算零头必须加上;选 B 的只算了二级间接。

9. C 三步走:逻辑块号 = 300KB ÷ 1KB = 300;直接覆盖 0~4,一级覆盖 5~260;300 > 260 → 二级间接:选 B 的只记得"一级间接能管 256 块",忘了它的起点是第 5 块——覆盖范围是 5~260,不是 0~255。

10. C 53 ÷ 16 = 3 余 5 → 第 3 字第 5 位。选 D 的是按"从 1 开始编号"的思维把余数减了 1——本题明确从 0 开始,审题先圈编号起点,从 0 还是从 1,一字之差答案全变。


七、五句话带走

  1. i-node = 属性 + 块地址清单;索引分配就像书的目录页;

  2. 命门数字:每块地址数 = 块大小 ÷ 地址长度(常考 256);

  3. 直接 n 块、一级 256 块、二级 256² 块;最大长度别漏直接索引的零头

  4. 反向定位:偏移 ÷ 块大小 = 逻辑块号,注意各级覆盖范围的起点

  5. 位示图:字号 = 块号 ÷ 字长,位号 = 块号 mod 字长;先圈编号起点(0 还是 1)

至此,操作系统高频考点全部通关:PV 操作、死锁、存储管理、文件管理。加上之前的计算机组成原理六篇,上午题最硬的两大模块已经拿下。

下一篇预告:开进新大陆——数据库。三级模式两级映像、ER 图转关系模式、关系代数的并交差笛卡尔积、以及下午题年年见的范式判断(1NF/2NF/3NF/BCNF)。数据库是上午+下午两头都考的大户,值得好好打。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值