连续内存分配:内存碎片与分区的动态分配


在这里插入图片描述


一、内存碎片问题

-空闲内存不能被利用
外部碎片:在分配单元间的未使用内存
内部碎片:在分配单元中的未使用内存
在这里插入图片描述

二、简单的内存管理方法

当一个程序准许运行在内存中时,分配一个连续的区间
-分配一个连续的内存区间给运行的程序以访问数据
在这里插入图片描述

三、分区的动态分配策略

-首次适配
–内容:现在想分配n字节,从低地址开始找,碰到的第一个空间比n大的空闲块就使用它。
在这里插入图片描述
–要想实现首次分配,需要满足以下条件:
—需要存在一个按地址排序的空闲块列表
—分配需要找一个合适的分区
—重分配需要检查,看看自由分区能不能与相邻的空闲分区合并(形成更大的空闲块),若有

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

–缺点
—外部碎片的问题会加剧
—不确定性

-最佳适配
–内容:为了分配n字节,使用最小的可用空闲块,以致块的尺寸比n大。
在这里插入图片描述
–目的:避免分割大的空闲块;最小化外部碎片产生的尺寸。
–要想实现最佳分配,需要满足以下条件:
—按尺寸排列的空闲列表
—分配需要寻找一个合适的分区
—重分配需要搜索和合并于相邻的空闲分区,若有

–优点:大部分分配是小尺寸时很有效;简单
–缺点:外部碎片;重分配慢;易产生很多没用的微小碎片。

-最差适配
在这里插入图片描述
–目的:避免太多的微小碎片
–要想实现最差分配,需要满足以下条件:
—按尺寸排列的空闲列表
—分配很快(获得最大的分区)
—重分配需要合并于相邻的空闲分区,若有,然后调整空闲块列表
–优点:假如分配时是中等尺寸效果最好
–缺点:重分配慢;外部碎片;易于破碎大的空闲块以至大分区不能被分割

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值