1 / 7
文档名称:

实验..可变分区内存分配首次适应算法模拟.doc

格式:doc   页数:7页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

实验..可变分区内存分配首次适应算法模拟.doc

上传人:2830622664 2015/9/19 文件大小:0 KB

下载得到文件列表

实验..可变分区内存分配首次适应算法模拟.doc

文档介绍

文档介绍:实验可变分区内存分配首次适应算法模拟
一、实验目的:
模拟内存分配, 了解并掌握动态分区分配中所用的数据结构、分区分配算法,深刻理解首次适应内存分配算法。
二、实验内容:
#include <>
#include <>
#include <>
int const total= 200 ; //内存总数
int const beginaddress = 20;//初次分配起始地址
struct Block
{
int addr; //块的起始地址
int size; // 块的大小
int flag; //块的分配状态 1:代表已分配 0:代表未分配;
}block[100];
int count=0; //块的个数,初值为0,分配一个则加1,减少一个则减1
void display() //显示所有块的模块
{
int i;
printf(" 目前内存情况\n");
printf("-------------------------------------------------------------------------------- \n");
printf(" 块号起始地址大小分配状态\n");
for(i=1;i<=count;i++)
{
printf(" %d %d %d ",i,block[i].addr,block[i].size);
if (block[i].flag==0)
printf("未分配\n");
else
printf("已分配\n");
}
printf("-------------------------------------------------------------------------------- \n");
}
void jinchengFirstEnter() //首次初始化分配模块
{

printf("内存总数为%d 第一次分配从%d 开始\n",total,beginaddress);
int i=1;
int size;
int geshu;
printf("请输入要初次调入内存的进程的个数:");
scanf("%d",&geshu);
while(i<=geshu)
{
printf("请输入第%d个进程的大小:",i);
scanf("%d",&size);
count++;
if (count==1)
{block[count].addr=beginaddress ;}
else
{ block[count].addr=block[count-1].addr+block[count-1].size;}
block[count].size=size;
block[count].flag=1;
i++;

}
count++;
block[count].addr=block[count-1].addr+block[count-1].size;
block[count].flag=0;
block[count].size=total-