清华大学操作系统(陈渝,向勇)课程笔记——(四)连续内存分配

2021/5/14 7:28:47

本文主要是介绍清华大学操作系统(陈渝,向勇)课程笔记——(四)连续内存分配,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

主要内容

连续内存分配

内存碎片问题

分区的动态分配

    • 第一适配
    • 最佳适配
    • 最差适配

压缩式碎片整理

交换式碎片整理

内存碎片问题

内存碎片: 内存中无法进一步利用的内存空间。

碎片分类

  • 外碎片:在分配单元之间未使用的内存
  • 内碎片:在分配单元内部未使用的内存

分区的动态分配

  简单的内存管理方法:

  1. 当一个程序准许运行在内存中时。分配一个连续的区间
  2. 分配一个连续的内存区间路运行的程序以访问数据

分配策略

  • 首次适配:为了分配n字节,使用第个可用空闲块以致块的尺寸比n大
  • 最优适配:为了分配n字节使用最小的可用空闲块,以致块的尺寸比n大
  • 最差适配:为了分配n字节.使用最大可用空闲块,以致块的尺寸比n大

三种分配策略的比较

  特点 优势 劣势
首次适配

按地址排序的空闲块列表

分配需要寻找一个合适的分区

重分配需要检查,看是否自由分区能合并于相邻的空闲分区(若有)

简单,易于实现

易于产生更大的空间快,向着地址空间的结尾

容易产生外部碎片

不确定性强

最优适配

为了避免分割大空闲块

为了最小化外部碎片产生的尺寸

按尺寸排列的空闲块列表

分配需要寻找一个合适的分区

≥重分配需要搜索及合并于相邻的空闲分区(若有)

当大部分分配是小尺寸时非常有效

比较简单

易产生外部碎片

重分配慢

易产生很多没用的微小碎片(不怎么好)

最差适配

为了避免有太多微小的碎片

按尺寸排列的空闲块列表

分配很快(获得最大的分区)

重分配雷要合并于和邻的空闲分区,若有.然后调整空闲块列表

假如分配是中等尺寸效果最好

重分配慢

易产生外部碎片

易于破碎大的空闲块以致大分区无法被分配

 

总结: 没有最好的分配算法一说,因为应用程序的请求是随机的。

压缩式碎片整理

  • 重置程序以合并孔洞
  • 要求所有程序是动态可重置的
  • 议题
    • 何时重置?
    • 开销

交换式碎片整理

  • 运行程序需要更多的内存
  • 抢占等待的程序&回收它们的内存
  • 问题: 选择哪个程序换出?

 



这篇关于清华大学操作系统(陈渝,向勇)课程笔记——(四)连续内存分配的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程