1、存储器管理信息科学与技术学院实验报告课程名称: 操作系统 实验项目: 存储器管理 实验地点: 博西105 指导教师: 乌兰图雅 日期: 2014.12.4 实验类型: 综合性实验 (验证性实验 综合性实验 设计性实验)专业: 12计算机 班级: 12计算机 姓名: 王晓佳 学号: 1214490030 一、实验目的及要求1、实验目的:1、设计模拟算法,调试程序,运行并分析结果,理解内存的动态存储管理方法和特点。2、按照要求书写实验报告。2、实验要求:编写程序实现动态分区存储管理方式的主存分配与回收。具体内容包括:首先确定主存空间分配表;然后采用最先适应算法完成主存空间的分配与回收;最后编写主函
2、数对所做工作进行测试二、实验仪器、设备或软件Windows7专业版 SQL server2008三、实验内容及原理#includestdio.h#includeiostream.htypedef struct int usetime;/该页从最近使用那一刻,到现在的时间 int time;/进入内存块的时间 int futime;/该页到将来最近一次使用的时间 int number;/页号 int sign;/0为空,1为有page;typedef struct page R10;/内存块儿 int n;RM;void getdate(RM *p) int i; coutp-n; cout页面
3、个数为20n; for(i=0;in;i+) p-Ri.sign=0; void FIFO(RM *p,int pagego,int n) int i,j,k=-2,max=0,m; double sum=0; cout是否缺页t页面走向t; for(j=0;jn;j+) cout内存块jt; for(i=0;in;i+) coutnn; for(j=0;jn;j+) if(p-Rj.sign=0) k=j; else if(p-Rj.number=pagegoi) k=-1; p-Rj.usetime-; break; if(k!=-1&k!=-2) p-Rk.number=pagegoi;
4、 p-Rk.sign=1; p-Rk.usetime=0; cout 是t; sum=sum+1; if(k=-1) cout 否t; if(k=-2) for(j=0;jn;j+) if(maxRj.usetime) max=p-Rj.usetime; m=j; p-Rm.number=pagegoi; p-Rm.usetime=0; cout 是t; sum=sum+1; coutt pagegoit; for(j=0;jn;j+) if(p-Rj.sign!=0) p-Rj.usetime+; coutt Rj.number; else coutt *; k=(-2); max=0; c
5、outnn缺页次数为:sumn; sum=sum/n*100; cout缺页率为:sum%nn; void OPT(RM *p,int pagego,int n) int i,j,k=-2,max=0,m,a; double sum=0; cout是否缺页t页面走向t; for(j=0;jn;j+) cout内存块jt; for(i=0;in;i+) coutnn; for(j=0;jn;j+) if(p-Rj.sign=0) k=j; else if(p-Rj.number=pagegoi) k=-1; break; if(k!=-1&k!=-2) p-Rk.number=pagegoi;
6、p-Rk.sign=1; cout 是t; sum=sum+1; if(k=-1) couti;j-) for(a=0;an;a+) if(pagegoj=p-Ra.number) p-Ra.futime=0; p-Ra.futime+; for(j=0;jn;j+) if(maxRj.futime) max=p-Rj.futime; m=j; p-Rm.number=pagegoi; cout 是t; sum=sum+1; coutt pagegoit; for(j=0;jn;j+) if(p-Rj.sign!=0) coutt Rj.number; else coutt *; k=(-2)
7、; max=0; coutnn缺页次数为:sumn; sum=sum/n*100; cout缺页率为:sum%nn; void LRU(RM *p,int pagego,int n)/该算法与先进先出类似 int i,j,k=-2,max=0,m; double sum=0; cout是否缺页t页面走向t; for(j=0;jn;j+) cout内存块jt; for(i=0;in;i+) coutnn; for(j=0;jn;j+) if(p-Rj.sign=0) k=j; else if(p-Rj.number=pagegoi) k=-1; p-Rj.usetime=0; break; if
8、(k!=-1&k!=-2) p-Rk.number=pagegoi; p-Rk.sign=1; p-Rk.usetime=0; cout 是t; sum=sum+1; if(k=-1) cout 否t; if(k=-2) for(j=0;jn;j+) if(maxRj.usetime) max=p-Rj.usetime; m=j; p-Rm.number=pagegoi; p-Rm.usetime=0; cout 是t; sum=sum+1; coutt pagegoit; for(j=0;jn;j+) if(p-Rj.sign!=0) p-Rj.usetime+; coutt Rj.numb
9、er; else coutt *; k=(-2); max=0; coutnn缺页次数为:sumn; sum=sum/n*100; cout缺页率为:sum%nn;int main() RM p; int k,i; int pagego20;/页面走向 getdate(&p); coutk; cout输入页面走向n; for(i=0;ipagegoi; cout先进先出(FIFO)n; cout-n; FIFO(&p,pagego,k); for(i=0;ip.n;i+) p.Ri.sign=0; cout最佳置换算法(OPT)n; cout-n; OPT(&p,pagego,k); for(
10、i=0;ip.n;i+) p.Ri.sign=0; cout最近最少使用算法(LRU)n; cout-n; LRU(&p,pagego,k); return 0;四、实验步骤(或过程)五、实验结论分析讨论:由于时间轮转法规定由各个准备就绪进程顺次轮流使用CPU,而且每一次使用时间一般规定为一定值当时间片结束时就强迫一个现行进程让出CPU ,轮转法实现较简单,而可以保证不会有进程长期得不到响应,缺点是无法照顾一些特殊进程,最先优先数算法为一个进程设置一个优先数CPU调度时每次选择就绪队列里优先数最大的,让他占用CPU。这种算法保证了不会有进程长期等待,也能照顾到特殊进程,缺点是每次需重新计算进程优先级数,占用较多资源,适用性能较好的分时系统。六、指导教师评语及成绩
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1