- 12
- 0
- 约6千字
- 约 14页
- 2018-07-04 发布于河南
- 举报
实验报告 可变分区 主存分配回收
操作系统实验报告设计题目在可变分区管理方式下采用最先适应算法实现主存分配和实现主存回收一、设计内容主存储器空间的分配和回收。二、设计目的一个好的计算机系统不仅要有一个足够容量的、存取速度高的、稳定可靠的主存储器,而且要能合理地分配和使用这些存储空间。当用户提出申请存储器空间时,存储管理必须根据申请者的要求,按一定的策略分析主存空间的使用情况,找出足够的空闲区域分配给申请者。当作业撤离或主动归还主存资源时,则存储管理要收回作业占用的主存空间或归还部分主存空间。主存的分配和回收的实现虽与主存储器的管理方式有关的,通过本实习帮助学生理解在不同的存储管理方式下应怎样实现主存空间的分配和回收。三、设计过程数据结构设计#define m 10#define n 10#define Q 1024 struct free { int ad; int len; char state; }fr[m]; struct use { int ad; int len; char state; }us[10]; struct free0 { int ad; int len; char state; }f0[1];2、算法设计void creatf()//空闲分区表初始化{int i; for(i=0;im;i++) { fr[i].ad=0; fr[i].len=0; fr[i].state=M; } }void insertu(int i){ int j,p; p=0; printf(\n请输入第%d个作业的长度:\n,i); scanf(%d,us[i].len); us[i].ad=0; us[i].state=U; j=0; p=0; if(fr[0].ad==0) printf(\n 所有空闲区已经全部分配完毕!\n); while(fr[j].state!=Mp==0) { if( us[i].lenfr[j].len) { us[i].ad=fr[j].ad; fr[j].ad=us[i].len+fr[j].ad; fr[j].len=fr[j].len-us[i].len; p=1; break; } if(us[i].len==fr[j].len) { fr[j].ad=0; fr[j].len=0; fr[j].state=M; sort1(); p=1; break; } j++; } if(p==0) { us[i].state=N; printf(\n没有适当的空间可以插入!\n); } if(p!=0) { printf(\n第%d个作业分配空间后,空闲表为:\n,i); disp(); }}void sort(){ int i,q,j; i=0; q=0; if(fr[0].ad!=0) { do { if(f0[0].adfr[i].ad) i=i+1; else q=1; }while(fr[i].state!=Mq==0); for(j=m-1;ji;j--) { fr[j].ad=fr[j-1].ad; fr[j].len=fr[j-1].len; fr[j].state=fr[j-1].state; } fr[i].ad=f0[0].ad; fr[i].len=f0[0].len; fr[i].state=f0[0].state; } if(fr[0].ad==0) { fr[0].ad=f0[0].ad; fr[0].len=f0[0].len;
原创力文档

文档评论(0)