




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件学院操作系统实验报告实验题目:实验七、内存页面置换算法实验学号:201100300124日期:2013年05月31日班级:5班 姓名:韩俊晓Email:实验目的:加深对于存储管理的了解,掌握虚拟存储器的实现原理;观察和了解重要的页面置换算法和置换过程。练习模拟算法的编程技巧,锻炼分析试验数据的能力。实验要求:请在以上示例实验程序中补充“增强二次机会”等置换算法的模拟程序。输入不同的内存页面引用串和实存帧数,观察并分析其页面置换效果和性能,并将其与LRU和FIFO算法进行比较。改进以上示例实验程序,使之能够随机的产生内存页面引用串,以便能动态的观测各种置换算法的性能。硬件环境:实验室计算机软件环境:Ubuntu08.4Linux操作系统BASH_VERSION=3.2.33(1)-releasegcc version 4.1.2gedit 2.18.2OpenOffice 2.3 实验步骤:1.实验说明:1. 示例实验程序中模拟两种置换算法:LRU算法和FIFO算法2. 能对两种算法给定任意序列不同的页面引用串和任意帧实内存块数的组合测试,显示页置换的过程。3. 能统计和报告不同置换算法情况下依次淘汰的页号、缺页次数(页错误数)和缺页率。比较两种置换算法在给定条件下的优劣。4. 为了能方便的扩充页面置换算法,更好的描述置换过程,示例实验程序采用了C+语言用Replace类描述了置换算法及其属性。2.调试过程:1)建立vmrp.cc程序,将代码写到程序中;2)再建立以下名为vmrp.h的C语言头文件:#include #include #include using namespace std;class Replacepublic:Replace();Replace();void InitSpace(char * MethodName); /初始化页号记录void Report(void); / 报告算法执行情况void Fifo(void); /先进先出算法void Lru(void); /最近最旧未用算法void Clock(void); /时钟(二次机会)置换算法void Eclock(void); /增强二次机会置换算法void Lfu(void); /最不经常使用置换算法void Mfu(void); /最经常使用置换算法private:int * ReferencePage ; /存放要访问到的页号int * EliminatePage ; /存放淘汰页号int * PageFrames ; /存放当前正在实存中的页号int PageNumber; /访问页数int FrameNumber; /实存帧数int FaultNumber; /失败页数int * Referencebit;/引用位int * count;int * Modifybit;/修改位;3)建立以下项目管理文件Makefilehead = vmrp.hsrcs = vmrp.ccobjs = vmrp.oopts = -w -g -call: vmrpvmrp:$(objs)g+ $(objs) -o vmrpvmrp.o: $(srcs) $(head)g+ $(opts) $(srcs)clean:rm vmrp *.o4) 输入make命令编译连接生成可执行的vmrp程序$ gmakeg+ -g -c vmrp.cc vmrp.hg+ vmrp.o -o vmrp5) 执行程序实验代码:#include vmrp.hReplace:Replace()int i;/设定总得访问页数,并分配相应的引用页号和淘汰页号记录数组空间 cout PageNumber;/存放要访问到的页号 ReferencePage = new intsizeof(int) * PageNumber;/访问页数 EliminatePage = new intsizeof(int) * PageNumber;/存放淘汰页号 cout Please input reference page string :; for (i = 0; i ReferencePagei; cout FrameNumber;/实存帧数 PageFrames = new intsizeof(int) * FrameNumber;/存放当前正在实存中的页号 Referencebit=new intsizeof(int) * FrameNumber;/引用位 count=new intsizeof(int)*FrameNumber; Modifybit=new intsizeof(int)*FrameNumber;/修改位Replace:Replace()void Replace:InitSpace(char * MethodName) int i; cout endl MethodName endl; FaultNumber=0;/失败页数/引用还未开始,-1表示无引用页 for (i = 0; i PageNumber; i+) EliminatePagei = -1;/淘汰页号初始都设为-1 for(i = 0; i FrameNumber; i+) PageFramesi = -1;/存放当前正在实存中的页号 Referencebiti=0;/未被使用引用位设置为0 counti=0;/计数 Modifybiti=0;/修改位初始为0 /分析统计选择的算法对于当前输入的页面走向的性能void Replace:Report(void)/报告淘汰页顺序 cout endl Eliminate page:; for(int i=0; EliminatePagei!=-1; i+) cout EliminatePagei ;/报告缺页数和缺页率 cout endl Number of page faults = FaultNumber endl; cout setw(6) setprecision(3) ; cout Rate of page faults = 100*(float)FaultNumber/(float)PageNumber %endl;/最近最旧未用置换算法void Replace:Lru(void) int i,j,k,l,next; InitSpace(LRU);/初始化页号记录/循环装入引用页 for(k=0,l=0; k PageNumber; k+) /l为淘汰页的标记 next=ReferencePagek;/检测引用页当前是否已在实存 for (i=0; i0;j-) PageFramesj = PageFramesj-1; PageFrames0=next; break; if(PageFrames0 = next)/如果引用页已放栈顶,则为不缺页,报告当前内存页号 for(j=0; j=0) cout PageFramesj ; cout 0;j-) PageFramesj= PageFramesj-1; PageFrames0=next; /引用页放栈顶/报告当前实存中页号 for(j=0; j=0) cout PageFramesj =0) cout EliminatePagel+ endl; else cout endl; /分析统计选择的算法对于当前引用的页面走向的性能 Report();/先进先出置换算法void Replace:Fifo(void) int i,j,k,l,next;InitSpace(FIFO);/循环装入引用页 for(k=0,j=l=0; k PageNumber; k+) next=ReferencePagek;/如果引用页已在实存中,报告实存页号 for (i=0; iFrameNumber; i+) if(next=PageFramesi) break; if (iFrameNumber) for(i=0; iFrameNumber; i+) cout PageFramesi ; cout endl; continue;/ 继续引用下一页 /引用页不在实存中,缺页数加1 FaultNumber+;/最先入页号记入淘汰页数组 EliminatePagel= PageFramesj; PageFramesj=next;/引用页号放最先入页号处 j = (j+1)%FrameNumber;/最先入页号循环下移/报告当前实存页号和淘汰页号 for(i=0; i=0) cout PageFramesi =0) cout EliminatePagel+ endl; else cout endl; Report();/时钟(二次机会)置换算法void Replace:Clock(void) int j,i,k,l,next; InitSpace(Clock); for(k=0,j=l=0; k PageNumber; k+) next=ReferencePagek; for (i=0; iFrameNumber; i+)/检测引用页当前是否已在实存 if(next=PageFramesi) Referencebiti=1;/引用位设置为1 break; if (iFrameNumber) for(i=0; iFrameNumber; i+) cout PageFramesi ; cout endl; continue; if(Referencebitj=1)/如果引用位为1 Referencebitj=0;/在判断之后,重新设置成0 EliminatePagel=PageFramesj;/最先入页号记入淘汰页数组 PageFramesj=next; /引用页号放最先入页号处 Referencebitj=1;/引用位设置为1 FaultNumber+;/缺页数加1 j=(j+1)%FrameNumber;/最先入页号循环下移 for(i=0; i=0) cout PageFramesi =0) cout EliminatePagel+ endl; else cout endl; Report(); /增强二次机会置换算法void Replace:Eclock (void) int j,i,k,l,next; InitSpace(EClock); for(k=0,j=l=0; k PageNumber; k+) next=ReferencePagek; /循环装入引用页 for (i=0; iFrameNumber; i+)/检测引用页当前是否已在实存 if(next=PageFramesi) Referencebiti=1;/引用位设置为1 counti+;/如果被引用了两次,就把修改位设置成1 if(counti%2=0) Modifybiti=0;/修改位设置为0 else Modifybiti=1; break; if (iFrameNumber) for(i=0; iFrameNumber; i+) cout PageFramesi ; cout endl; continue; if(Referencebitj=1) Referencebitj=0; if(Modifybitj=1) Modifybitj=0; int min=10*Referencebitj+Modifybitj; int index=j; for(i=0;iFrameNumber;i+) if(10*Referencebiti+Modifybitimin) min=10*Referencebiti+Modifybiti; index=i; EliminatePagel=PageFramesindex; PageFramesindex=next; Referencebitindex=0; Modifybitindex=1; countindex=0; FaultNumber+;/引用页不在实存中,缺页数加1 j=(j+1)%FrameNumber;/最先入页号循环下移 for(i=0; i=0) cout PageFramesi =0) cout EliminatePagel+ endl; else cout endl; Report(); /最不经常使用置换算法void Replace:Lfu(void)int j,i,k,l,next; InitSpace(Lfu); for(k=0,j=l=0; k PageNumber; k+) next=ReferencePagek; for (i=0; iFrameNumber; i+) if(next=PageFramesi) counti+;/记录使用次数 break; if (iFrameNumber) for(i=0; iFrameNumber; i+) cout PageFramesi ; cout endl; continue; FaultNumber+; int min=count0; int index=0; for(i=0;iFrameNumber;i+) if(countimin) min=counti; index=i; EliminatePagel= PageFramesindex;/最不经常使用的页号记入淘汰页数组 PageFramesindex=next; countindex=1; for(i=0; i=0) cout PageFramesi =0) cout EliminatePagel+ endl; else
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高校教师资格证之《高等教育法规》练习题(一)附答案详解ab卷
- 2024自考专业(金融)考前冲刺练习带答案详解(突破训练)
- 2025年高校教师资格证之《高等教育法规》题库检测试卷及答案详解(必刷)
- 2025年广东金融学院单招《职业适应性测试》经典例题及答案详解(历年真题)
- 2024年安全员考试题库AB卷附答案详解
- 2024安全监察人员综合提升测试卷(重点)附答案详解
- 2025年教师资格模拟试题及参考答案详解【模拟题】
- 2025年山东东营市市属医疗卫生机构高层次人才招聘36人笔试备考题库及答案详解一套
- 2023年度银行岗位题库检测试题打印及答案详解【易错题】
- 2024-2025学年度执业兽医综合提升测试卷【原创题】附答案详解
- 新高考高中英语熟词生义485例(精校版)重点单词、短语辨析
- 斜视检查(斜视诊疗课件)
- 和安风电场电气设备定检及预防性试验技术规范
- 农产品食品安全评价技术 课件全套 模块1-8 走进农产品食品安全检测 - 油脂脂肪酸组成和溶剂残留检测
- (正式版)HGT 22820-2024 化工安全仪表系统工程设计规范
- 第二章 临床康复工程学基础
- (高清版)TDT 1075-2023 光伏发电站工程项目用地控制指标
- 《水生生物学桡足类》课件
- 《预算员培训二》课件
- 八年级劳动课下册教案
- 人工动静脉瘘狭窄查房
评论
0/150
提交评论