当前位置: 首页 > news >正文

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

http://www.xdnf.cn/news/774127.html

相关文章:

  • MCP调研
  • 揭秘 CompletedFuture 的设计精髓(基础)
  • 打卡day43
  • 第12次09:展示收货地址和新增地址
  • 基于vue3-elemenyui的动态列案例
  • 【C语言入门级教学】assert断⾔和指针的使用
  • linux学习第18天(fork函数)
  • 代码随想录算法训练营第六天| 242.有效的字母异位词 、 349. 两个数组的交集 、 202. 快乐数 、1. 两数之和
  • Cesium使用primitive添加点线面(贴地)
  • 【文献阅读】Learning Transferable Visual Models From Natural Language Supervision
  • 【网络信息安全体系结构】知识点总结
  • 每日算法-250602
  • 复变函数 $w = z^2$ 的映射图像演示
  • 电商 API 开发实战:唯品会商品详情页实时数据接口接入与调试
  • 【Python 进阶2】抽象方法和实例调用方法
  • 激光雷达的强度像和距离像误差与噪声分析(2)2025.6.2
  • ps反相调整
  • 西红柿番茄成熟度目标检测数据集介绍
  • RSCUcaller
  • C语言进阶知识:深入探索编程的奥秘
  • 免费的硬盘工具
  • c++ 赋值函数和拷贝构造函数的调用时机
  • 【Pytorch学习笔记】模型模块06——hook函数
  • ps色彩平衡调整
  • java反序列化: Transformer链技术剖析
  • DAX权威指南6:DAX 高级概念(扩展表)、DAX 计算常见优化
  • 集成测试的流程总结
  • 【Kubernetes-1.30】--containerd部署
  • 工作日记之权限校验-token的实战案例
  • 基于Android的医院陪诊预约系统