文章目录
-
- [1. 空闲区表的数据结构](#1. 空闲区表的数据结构)
- [2. 分配算法 (迁移自内存管理)](#2. 分配算法 (迁移自内存管理))
-
- [(a) 最先适应算法 (First Fit)](#(a) 最先适应算法 (First Fit))
- [(b) 最佳适应算法 (Best Fit)](#(b) 最佳适应算法 (Best Fit))
- [(c ) 最差适应算法 (Worst Fit)](#(c ) 最差适应算法 (Worst Fit))
- [3. 空闲块的分配与回收流程](#3. 空闲块的分配与回收流程)
- [4. 内存管理与外存管理的异同](#4. 内存管理与外存管理的异同)
核心思想 :空闲区表法(又称空闲文件目录)与内存管理中的"动态分区分配"极为相似。它将磁盘上的空闲物理块组织成一个表,记录每一组连续空闲块的信息。
1. 空闲区表的数据结构
系统为所有的空闲区建立一张表,每一项对应磁盘上的一个连续空闲区域。

- 登记单位 :以空闲块为单位进行登记。
- 记录内容 :空闲区域的起始块号 和块数。
- 排序规则 :为了提高搜索效率,表中的记录可以:
- 按块号大小排列(方便回收时合并)。
- 按空闲块数量排列(方便分配)。
2. 分配算法 (迁移自内存管理)
当文件申请空间时,系统参照内存管理中"可变分区管理"的算法,从空闲区表中选择一个合适的区域。
(a) 最先适应算法 (First Fit)
- 排序方式 :空闲块按起始地址(块号)递增的顺序排列。
- 分配逻辑 :从表头开始查找,找到第一个能满足要求(块数足够)的空闲区即进行分配。
(b) 最佳适应算法 (Best Fit)
- 排序方式 :空闲区按块数递增的顺序排列。
- 分配逻辑 :找到第一个能满足要求的空闲区。这种分配后剩下的碎块最小。
(c ) 最差适应算法 (Worst Fit)
- 排序方式 :空闲区按块数递减的顺序排列。
- 分配逻辑 :直接看第一项(最大的空闲区)。如果第一项都不能满足,则分配失败。其优点是剩下的碎块依然较大,可以继续利用。
3. 空闲块的分配与回收流程
分配操作
- 根据选定的算法(如 FF, BF)从表中选出一个空闲区。
- 若分配后有剩余:修改该表项,更新起始块号和剩余块数,将其作为新的空闲区登记。
- 若正好分配完(无剩余):直接从空闲区表中删除该记录项。
回收操作
- 用户删除文件时,系统回收其占用的物理块。
- 核心步骤:合并相邻区 。
- 查看回收区的物理块号是否与表中已有的空闲区相邻(前相邻或后相邻)。
- 若相邻:则合并成一个更大的连续空闲区,更新表项。
- 若不相邻:在表中增加一个新的记录项。
4. 内存管理与外存管理的异同
学习空闲区表法时,一个关键的区别需要明确:
思考:为什么对内存管理记录"首地址和长度",而对外存管理记录"块号和块数"?
解析:
- 访问机制不同 :
- 内存 :CPU访问内存是直接根据逻辑地址 通过地址映射机构转换为物理地址。内存是按字节或字编址的,因此记录"首地址"最直观。
- 物理结构不同 :
- 外存(硬盘) :CPU无法直接访问硬盘,必须通过I/O指令。硬盘的物理结构由磁道、柱面、磁头组成。
- 块 (Block):为了方便管理,操作系统将磁盘抽象为大小相同的"块"。磁盘读写的最小单位是块,因此记录"块号"和"块数"最符合磁盘的物理特性。
小结
- 适用场景 :空闲区表法主要适用于连续分配方式的文件系统。
- 优点:结构简单,分配连续空间时效率高。
- 缺点:随着系统运行时间增加,会产生大量的磁盘碎片(外部碎片),且当磁盘空间极大时,空闲区表本身会变得很大,检索效率下降。
后续内容:
空闲区表法是管理方式的一种。后续会学习 "空闲块链接法" 或 "位示图法"。位示图法在现代操作系统(如Linux, Windows)中应用广泛,也是常见的考核点。