虚拟存储器管理——模拟内存分配与回收
一、实验要求
理解内存分配原理,特别是以页面为单位的虚拟内存分配方法。模拟存储管理中内存空
间的管理和分配内存空间的管理分为固定分区管理方式,可变分区管理方式,页式存储管理,
段式存储管理。
二、实验内容
源程序代码部分:
#include "malloc.h"
#include "stdio.h"
#include "iostream.h"
#include "stdlib.h"
#define n 10
#define m 10 #define minisize 100
struct
{
float address;
float length;
int flag;
}used_table[n];
struct
{
float address;
float length;
int flag;
}free_table[m];
allocate(J,xk)
char J;
float xk;
{
int i,k;
float ad;
k=-1;
for(i=0;i=xk&&free_table[i].flag==1)
{
int i,k,j,s,t;
float S,L;
s=0;
while((used_table[s].flag!=J||used_table[s].flag==0)&&s=n)
{
printf("找不到该作业\n");
return;
}
used_table[s].flag=0;
S=used_table[s].address;
L=used_table[s].length;
j=-1;k=-1;i=0;
while(i=m)
{
printf("主存空闲表没有空间,回收空间失败\n");
used_table[s].flag=J;
return;
}
free_table[t].address=S;
free_table[t].length=L;
free_table[t].flag=1;
}
return;
}
main( )
{
int i,a;
float xk;
char J;
free_table[0].address=10240;
free_table[0].length=102400;
free_table[0].flag=1;
for(i=1;i
for(i=0;i