内存分配管理机制的实现,可变分区机制下最先适应分配机制C语言(首次适应算法)

**

内存分配管理机制的实现(C语言)

**
算法:
首先为内存划分块大小,我们以划分五块为例,然后为作业定义一个大小S,让作业大小与内存中的每个块大小ai进行比较,第一个满足的S<=ai的内存块即为装入的内存块,装入后的内存块ai=ai-S。
设定一个flag,初值为0,当有内存块满足作业装入的时候flag<=1,若flag=0则输出无匹配的内存块,若flag=1则输出分配作业后内存各块的大小。
代码实现:

#include <stdio.h>
#include <stdlib.h>
#define N 5
int main()
{
    printf("可变分区机制下最先适应分配机制!\n");
    int i;
    int a[N];
    int work;
    for(i=0;i<5;i++){
        printf("请输入第%d个分区大小:\n",i+1);
        scanf("%d",&a[i]);
    }
    for(i=0;i<5;i++){
        printf("第%d块内存大小为%d\n",i+1,a[i]);
    }
    printf("请输入作业大小:");
    scanf("%d",&work);
    int flag=0;
    for(i=0;i<5;i++){
        if(work<=a[i]){
            printf("将第%d块内存分配给作业。\n",i+1);
            a[i]=a[i]-work;
            flag=1;
            break;
        }
    }
    if(flag==0){
        printf("没有匹配的内存块\n");
    }else{
        for(i=0;i<5;i++){
        printf("第%d块内存大小为%d\n",i+1,a[i]);
    }
    }


    return 0;
}

程序运行截图:
作业满足内存分配(当前存在某个内存块的大小大于等于作业的大小)
作业满足内存分配
作业不满足分配(当前作业大于任意一块内存的大小)
作业不满足内存分配

代码逻辑比较简单,在此就不在过多的赘述。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值