页面置换算法模拟程序-附代码_第1页
页面置换算法模拟程序-附代码_第2页
页面置换算法模拟程序-附代码_第3页
页面置换算法模拟程序-附代码_第4页
页面置换算法模拟程序-附代码_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、合用标准目录1问题的提出21.1关于页面置换算法模拟程序问题的产生21.2任务解析.22需求解析23方案设计34整体设计44.1程序N-S图44.2主要的函数44.3主要流程图及代码.54.3.1FIFO(先进先出).54.3.2LRU(近来最久未使用).64.3.3OPT(最正确置换算法).84.4实现结果.115程序测试145.1设计测试数据.145.2测试结果及解析.15纲要随着计算机的普及人们的物质生活获取了极大的满足,人们在精神生活方面同样也需要文档大全合用标准提高,所以越来越多的人进行着各样各样的学习。操作系统是计算机授课中最重要的环节之一,也是计算机专业学生的一门重要的专业课程。

2、操作系统质量的利害,直接影响整个计算机系统的性能和用户对计算机的使用。一个精心设计的操作系统能极大地扩大计算机系统的功能,充发散挥系统中各样设备的使用效率,提高系统工作的可靠性。由于操作系统涉及计算机系统中各样软硬件资源的管理,内容比较繁琐,拥有很强的实践性。要学好这门课程,必定把理论与实践亲密结合,才能获取较好的学习收效.本课程设计是学生学习完操作系统教程课程后,进行的一次全面的综合训练,经过课程设计,让学生更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的着手能力。熟悉页面置换算法及其实现,引入计算机系统性能议论方法的看法。要点词:编制页面置换算法模拟程

3、序、打印页面、FIFO页面算法、LRU页面置换算法、OPT页面置换算法。文档大全合用标准前言1问题的提出1.1关于页面置换算法模拟程序问题的产生在各样储藏器管理方式中,有一个共同的特点,即它们都要求将一个作业全部装入内存方能运行,但是有两种情况:(1)有的作业很大,不能够全部装入内存,致使作业无法运行;(2)有大量作业要求运行,但内存容量不足以容纳全部这些作业。而虚假内存技术正式从逻辑上扩大内存容量,将会解决以上两个问题。从内存中调出一页程序或数据送磁盘的对换区中,平时,把选择换出的页面的算法称为页面置换算法(ReplacementAlgorithms)。进而页面置换算法模拟程序能客观的将其工

4、作原理展现在我们眼前。1.2任务解析第一,定义宏变量,设置所占最大内存长度。编写以时间为种子,初始化随即发生器。进行相关页面输入程序的编写以及页面的打印。今后,搜寻近来近来最久未使用的页面、记录当前内存块中页面离下次使用间隔长度等相关程序的代码编写。最后,进行)FIFO、LRU、OPT三种算法的编写。2需求解析1.用随机数方法产生页面走向,页面走向长度为L。依照页面走向,分别采用FIFO和LRU算法进行页面置换,统计缺页率;为简化操作,在裁汰一页时,只将该页在页表中抹去,而不再判断它可否被改写过,也不将它写回到辅存。假定可用内存块和页表长度(作业的页面数)分别为m和k,初始时,作业页面都不在内

5、存。随机数产生程序:inti,j;j=time(NULL);/取时钟时间srand(j);/以时钟时间x为种子,初始化随机数发生器文档大全合用标准cout输出随机数:;for(i=0;im;i+)pi.num=rand()%10+1;/产生1到10之间的随即数放到数组p中pi.time=0;coutpi.num;上述随机数发生函数产生的随机数为0.01.0,稍另变化即可获取0n1之间的随机数。程序开始时,对付变量Seed(实型)赋初值。依照页面置换算法的理论操作及要求,第一要进行页面长度的确定,定义结构体用以储蓄数据,进行主界面代码及FIFO、LRU、OPT页面置换算法代码的编写。3方案设计第

