- 地址空间定义
- 地址生成
逻辑地址生成
物理地址的生成
- 地址安全检查
- 连续内存分配
- 内存碎片问题
内存碎片:空闲内存不能被利用
外部碎片:分配单元之间的未被使用内存
内部碎片:分配单元内部的未被使用内存,取决于分配单元大小是否要取整。
- 分区的动态分配
- 第一适配
原理&实现:
空闲分区列表按地址顺序排列
分配过程时,搜索一个合适的分区
释放分区时,检查是否可与临近的空闲分区合并
优点:
简单
在高地址空间有大块的空闲分区
缺点:
外部碎片
分配大块时较慢
2. 最佳适配
原理&实现:
空闲分区列表按照大小排列
分配过程时,搜索一个合适的分区
释放分区时,检查是否可与临近的空闲分区合并
优点:
大部分分配的尺寸较小,效果很好
-
- 可避免大的空闲分区被拆分
- 可减小外部碎片大小
- 相对简单
缺点:
外部碎片
释放分区较慢
容易产生很多无用的小碎片
3. 最差适配
原理&实现:
空闲分区列表按照大小排列
分配时,选最大分区
释放时,检查是否可与临近的空闲分区合并,进行可能的合并,并调整空闲分区列表顺序。
优点:
中等大小的分配较多时,效果最好
避免出现太多的小碎片
缺点:
外部碎片
释放分区较慢
容易破坏大的空闲分区,因此后续难以分配大的分区
压缩式碎片整理
交换式碎片整理