【存储管理——内存分配算法】

内存分配

分区分配算法主要有FF分配算法、BF分配算法、WF分配算法、buddy分配算法

FF分配

FF分配:First Fit ,首次适应算法,从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业。
若要满足FF算法,空闲分区表(空闲区链)中的空闲分区地址要从小到大进行排序。算法优先使用低地址部分空闲区。
优点:能够减少查找时间。
缺点:在低地址空间造成许多小的空闲区,在高地址空间保留了大的空闲区。

BF分配

BF分配:Best Fit,最佳适配算法,从全部空闲区中找到能满足作业要求且大小最小的空闲分区,
若要满足BF算法,空闲分区表(空闲区链)中的空闲区要按照从小到大的顺序进行排序,且从表头开始查找第一个满足要求的自由分区分配。
优点:使碎片最小化。
缺点:该算法保留了大的空闲区,但造成较多的小空闲区。

WF分配

WF分配:Worst Fit,最差适配算法,从全部空闲区中找到能满足作业要求且大小最大的空闲分区。
若要满足WF算法,需要将空闲区链中的空闲分区按从大到小进行排序,从表头开始查找第一个满足要求的自由分区分配。
优点:使空闲区表中的结点大小趋于均匀,适用于内存大小范围较窄的系统。减少了小的碎片产生。
缺点:保留了较小的空闲分区。

buddy分配

伙伴

这里给出伙伴的概念,满足以下三个条件的称为伙伴:
1)两个块大小相同;
2)两个块地址连续;
3)两个块必须是同一个大块中分离出来的;

解释

伙伴系统中可用内存块的大小为2k个字,L≤K≤U,其中2L表示分配的最小块的尺寸,2U表示分配的最大块的尺寸,通常2U是可供分配的整个内存的大小。
最初,可用于分配的整个空间被视为一个大小块为2U的块。
若请求的大小s满足2U-1 ≤ s ≤ 2U,则分配整个空间。否则,该块分成两个大小相等的伙伴,大小均为2U-1。
若有2U-2 < s ≤ 2U-1,则给该请求分配两个伙伴中的任何一个;否则,其中的一个伙伴又被分成两半,持续这一过程,直到产生大于等于s的最小块,并且分配给该请求。
在任何时候,伙伴系统中为所有大小为2i的“空洞”维护一个列表。空洞可通过对半分裂从i+1列表中移出,并且在i列表中产生两个大小为2i的伙伴。当i列表中的一对伙伴都变成未分配的块时,将他们从i列表中移出,合并为i+1列表中的一个块。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ImSev7en_1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值