6、一,定义宏变量,设置所占最大内存长度。编写以时间为种子,初始化随即发生器。进行相关页面输入程序的编写以及页面的打印。其次,搜寻近来近来最久未使用的页面、记录当前内存块中页面离下次使用间隔长度等相关程序的代码编写。最后,进行FIFO、LRU、OPT三种算法的编写。程序运行平台VC+6.0详尽操作以下:在VC+6.0的环境下准备用时钟函数调用库函数(#include)、取时钟时间并存入t调用库函数(t=time(NULL))、用时间t初始化随机数发生器调用库函数(srand(t)返回一个110之间的随机数(x=rand()%10+1)。编写三种算法。文档大全合用标准4整体设计4.1程序N-S图程序

7、开始输入选择项(进行判断)页面存在进入下一部操作此项不存在输入要输出的结果输出结果结束4.2主要的函数Input(intm,PropL)(打印页面走向状态);voidprint(Pro*page1)(打印当前的页面);intSearch(inte,Pro*page1)(搜寻内存块中与e同样的块号);intMax(Pro*page1)(搜寻近来最长未使用的页面);intCount(Pro*page1,inti,intt,PropL)(记录当前内存块中页面离下次使用间隔长度);intmain()(主函数);.随机数发生器#include#include/准备用时钟函数调用库函数t=time(NUL

8、L);/取时钟时间并存入t调用库函数srand(t);/用时间t初始化随机数发生器调用库函数x=rand()%10+1;/返回一个110之间的随机数文档大全合用标准4.3主要流程图及代码4.3.1FIFO(先进先出)设计原理:需要进行页面置换,即把内存中装入最早的那个页面裁汰,换入当前的页面。算法流程图Yi+代码:if(c=1)/FIFOn=0;coutendl;开始页面走向存入数组p中,内存块用page表示初始化为0当前p中第i个元素可否已在内存NPage可否有空NY把pi的内容直接把page中最先装入的页装入最上面一个面置换出去.i+空内存块,i+输出当前内存块状态结束图4-1FIFO算法

9、流程图页面置换*文档大全合用标准coutendl;coutFIFO算法页面置换情况以下:endl;coutendl;cout*endl;while(i=0)/当前页面在内存中coutpi.num;/输出当前页pi.numcout不缺页endl;i+;/i加1else/当前页不在内存中if(t=M)t=0;elsen+;/缺页次数加1paget.num=pi.num;/把当前页面放入内存中coutpi.num;print(page);/打印当前页面t+;/下一个内存块i+;/指向下一个页面cout缺页次数:n缺页率:n/mendl;4.3.2LRU(近来最久未使用)设计原理:当需要裁汰某一页时,

10、选择离当前时间近来的一段时间内最久没有使用过的页先裁汰该算法的主要出发点是,若是某页被接见了,则它可能马上还要被接见。也许反过来说若是某页很长时间未被接见,则它在近来一段时间也不会被接见。算法流程图:开始文档大全合用标准页面走向存入数组p中,内存块用page表示初始化为0Y当前p中第i个元i+素可否已在内存NPage可否有空YN把page中近来最久未使把pi的内容直接用的页面置换出去.i+装入最上面一个空内存块,i+输出当前内存块状态结束图4-2LRU算法流程图代码:if(c=2)/LRU页面置换n=0;cout*endl;coutendl;coutLRU算法页面置换情况以下:endl;cou

11、tendl;cout*endl;文档大全合用标准while(i=0)/若是已在内存块中paget.time=0;/把与它同样的内存块的时间置0for(a=0;aM;a+)if(a!=t)pagea.time+;/其他的时间加1coutpi.num;cout不缺页endl;else/若是不在内存块中n+;/缺页次数加1t=Max(page);/返回近来最久未使用的块号赋值给tpaget.num=pi.num;/进行代替paget.time=0;/代替后时间置为0coutpi.num;print(page);for(a=0;aM;a+)if(a!=t)pagea.time+;/其他的时间加1i+;

