02 操作系统的连续内存分配、内存碎片的整理算法

计算机体系结构以及内存分层体系

计算机基本硬件结构包括三个部分:CPU (运算器、寄存器、控制器、缓存(cache)、存储管理单元(MMU))、内存、设备(I/O)

在操作系统中管理内存的不同方法
  • 程序重定位
  • 分段
  • 分页
  • 虚拟内存
  • 按需分页虚拟内存
操作系统实现内存管理高度依赖于硬件
  • 必须知道内存架构
  • MMU(内存管理单元):硬件组件负责处理CPU的内存访问请求

物理内存管理之连续内存分配知识目录
  • 内存碎片问题
  • 分区的动态分配
    • 第一适配
    • 最佳适配
    • 最差适配
  • 压缩式碎片整理
  • 交换式碎片整理

内存碎片问题:即空闲内存不能被利用,分为外部碎片(在分配单元间的未使用的内存);内部碎片(在分配单元中未使用的内存)

分区的动态分配算法之首次适配算法:为了分配n个字节,使用第一个可用空闲块。

需求

  • 按地址排序的空闲块列表
  • 分配需要寻找一个合适的分区
  • 重新分配需要检查,看是自由分区能够合并于相邻的空闲分区

优点

  • 简单
  • 易于产生更大的空闲块,向着地址空间的结尾

缺点

  • 容易产生外部碎片

分区的动态分配算法之最佳适配:为了分配n个字节,使用最小的可用空闲块。

优点

  • 避免分割大的空闲块
  • 最小化外部碎片产生的尺寸
  • 当大部分分配是小尺寸时非常有效

缺点

  • 重分配慢
  • 容易产生很多没有用的微小外部碎片

需求

  • 按尺寸排列空闲块列表
  • 分配需要寻找一个合适的分区
  • 重分配需要搜索及合并相邻的空闲分区(若有)

分区的动态分配算法之最差适配:为了分配n个字节,使用最大的可用空闲块。

优点

  • 加入分配是中等尺寸效果最好
  • 避免产生太多的微小碎片

缺点

  • 重分配慢
  • 产生外部碎片
  • 易于破坏最大的空闲块以致于大分区无法被分配

需求

  • 按尺寸排列空闲块列表
  • 分配很快(获得最大的分区)
  • 重分配需要合并相邻的空闲分区,若有,然后调整空闲块列表

总结:这三种适配算法,没有谁是最优的这种说法,因为应用程序的请求是随机产生的,需要的空闲块的大小不确定,这些都是一些简单的内存分配算法,实际运用中用到的分配算法更加的复杂。


连续内存分配之压缩式与交换式碎片整理

压缩式碎片整理需求:1.重置程序以合并打孔;2.要求所有程序是动态可重置的(在内存中运行的程序的位置是可以调整的,调整的过程就是一个内存拷贝的过程);

存在两个问题:1.什么时候执行重置的操作,2.执行重置操作需要的开销大不大?

交换式碎片整理:把硬盘当成是内存的一个备份(换入换出操作)


提示:为了更好的理解知识点,博主在微信公众号中将操作系统知识进行了重新排版和插入图片。感兴趣的朋友可以扫码进行关注。

在这里插入图片描述

发布了19 篇原创文章 · 获赞 1 · 访问量 716

猜你喜欢

转载自blog.csdn.net/weixin_45615071/article/details/105505143