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

Posted 行运换甲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了清华大学操作系统(陈渝,向勇)课程笔记——连续内存分配相关的知识,希望对你有一定的参考价值。

主要内容

连续内存分配

内存碎片问题

分区的动态分配

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

压缩式碎片整理

交换式碎片整理

内存碎片问题

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

碎片分类

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

分区的动态分配

  简单的内存管理方法:

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

分配策略

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

三种分配策略的比较

  特点 优势 劣势
首次适配

按地址排序的空闲块列表

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

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

简单,易于实现

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

容易产生外部碎片

不确定性强

最优适配

为了避免分割大空闲块

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

按尺寸排列的空闲块列表

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

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

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

比较简单

易产生外部碎片

重分配慢

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

最差适配

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

按尺寸排列的空闲块列表

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

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

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

重分配慢

易产生外部碎片

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

 

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

压缩式碎片整理

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

交换式碎片整理

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

 

以上是关于清华大学操作系统(陈渝,向勇)课程笔记——连续内存分配的主要内容,如果未能解决你的问题,请参考以下文章

向勇陈渝:用RUST语言开展操作系统教学

Operating System: Process Scheduling

Operating System: Tutorial

Operating System: Semaphore

读书笔记 - 《大学之路》

操作系统NO.2 | 详解操作系统的非连续内存管理(清华大学 操作系统原理)