12、cout缺页次数:n缺页率:n/mendl;4.3.3OPT(最正确置换算法)设计原理:需要进行页面置换,把内存中今后一段时间都不使用或是使用时间隔现在最远的页面换出。文档大全合用标准流程图:开始页面走向存入数组p中,内存块用page表示初始化为0当前p中第i个元i+Y素可否已在内存NPage可否有空YN把page中今后一段时间都不使用或是使用时间隔现在最远的换出.i+把pi的内容直接装入最上面一个空内存块,i+输出当前内存块状态结束图4-3OPT流程图代码:if(c=3)/OPT页面置换n=0;cout*endl;文档大全合用标准coutendl;coutOPT算法置换情况以下:endl;c

13、outendl;cout*endl;while(i=0)/若是已在内存块中coutpi.num;cout不缺页endl;i+;else/若是不在内存块中inta=0;for(t=0;tM;t+)if(paget.num=0)a+;/记录空的内存块数if(a!=0)/有空内存块intq=M;for(t=0;tt)q=t;/把空内存块中块号最小的找出来pageq.num=pi.num;n+;coutpi.num;print(page);i+;elseinttemp=0,s;for(t=0;tM;t+)/搜寻内存块中下次使用离现在最久的页面文档大全合用标准if(tempCount(page,i,t,

14、p)temp=Count(page,i,t,p);s=t;/把找到的块号赋给spages.num=pi.num;n+;coutpi.num;print(page);i+;cout缺页次数:n缺页率:n/mendl;4.4实现结果程序在运行的情况下,进入主界面输入菜单,如图3-3所示:输入14:图4-5输入14后的输出图输入25:图5-6输入数据25后输出图输入数据18:图5-7输入数据18后的输出图输入数据:文档大全合用标准图5-8输出图选1,进入FIFO页面置换:图5-9FIFO的输出图选2,进入LRU页面置换:文档大全合用标准图5-10LRU的输出图输入3,进入OPT页面置换:文档大全合用

15、标准图5-11OPT的输出图5程序测试5.1设计测试数据A142518;264;123文档大全合用标准5.2测试结果及解析1)测试A结果及解析进入主菜单后输入14、25,显示输入不满足要求。输入18显示相关信息;输入2、6不满足要求,输入4显示出相关信息。2)测试结果及解析显示出FIFO页面置换算法的缺页信息及缺页率。3)测试C结果及解析显示出LRU页面置换算法的缺页信息及缺页率。4)测试D结果及解析显示出OPT页面置换算法的缺页信息及缺页率文档大全合用标准结论经过此次课程设计,不但让我认识了页面置换算法,开始我一味的进行调试,迫切的想侥幸调试出来,但由于没有进行深入的考虑,我调试了许久都没没

16、有成功,我认真的解析题目,解析资料,在原由的基础上我进行了改正,我最后还是调试成功了,还是经过了一翻努力,此次操作系统实习,不但让我对操作系统这门课程有了更深入的研究、对很多重要的看法有了牢固和掌握。经过努力,三个页面置换算法程序都已经完成,此时现在,我心里多了些成就感。诚然自己所做的很少也不够完满,但毕竟也是努力的结果。主要有以下几点收获:1.经过对上网和看书查阅相关资料,使自己对VC+语言的基本框架有新的认识,加深了对可视化程序的认识。在使用VC+语言来实现功能时,不像过去用的其他语言,它比较精练,更简单理解,合用性很强。先进先出页面置换和LRU以及OPT算法各有特点,但是实践起来却很大,

