**
内存分配管理机制的实现(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;
}
程序运行截图:
作业满足内存分配(当前存在某个内存块的大小大于等于作业的大小)
作业不满足分配(当前作业大于任意一块内存的大小)
代码逻辑比较简单,在此就不在过多的赘述。