logo资料库

虚拟存储器管理——模拟内存分配与回收实验算法(c语言).docx

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
虚拟存储器管理——模拟内存分配与回收
虚拟存储器管理——模拟内存分配与回收 一、实验要求 理解内存分配原理,特别是以页面为单位的虚拟内存分配方法。模拟存储管理中内存空 间的管理和分配内存空间的管理分为固定分区管理方式,可变分区管理方式,页式存储管理, 段式存储管理。 二、实验内容 源程序代码部分: #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)
if(k==-1||free_table[i].length=n) { printf("无表目填写已分分区,错误\n"); if(free_table[k].flag==0) free_table[k].flag=1; free_table[k].length=free_table[k].length+xk; return; else { } } else used_table[i].address=ad; used_table[i].length=xk; used_table[i].flag=J; } return; } reclaim(J) char J;
{ 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
分享到:
收藏