Skip to content
难度基础(★)
建议时长45分钟

2.9.5 索引文件

本课核心知识点整理
本课核心知识点手绘流程图(SVG)

本节导学

索引文件解决的是“文件数据块可以离散存放,但仍要能快速找到”的问题。连续分配读起来简单,但文件扩展困难,也容易产生外部碎片;链式分配扩展方便,但随机访问差。索引结构把数据块地址集中记录在索引块中,使文件数据可以分散存放,同时支持较好的随机访问。

索引块里保存的不是文件正文,而是数据块地址。考试常考一个索引块能容纳多少地址项、直接索引/一级间接/二级间接分别能表示多大文件。

索引层次

索引方式指向关系能管理的数据块数
直接索引索引项直接指向数据块每个索引项 1 个数据块
一级间接索引索引项指向一个索引块,该索引块再指向数据块每个间接索引项可扩展为多个数据块
二级间接索引索引项指向一级索引块,一级索引块再指向二级索引块容量进一步按平方级扩大

如果索引块大小为 B 字节,每个地址项大小为 a 字节,则每个索引块可存地址项数为:

n=Ba

一级间接索引能管理 n 个数据块;二级间接索引能管理 n2 个数据块;三级间接则可到 n3。若题目还给出数据块大小,再乘以数据块大小即可得到文件容量。

为什么多级索引有价值

小文件用直接索引即可,访问快、开销小;大文件需要更多数据块地址,单个索引块不够,就通过一级、二级甚至三级间接索引扩展容量。这种设计兼顾了小文件访问效率和大文件容量。

做题路线

  1. 先算每个索引块可容纳的地址项数:索引块大小 / 地址项大小。
  2. 直接索引按“索引项个数 × 数据块大小”算容量。
  3. 一级间接按“索引项个数 × 每个索引块地址项数 × 数据块大小”算。
  4. 二级间接再乘一次每块地址项数。
  5. 注意索引块本身保存地址,不保存文件正文数据。

例题

单选
索引块中主要保存的是:
单选
每个索引块可容纳的地址项数等于:

自查要点

  1. 索引块保存文件数据还是数据块地址?
  2. 多级索引为什么能扩大文件容量?