使用一个一维数组来模拟内存储空间,建立内存块来记录内存分配使用情况,通过随机产生进程及其所需要的内存来模拟真实的进程。通过给进程分配内存及回收来实现对动态不等长存储管理方法。
代码
#include "math.h"
#include "stdio.h"
#include "stdlib.h"
typedef struct MEMORY_BLOCK
{
int name;//进程名称
int address;//地址空间
int length;
int flag;//判断是否被占用 1为被占用 ,0为空闲
MEMORY_BLOCK *next;
}MEMORY_BLOCK;
int allocation(MEMORY_BLOCK *Header,int name,int time);//使用
int reclaim(int processname, MEMORY_BLOCK *Header);//回收
int selectRecycle(int processname, MEMORY_BLOCK *Header);//选择
int main()
{
#define NUM 10 //定义了10个进程
int time,i;
MEMORY_BLOCK *Header,*t;
Header=new MEMORY_BLOCK; //初始化存储空间
Header->name=-1;
Header->address=0;
Header->length=100;
Header->flag=0;
Header->next=NULL;
srand(100);
for(i=0;i<NUM;i++)
{
time=rand()%20; // 随机产生0~19的整数
allocation(Header,i,time);
}
t=Header;
while(t!=NULL)
{
printf("process name %d, address=%d, length=%d,flag=%d\n",t->name,t