复习位置:操作系统 → 内存管理 → 连续分配管理方式 → 动态分区分配

一、四种算法核心区别

算法 英文 选择方式 典型特点
首次适应 First Fit,FF 从低地址开始,找到第一个能满足要求的空闲分区 低地址容易产生碎片,高地址容易保留大空闲区
循环首次适应 Next Fit,NF 从上次查找结束位置继续寻找 空闲区使用较均匀
最佳适应 Best Fit,BF 找到能满足要求的最小空闲分区 容易留下大量很小的外部碎片
最差适应 Worst Fit,WF 每次选择最大的空闲分区 会不断消耗大的连续空闲区

二、首次适应算法 First Fit

规则:

每次从低地址开始查找,
找到第一个足够大的空闲分区就立即分配。

特点:

实现简单,查找速度通常较快。
低地址区域会被频繁切割,容易产生小碎片。
高地址区域较少被使用,因此更容易保留较大的连续空闲区。

408高频结论:

“最有可能使高地址形成较大空闲区”
→ First Fit

三、循环首次适应算法 Next Fit

规则:

从上一次查找结束的位置继续向后寻找,
到达末尾后再回到低地址。

特点:

内存各区域使用较均匀。
高地址的大空闲区也会被不断使用。

识别信号:

“从上次查找结束位置继续”
→ Next Fit

四、最佳适应算法 Best Fit

规则:

在所有能够满足申请的空闲分区中,
选择最小的那个。

例如:

空闲区:100KB  500KB  200KB  300KB  600KB
申请:212KB

Best Fit选择:

300KB

剩余:

88KB

特点:

容易留下大量很小、难以再次利用的外部碎片。

识别信号:

“最小但足够大”
→ Best Fit

五、最差适应算法 Worst Fit

规则:

每次选择当前最大的空闲分区。

同样申请212KB时:

选择600KB
剩余388KB

特点:

剩余空间通常仍较大,
但系统中的大空闲区会不断被消耗。

识别信号:

“选择最大的空闲区”
→ Worst Fit

六、四种算法秒记

FF:
从头找第一个。
低地址碎,高地址容易留大块。

NF:
从上次位置接着找。
使用比较均匀。

BF:
找最小够用的。
容易留下很多小碎片。

WF:
找最大的。
不断消耗大空闲块。

七、典型选择题

题目:

下面最有可能使高地址空间成为大的空闲区的分配算法是:

A. 首次适应算法
B. 最佳适应算法
C. 最差适应算法
D. 循环首次适应算法

答案:

A. 首次适应算法

原因:

首次适应算法总是优先从低地址区域分配,
因此低地址被频繁使用,
高地址较少被访问,更容易保留大的连续空闲区。

八、外部碎片

动态分区属于:

连续内存分配

主要产生:

外部碎片

含义:

空闲内存总量可能足够,
但被分散成多个不连续的小块,
无法满足较大的连续内存申请。

不要和分页中的:

内部碎片

混淆。

九、考前速记

First Fit:第一个能放下的。
Next Fit:从上次位置继续找。
Best Fit:最小但能放下的。
Worst Fit:最大的空闲区。

高地址留大块:First Fit。
小碎片最多:Best Fit。
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