408考研逐题详解:2009年第28题
2009年第28题
下列文件物理结构中, 适合随机访问且易于文件扩展的是( )
A. 连续结构 \qquad B. 索引结构 \qquad C. 链式结构且磁盘块定长 \qquad D. 链式结构且磁盘块变长
解析
本题考查文件的物理结构有关知识,在一般的复习资料或者教材中,都会介绍连续结构、链式结构和索引结构(包括混合索引结构)这三种文件的物理结构,而本题对链式结构又做了区分,即磁盘块定长和磁盘块变长。为了解答本题,必须对这些概念有所了解。
1. 连续结构
其访问特点是:
- 顺序访问高效:数据连续存储,磁头移动距离短,顺序读写速度最快(如从起始块依次读取相邻块)。
- 随机访问便捷:通过起始块号和文件长度可直接计算目标块地址(如第 i 块地址 = 起始块号 + i),时间复杂度为 O ( 1 ) O(1) O(1)。
- 依赖连续空间:必须一次性分配连续磁盘块,若空间碎片化则分配失败。
适合存储的文件特点:
- 固定大小且顺序访问为主的文件:如归档数据(备份文件)、只读媒体文件(视频、音频)、系统引导文件等。这类文件创建后大小基本不变,且常按顺序读取。
- 不适合场景:频繁修改、动态增长的文件(如日志、临时文件),因扩展时需重新分配连续空间并迁移数据,成本极高。
- 极难扩展:文件增长时需找到更大的连续空闲块,若无法找到则需整体迁移数据到新位置,操作繁琐且耗时,易引发性能瓶颈。
2. 索引结构(单级 / 多级索引)
访问特点:
- 随机访问高效:通过索引表直接定位数据块,时间复杂度为 O ( 1 ) O(1) O(1)(单级索引)或 O ( n ) O(n) O(n)(多级索引, n n n 为索引层级),无需遍历中间块。
- 空间离散分配:数据块可分散存储,仅索引块需连续,消除外部碎片。
- 索引块开销:小文件需为索引块分配空间(如 4KB 索引块仅存 1 个数据块号),存在空间浪费。
适合存储的文件特点:
- 中小型随机访问文件:如配置文件、程序库、数据库索引文件等,需频繁随机读写且大小适中。
- 超大文件(多级索引场景):如视频编辑工程文件、科学计算数据,通过多级索引(如三级索引)支持 TB 级容量。
- 不适合场景:极小文件(如几 KB 的文本),索引块浪费比例过高。
- 文件能够灵活扩展:
- 单级索引:索引块未满时直接添加块号;满时分配新索引块并修改上级索引(如混合索引中的一级间接索引)。
- 多级索引:通过增加索引层级(如从二级扩展到三级)动态扩展容量,无需预先分配连续空间。
3. 链式结构
访问特点是:
- 仅支持顺序访问:隐式链接需按指针遍历链表(如块 1→块 3→块 5),随机访问需从头开始,时间复杂度为 O ( n ) O(n) O(n);显式链接(FAT)通过内存表快速跳转,但仍需逐块查找。
- 可靠性风险:隐式链接中单个指针损坏会导致链断裂,需通过校验或冗余机制修复。
- 盘块定长与变长:
- 定长块管理简单:每个块大小固定(如 4KB),指针位置固定(如块末尾 4 字节),系统无需处理块大小差异。
- 变长块空间利用灵活,根据数据量分配合适大小的块(如 1KB 数据分配 1KB 块),减少内部碎片(定长块中若数据不足一块则浪费空间);但管理复杂度高:需维护块大小信息,分配时需搜索合适大小的空闲块(类似动态内存分配中的首次适应、最佳适应算法),可能产生外部碎片。
适合存储的文件特点
- 链式结构:
- 磁盘块定长的文件结构适用于频繁修改的小文件:如日志文件(逐条追加记录)、临时文件(动态增减内容),支持边写边扩展,无需预分配空间。
- 磁盘块变长的文件结构是用于数量波动大的文件:如邮件附件(包含几 KB 的文本和几百 MB 的视频)、多媒体片段(不同帧数据量差异大),按需分配合适大小的块,避免定长块的空间浪费。
- 嵌入式系统或简单文件系统:隐式链接实现简单,资源占用低(如 FAT 文件系统在早期 U 盘中的应用)。
- 不适合场景:大文件或随机访问需求高的场景(如数据库数据文件),遍历开销显著。
- 易于扩展:新增数据块时只需将其指针链入末尾,无需连续空间,适合动态增长(如日志文件不断追加新块)。
结构 | 访问特点 | 适合文件类型 | 扩展性 |
---|---|---|---|
连续结构 | 顺序 / 随机访问高效,依赖连续空间 | 固定大小、顺序访问文件(如归档) | 极难扩展(需连续空间) |
索引结构 | 随机访问高效 O ( 1 ) O (1) O(1),索引块开销 | 中小型随机访问文件、超大文件 | 灵活(动态增删索引项) |
链式(定长块) | 仅顺序访问,管理简单 | 频繁修改的小文件(如日志) | 容易(追加定长块) |
链式(变长块) | 顺序访问,空间利用灵活但管理复杂 | 数据量波动大的文件(如邮件附件) | 灵活但可能产生碎片 |
连续结构、索引结构和链式结构的关键差异是:
-
连续结构的性能优势依赖连续空间,扩展性受限于碎片;
-
索引结构通过空间换时间,平衡了访问效率与扩展性;
-
链式结构以顺序访问为代价换取高空间利用率,定长块适合简单场景,变长块适合精细控制空间的特殊需求。
掌握了以上知识之后,再阅读本题,不难选出正确答案。
本题答案:B