首页/操作系统/03-memory/连续分配方式 🔗 在 Obsidian 中打开
操作系统 · 03-memory

连续分配方式

重要度 ★★★★ 固定分区动态分区内碎片外碎片紧凑
速查
连续分配要求进程占用连续内存:固定分区有内碎片,动态分区有外碎片。分配算法 FF 通常最佳;紧凑可消除外碎片但开销大。

速查

项目
定义为进程分配一块连续的内存空间
分类单一连续、固定分区、动态分区、动态重定位分区
碎片问题内碎片(固定分区)、外碎片(动态分区)
解决碎片紧凑/压缩(compaction)

核心概念

连续分配方式要求每个进程占用一块连续的内存空间。

四种连续分配方式

  1. 单一连续分配:用户区只放一个进程,有内部碎片,只能单用户单任务
  2. 固定分区分配:分区大小固定,有内碎片(分区大于进程时浪费),无外碎片
  3. 动态分区分配:按进程大小动态划分,无内碎片,但有外碎片
  4. 动态重定位分区:基址寄存器+限长寄存器,执行时动态重定位

动态分区分配算法

算法策略特点
首次适应(FF)从头找第一个够大的空闲区简单,低地址碎片多
最佳适应(BF)找最小的够大空闲区产生最多小碎片
最坏适应(WF)找最大的空闲区大空闲区被分割
邻近适应(NF)从上次位置继续找分布均匀

关键性质

分配方式内碎片外碎片多道程序
单一连续不支持
固定分区支持
动态分区支持
动态重定位有(可紧凑消除)支持

常见考法

考法解题套路
内碎片 vs 外碎片内碎片:分区内未用空间;外碎片:分区间的小空闲区
分配算法比较FF简单,BF碎片多,WF大区分割,NF分布均匀
紧凑(compaction)将进程移到一起,消除外碎片——开销大
基址寄存器作用地址转换:物理地址 = 逻辑地址 + 基址

易错点

注意
  • 内碎片:分配给进程的分区内未使用的空间(固定分区特有)
  • 外碎片:内存中太小而无法利用的空闲区(动态分区特有)
  • 首次适应(FF)通常性能最好——比最佳适应碎片少
  • 最佳适应(BF)产生最多小碎片
  • 紧凑可以消除外碎片,但开销很大

核心结论

必背
  1. 连续分配要求进程占用连续内存空间,有碎片问题
  2. 固定分区有内碎片,动态分区有外碎片
  3. 首次适应(FF)通常性能最佳,简单且碎片较少
  4. 最佳适应(BF)产生最多小碎片,性能不如FF
  5. 紧凑可消除外碎片但开销大,现代OS用分页/分段解决

记忆卡片

内碎片和外碎片的区别?
内碎片:分区内未用空间;外碎片:分区间无法利用的小空闲区。
哪种分配有内/外碎片?
固定分区有内碎片;动态分区有外碎片。
四种动态分区算法?
首次适应(FF)、最佳适应(BF)、最坏适应(WF)、邻近适应(NF)。
哪种算法通常性能最好?
首次适应(FF)——简单且碎片较少。
如何消除外碎片?
紧凑(compaction)——将进程移到一起,但开销大。

交互动画 · 动态分区分配算法

待装入进程大小 = 20 | 内存 0~100
点击四种算法,观察新进程(大小20)会被装入哪个空闲区
空闲区:0-12(12)、20-45(25)、55-75(20)、85-100(15)
能容纳20的空闲区只有 20-45(25) 与 55-75(20):BF选最小(20-45只留5)、WF选最大。

相关知识点

paging-and-segmentation logical-and-physical-address

↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。