资源预览内容
第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
亲,该文档总共5页全部预览完了,如果喜欢就下载吧!
资源描述
学 号 专 业 姓 名 实验日期 教师签字 成 绩实 验 报 告【实验名称】采用可变式分区管理,使用首次获最佳适应算法实现内存分配与回收 【实验目的与原理】1、理解首次获最佳适应算法的内涵,并熟练掌握该算法。2、学会可变式分区管理的原理是即在处理作业过程中建立分区,使分区大小正好适合作业的需要,并且分区个数是可以调整的。3、当有一个新作业要求装入主存时,必须查空闲区说明表,从中找出一个足够大的空闲区没有时应将空闲区一分为二。为了便于快速查找,要不断地对表格进行紧缩,即让“空表目 ”项留在表的后部。4、当一个作业执行完成时,作业所占用的分区应归还给系统。作业的释放区与空闲区的邻接分以下四种情况考虑: 释 放区下邻(低地址邻接)空闲区; 释 放区上邻(高地址邻接)空闲区 释 放区上下都与空闲区邻接; 释 放区与空闲区不邻接。【实验内容】#include#include#includeusing namespace std;const int MAXJOB=100;/定义表最大记录数typedef struct nodeint front;int length;char data20;job;job freesMAXJOB;/定义空闲区表int free_quantity;job occupysMAXJOB;/定义已分配区表int occupy_quantity;/初始化函数void initial()int i;for(i=0;ifname;if(fp=fopen(fname,r)=NULL)coutjob_name;cinjob_length;flag=0;for(i=0;i=job_length)/如果空闲空间 I的长度作业长度flag=1; /空闲标志位就置 1if(flag=0)cout=job_length)t=1;i+;/如果空闲空间 I的长度不大于作业长度,I 加一,判断下一个空间i-;occupysoccupy_quantity.front=freesi.front;strcpy(occupysoccupy_quantity.data,job_name);occupysoccupy_quantity.length=job_length;occupy_quantity+; if(freesi.lengthjob_length)/如果空间的长度大于作业的长度,freesi.front+=job_length;freesi.length-=job_length;elsefor(j=i;jjob_name;flag=-1;for(i=0;ichioce;switch(chioce)case 1:assign();break;case 2:cancel();break;case 3:show();break;case 0:flag=0;break;default:cout选择错误!endl;实验结果显示:【实验小结】本实验难度在两个方面,一是首次最佳适应算法 assign(),这里我用的是结构体数组来存储空闲分区;二是对已分配分区的释放,这里同样采取结构体数组来存储已分配分区,用 cancle()函数来实现。为了更好的实现分配和释放功能,我用 sort()函数对空闲分区进行了排序。另外我还用了文件操作来读取空闲分区表,即文件 D:1.txt,以对文件操作复习,颇有收获。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号