17、使自己对页面置换算法有了新的认识。一周半的课程设计就要结束了,不仅对专业知识有了更深的理解,更使的自己认识到实践的重要性,理论、实践相结合才能达到很好的学习收效,特别是程序语言的学习。道谢文档大全合用标准本次课程设计能顺利完成,感谢学校的大力支持,感谢数学与计算机学院为我们供应实练的机遇,感谢老师的认真教育。此次的课程设计收获很多,诚然经过了一段漫长而又悲伤的过程,但是自己还是完成了,这是与自己的努力是分不开的,但是自己在调试过程中间遇到的一些问题,自己依旧不懂,是在同学、老师的帮助下完成的,在这里还要再次对他们的付出表示崇高的敬意。参照文件面向对象程序设计与VisualC+6.0教程陈天华编

18、著文档大全合用标准C程序设计(第三版)谭浩强编著C+入门经典面向对象程序设计与C+实现刘晋萍编著计算机操作系统教程徐甲同样编著操作系统罗宇等编著操作系统实验教程张丽芬,刘利雄,王全玉编著计算机操作系统梁红兵、哲风屏、汤子瀛编著操作系统教程陈向群、杨芙清编著代码:#include#include#include#include#defineL20/页面走向长度最大为20intM;/内存块structPro/定义一个结构体intnum,time;Input(intm,PropL)/打印页面走向状态cout请输入实质页面走向长度L(15=Lm;if(m20|m15)cout实质页面长度须在1520之

19、间;请重新输入L:;elsebreak;while(1);inti,j;j=time(NULL);/取时钟时间srand(j);/以时钟时间x为种子,初始化随机数发生器cout输出随机数:;for(i=0;im;i+)文档大全合用标准pi.num=rand()%10+1;/产生1到10之间的随即数放到数组p中pi.time=0;coutpi.num;coutendl;returnm;voidprint(Pro*page1)/打印当前的页面Pro*page=newProM;page=page1;for(inti=0;iM;i+)coutpagei.num;coutendl;intSearch(i

20、nte,Pro*page1)/搜寻内存块中与e同样的块号Pro*page=newProM;page=page1;for(inti=0;iM;i+)if(e=pagei.num)returni;/返回i值return-1;intMax(Pro*page1)/搜寻近来最长未使用的页面Pro*page=newProM;page=page1;inte=page0.time,i=0;while(iM)/找出离现在时间最长的页面if(epagei.time)e=pagei.time;i+;for(i=0;iM;i+)if(e=pagei.time)returni;/找到离现在时间最长的页面返回其块号ret

21、urn-1;intCount(Pro*page1,inti,intt,PropL)/记录当前内存块中页面离下次使用间隔长度Pro*page=newProM;文档大全合用标准page=page1;intcount=0;for(intj=i;jL;j+)if(paget.num=pj.num)break;/当前页面再次被接见时循环结束elsecount+;/否则count+1returncount;/返回count的值intmain()intc;intm=0,t=0;floatn=0;PropL;m=Input(m,p);/调用input函数,返回m值coutM;if(M5|M3)cout内存块m

22、须在35之间,请重新输入m:;elsebreak;while(1);Pro*page=newProM;dofor(inti=0;iM;i+)/初试化页面基本情况pagei.num=0;pagei.time=m-1-i;i=0;cout1:FIFO页面置换endl;cout2:LRU页面置换endl;cout3:OPT页面置换endl;cout按其他键结束程序;c;文档大全合用标准system(cls);if(c=1)/FIFO页面置换n=0;cout*endl;coutendl;coutFIFO算法页面置换情况以下:endl;coutendl;cout*endl;while(i=0)/当前页面

23、在内存中coutpi.num;/输出当前页pi.numcout不缺页endl;i+;/i加1else/当前页不在内存中if(t=M)t=0;elsen+;/缺页次数加1paget.num=pi.num;/把当前页面放入内存中coutpi.num;print(page);/打印当前页面t+;/下一个内存块i+;/指向下一个页面cout缺页次数:n缺页率:n/mendl;if(c=2)/LRU页面置换n=0;cout*endl;coutendl;coutLRU算法页面置换情况以下:endl;coutendl;cout*endl;while(i=0)/若是已在内存块中paget.time=0;/把与它同样

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论