4.3 连续分配方式总结

本文最后更新于:2025年10月27日 上午

一、核心定义与特点

连续分配方式是早期操作系统中主流的内存管理方案,其核心特征是为每个用户程序分配连续的物理内存空间,程序加载后在内存中以"整块"形式存在,无需离散地址映射。该方式的优势是实现简单、地址变换直接,但缺点是易产生内存碎片,内存利用率受分配策略影响较大。

二、四种核心分配方法

根据内存分区的划分时机和大小灵活性,连续分配分为四种具体方法:

1. 单一连续分配(Single Continuous Allocation)

(1)核心逻辑

  • 适用场景:仅支持单用户、单任务的操作系统(如早期DOS系统),无多进程并发需求
  • 内存划分:将内存分为两部分:
    • 系统区:位于内存低地址区域,存放操作系统内核代码和数据
    • 用户区:占据内存剩余空间,整个区域仅分配给当前运行的一个用户程序

(2)优缺点

  • 优点:实现最简单,无需复杂的分区管理数据结构
  • 缺点:无法支持多道程序并发,内存利用率极低

2. 固定分区分配(Fixed Partition Allocation)

(1)核心逻辑

  • 适用场景:支持多道程序并发的早期操作系统
  • 内存划分
    • 系统初始化时,将内存划分为若干个固定大小的分区
    • 分区大小可"相等"或"不等"
    • 通过分区说明表管理分区状态

(2)内存分配示例

分区号 大小(KB) 起址(KB) 状态 占用进程
1 12 24 已分配 作业A
2 24 36 已分配 作业B
3 30 60 未分配 -
4 35 90 已分配 作业C
5 40 125 未分配 -

(3)优缺点

  • 优点:支持多道程序并发,实现简单
  • 缺点内碎片问题严重,灵活性差

3. 动态分区分配(Dynamic Partition Allocation)

(1)核心逻辑

  • 适用场景:多道程序环境,进程内存需求差异大且动态变化
  • 内存划分:根据进程的实际内存需求,动态划分出大小匹配的连续分区

(2)五种分区分配算法对比

算法名称 核心逻辑 空闲分区排序 优点 缺点
首次适应算法(FF) 从头部开始查找,找到第一个能容纳进程的分区 按首址递增 优先利用低地址空闲区 低地址区易碎片化
循环首次适应算法(NF) 从上次分配成功位置开始循环查找 按首址递增 空闲分区利用更均匀 可能无法满足大进程需求
最佳适应算法(BF) 查找能满足要求的最小分区 按大小递增 避免拆分大空闲分区 产生大量小碎片
最坏适应算法(WF) 查找能满足要求的最大分区 按大小递减 分配后剩余空闲区较大 大空闲区快速被消耗
快速适应算法(QF) 按分区大小分类建立链表 按大小分类 查找效率极高 实现复杂,灵活性低

(3)优缺点

  • 优点:按需分配,无内碎片,内存利用率高
  • 缺点:产生外碎片,需通过"内存紧缩"整理碎片

4. 可重定位分区分配(Relocatable Partition Allocation)

(1)核心逻辑

  • 适用场景:动态分区分配的优化方案,解决外碎片问题
  • 核心思想:通过动态重定位技术,将内存中所有进程移动到内存低地址区域,合并外碎片

(2)优缺点

  • 优点:消除外碎片,提高内存利用率
  • 缺点:进程移动开销大,依赖硬件支持

三、两种补充优化技术

1. 伙伴系统(Buddy System)

(1)核心逻辑

  • 分区大小规则:所有分区大小均为2k2^k(如2KB、4KB、8KB等)
  • 分配过程:按2k2^k规则查找或拆分分区
  • 回收过程:检查"伙伴分区"并合并

(2)优缺点

  • 优点:分配/回收效率高,无外碎片
  • 缺点:可能产生内碎片

2. 对换(Swapping)

(1)核心逻辑

  • 适用场景:内存空间不足时,通过"内外存数据交换"腾出内存
  • 对换过程
    • 换出:将阻塞进程写入对换区
    • 换入:将就绪进程从对换区读回内存

(2)优缺点

  • 优点:逻辑上扩充内存容量,提高系统并发度
  • 缺点:依赖磁盘I/O,速度较慢

四、四种连续分配方法对比

分配方法 适用场景 碎片类型 内存利用率 实现复杂度 并发支持
单一连续分配 单用户、单任务 无(仅用户区闲置) 极低 极低
固定分区分配 多道程序、进程需求固定 内碎片 较低
动态分区分配 多道程序、进程需求动态 外碎片 较高
可重定位分区分配 动态分区优化、需合并碎片 无(需紧缩) 高(需硬件)

五、核心总结

  1. 连续分配的核心是"为进程分配连续内存空间",实现简单但易受碎片问题影响
  2. 动态分区分配是连续分配的主流方案,通过多种算法平衡"查找效率"与"内存利用率"
  3. 优化技术如可重定位分区、伙伴系统、对换技术分别解决"外碎片"、"分区规整性"、"内存不足"问题
  4. 现代操作系统更多结合"离散分配"(分页、分段)提升内存利用率

4.3 连续分配方式总结
https://hellowydwyd.github.io/2025/10/27/4-3-连续分配方式总结/
作者
YuDong Wang
发布于
2025年10月27日
许可协议