操作系统学习笔记(七):连续内存分配——内存碎片、动态分配

在没有其他方式辅助的情况下,我们分配给一个进程的内存是连续的。在分配时候我们需要有动态分配与碎片处理。如何理解呢?就是每个进程需要一块内存,我们要选取合适的位置的内存分配给它。当有的进程先结束了内存还给操作系统,此时可能就会产生内存碎片,要对碎片进行处理。首先对一些概念进行解释。

  • 连续内存分配:给进程分配一块不小于指定大小的连续的物理内存区域。
  • 内存碎片:不能被利用的空闲内存,内存碎片又分为外部碎片和内部碎片。
  • 外部碎片:分配单元之间的未被利用的内存,比如两个进程之间的进程结束后的空间,如果后续请求的大小都大于这一部分空间,这部分空间就不能被利用,也就形成了外部碎片。
  • 内部碎片:分配单元内部的未被使用的内存,这是由于分配时可能只能分配2的幂次方大小内存比如512字节,而实际使用了510字节,那么就有2字节的内部碎片。

动态分配:

当程序加载执行时,需要分配给进程一个指定大小可变的分区,分区的地址是连续的。如图中右侧分给进程1到6内存空间。当进程3和进程5结束后它们所占有的位置重新变为空闲。操作系统要维护的数据结构就包含了内存中已分配区域与未分配区域。当有新的进程请求一定的内存空间时,则根据未分配空间进行一个动态分区分配。分配的策略是多种多样的。比如:

  • 最先分配,空闲分区列表按照地址顺序排序,遍历空闲分区,遇到的第一个大小满足需求的区域分配给进程。释放内存使,查看附近是否有临近的空闲区,有的话进行合并。优点是找和合并开销较小,算法简单,并且由于每次从小地址开始查找,可以在大地址处留有大块的空闲分区,可以分配给需要大内存的进程。缺点是会有外部碎片,因为切完剩下的可能有很多小块内存,也因此分配大内存时需要遍历到最后时间较长。
  • 最佳匹配,空闲分区列表按照大小排序,寻找空闲区域中大小大于需求大小中最小的分配给进程,具体实现时可以对空闲分区按大小排序从最小开始寻找第一个大于需求的内存区即可,如果不排序则需要整个遍历一遍。释放时,也是与邻近空闲区域合并。而合并时我们要找的是地址邻近的而不是大小邻近的,所以合并的开销会大一些。优点大部分分配的内存尺寸较小时效果很好,因为可以避免较大的内存被拆分,同时减小外部碎片的大小,同时相对来说比较简单。缺点是外部碎片还是较多,并且越小越无法被利用,容易产生很多无用的小碎片,此外如前所述释放分区较慢,合并时算法复杂。
  • 最差匹配,空闲分区列表按照大小排序,寻找空闲去榆中大小最大的区域从中划分出需要大小的内存分配给进程。释放时寻找邻近空闲分区合并。因此也存在最佳匹配的问题,释放内存时合并算法开销较大。优点是中等尺度内存分配较多时效果最好,可以避免产生太多小碎片。缺点是释放较慢,也会有外部碎片,容易破坏大的内存区域,因此后续无法分配大内存。

 

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
连续系统的时域分析是信号与系统学习中的重要部分。时域分析研究的是信号在时间域内的变化规律,常用的分析方法包括冲激响应法、单位阶跃响应法和相应方程法。 1. 冲激响应法 冲激响应法是一种基于系统输入信号的冲激函数的响应来分析系统时域特性的方法。具体来说,将系统输入信号表示为一个冲激序列的加权和,然后计算出系统对每个冲激的响应,得到系统的冲激响应函数。然后,通过线性时不变系统的特性,可以将任何输入信号都表示为冲激序列的加权和,从而得到系统对任何输入信号的响应。 2. 单位阶跃响应法 单位阶跃响应法是一种基于系统输入信号的单位阶跃函数的响应来分析系统时域特性的方法。具体来说,将系统输入信号表示为一个单位阶跃函数的加权和,然后计算出系统对每个单位阶跃函数的响应,得到系统的单位阶跃响应函数。然后,通过线性时不变系统的特性,可以将任何输入信号都表示为单位阶跃函数的加权和,从而得到系统对任何输入信号的响应。 3. 相应方程法 相应方程法是一种基于系统微分方程的解析解来分析系统时域特性的方法。具体来说,根据系统微分方程的特性,可以得到系统的传递函数,然后通过拉普拉斯变换将输入信号和传递函数变换到频域内,最终通过反变换得到系统的时域响应。 以上三种方法都是分析连续系统时域特性的重要方法,各自适用于不同的情况。掌握这些方法可以帮助我们更好地理解和分析连续系统的时域特性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值