2.9.5 索引文件
本课核心知识点整理
本节导学
索引文件解决的是“文件数据块可以离散存放,但仍要能快速找到”的问题。连续分配读起来简单,但文件扩展困难,也容易产生外部碎片;链式分配扩展方便,但随机访问差。索引结构把数据块地址集中记录在索引块中,使文件数据可以分散存放,同时支持较好的随机访问。
索引块里保存的不是文件正文,而是数据块地址。考试常考一个索引块能容纳多少地址项、直接索引/一级间接/二级间接分别能表示多大文件。
索引层次
| 索引方式 | 指向关系 | 能管理的数据块数 |
|---|---|---|
| 直接索引 | 索引项直接指向数据块 | 每个索引项 1 个数据块 |
| 一级间接索引 | 索引项指向一个索引块,该索引块再指向数据块 | 每个间接索引项可扩展为多个数据块 |
| 二级间接索引 | 索引项指向一级索引块,一级索引块再指向二级索引块 | 容量进一步按平方级扩大 |
如果索引块大小为 B 字节,每个地址项大小为 a 字节,则每个索引块可存地址项数为:
一级间接索引能管理
为什么多级索引有价值
小文件用直接索引即可,访问快、开销小;大文件需要更多数据块地址,单个索引块不够,就通过一级、二级甚至三级间接索引扩展容量。这种设计兼顾了小文件访问效率和大文件容量。
做题路线
- 先算每个索引块可容纳的地址项数:索引块大小 / 地址项大小。
- 直接索引按“索引项个数 × 数据块大小”算容量。
- 一级间接按“索引项个数 × 每个索引块地址项数 × 数据块大小”算。
- 二级间接再乘一次每块地址项数。
- 注意索引块本身保存地址,不保存文件正文数据。
例题
单选
索引块中主要保存的是:
单选
每个索引块可容纳的地址项数等于:
自查要点
- 索引块保存文件数据还是数据块地址?
- 多级索引为什么能扩大文件容量?