Skip to content

连续分配(首次/最佳/最坏适应)

考情分析

连续分配属于基本内存管理(28分),选择题常考三种分配策略的区别。属于 🔥🔥 中高频。

内存空闲区大大小小散落各处,新来一个进程该塞进哪块空间?选择不同,碎片的多少和分配效率天差地别。

单一连续分配

内存分为系统区用户区,用户区只放一个程序。简单但只适用于单用户单任务系统。

有内碎片,无外碎片。

固定分区分配

内存用户区分成若干固定大小的分区,每个分区装一个进程。

类型说明
等大小分区所有分区大小相同,管理简单但不灵活
不等大小分区分区大小不同,灵活性好一些

有内碎片(分区可能大于进程实际需要),无外碎片。

动态分区分配

不预先划分分区,根据进程大小动态分配连续的内存空间。

无内碎片,有外碎片。可通过**紧凑(Compaction)**技术合并外碎片(将进程移动到一起)——类似把书架上零散的空隙都挤到一端,腾出一大块连续空间。

三种分配策略

策略规则空闲分区排列
首次适应(First Fit)从头开始找,选第一个够大的地址递增排列
最佳适应(Best Fit)最小的够大的分区大小递增排列
最坏适应(Worst Fit)最大的分区大小递减排列

还有一种变体:

策略规则
邻近适应(Next Fit)从上次查找结束的位置继续找

策略对比

策略优点缺点
首次适应综合性能最好,开销小低地址部分产生很多小碎片
最佳适应大分区被保留下来产生很多极小的外碎片(难以利用)
最坏适应不会产生太小的碎片大分区被快速用完,大进程可能无法分配
邻近适应分布均匀大分区也可能被快速拆分

综合来看

首次适应算法是实践中效果最好的。虽然低地址区会积累碎片,但因为每次从头开始查找,大的空闲区在高地址处被保留了下来。

易错

动态分区分配产生的是外碎片(分区之间的空隙),不是内碎片。而固定分区分配产生的才是内碎片(分区内部未用完的空间)。选择题常把两者搞混。

另外,"最佳适应"听起来最优但实际效果不一定好——它会产生大量极小的外碎片,这些碎片几乎无法再利用。

交互可视化

加载可视化中...

考研高频考点

  • 🔥🔥🔥 三种分配策略的规则和空闲分区排列方式
  • 🔥🔥🔥 各策略的优缺点对比
  • 🔥🔥 首次适应综合性能最好
  • 🔥🔥 动态分区有外碎片无内碎片
  • 🔥 紧凑技术的概念

连续分配要求每个进程占据一整块连续空间,浪费严重——能不能把进程拆成小块,分散放到内存的各个角落?下篇来看基本分页。

真题练习

相关真题(6题)

2022Q27选择题2分

伙伴系统:只合并大小相等(互为伙伴)的空闲分区

2020Q28选择题2分

最佳适应算法:按分配释放顺序计算最大空闲分区

2019Q32选择题2分

最佳适应算法:每次留下最小的空闲分区,最容易产生碎片

2017Q25选择题2分

最佳适应算法:分区回收与合并后重新按大小排序

2010Q27选择题2分

分区保护:界地址(上下界/基址+限长)是主要保护措施

2009Q28选择题2分

最佳适应算法:按分配释放顺序模拟,计算最大空闲分区