目录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(最佳置换算法)................................................................................................................94.4实现结果.............................................................................................................................................115.程序测试................................................................................................................................................155.1设计测试数据....................................................................................................................................155.2测试结果及分析................................................................................................................................16摘要随着计算机的普及人们的物质生活得到了极大的满足,人们在精神生活方面同样也需要页面置换算法模拟程序提高,所以越来越多的人进行着各种各样的学习。操作系统是计算机教学中最重要的环节之一,也是计算机专业学生的一门重要的专业课程。操作系统质量的好坏,直接影响整个计算机系统的性能和用户对计算机的使用。一个精心设计的操作系统能极大地扩充计算机系统的功能,充分发挥系统中各种设备的使用效率,提高系统工作的可靠性。由于操作系统涉及计算机系统中各种软硬件资源的管理,内容比较繁琐,具有很强的实践性。要学好这门课程,必须把理论与实践紧密结合,才能取得较好的学习效果.本课程设计是学生学习完《操作系统教程》课程后,进行的一次全面的综合训练,通过课程设计,让学生更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。熟悉页面置换算法及其实现,引入计算机系统性能评价方法的概念。关键词:编制页面置换算法模拟程序、打印页面、FIFO页面算法、LRU页面置换算法、OPT页面置换算法。页面置换算法模拟程序引言1.问题的提出1.1关于页面置换算法模拟程序问题的产生在各种存储器管理方式中,有一个共同的特点,即它们都要求将一个作业全部装入内存方能运行,但是有两种情况:(1)有的作业很大,不能全部装入内存,致使作业无法运行;(2)有大量作业要求运行,但内存容量不足以容纳所有这些作业。而虚拟内存技术正式从逻辑上扩充内存容量,将会解决以上两个问题。从内存中调出一页程序或数据送磁盘的对换区中,通常,把选择换出的页面的算法称为页面置换算法(Page-ReplacementAlgorithms)。进而页面置换算法模拟程序能客观的将其工作原理展现在我们面前。1.2任务分析首先,定义宏变量,设置所占最大内存长度。编辑以时间为种子,初始化随即发生器。进行相关页面输入程序的编写以及页面的打印。尔后,寻找最近最近最久未使用的页面、记录当前内存块中页面离下次使用间隔长度等相关程序的代码编写。最后,进行)FIFO、LRU、OPT三种算法的编写。2.需求分析1.用随机数方法产生页面走向,页面走向长度为L。2.根据页面走向,分别采用FIFO和LRU算法进行页面置换,统计缺页率;为简化操作,在淘汰一页时,只将该页在页表中抹去,而不再判断它是否被改写过,也不将它写回到辅存。3.假定可用内存块和页表长度(作业的页面数)分别为m和k,初始时,作业页面都不在内存。随机数产生程序:inti,j;页面置换算法模拟程序j=time(NULL);//取时钟时间srand(j);//以时钟时间x为种子,初始化随机数发生器cout输出随机数:;for(i=0;im;i++){p[i].num=rand()%10+1;//产生1到10之间的随即数放到数组p中p[i].time=0;coutp[i].num;}上述随机数发生函数产生的随机数为0.0~1.0,稍另变化就可得到0~n1之间的随机数。程序开始时,应对变量Seed(实型)赋初值。根据页面置换算法的理论操作及要求,首先要进行页面长度的确定,定义结构体用以储存数据,进行主界面代码及FIFO、LRU、OPT页面置换算法代码的编写。3.方案设计首先,定义宏变量,设置所占最大内存长度。编辑以时间为种子,初始化随即发生器。进行相关页面输入程序的编写以及页面的打印。其次,寻找最近最近最久未使用的页面、记录当前内存块中页面离下次使用间隔长度等相关程序的代码编写。最后,进行FIFO、LRU、OPT三种算法的编写。.程序运行平台VC++6.0具体操作如下:在VC++6.0的环境下准备用时钟函数调用库函数(#includetime.h)、取时钟时间并存入t调用库函数(t=time(NULL))、用时间t初始化随机数发生器调用库函数(srand(t)返回一个1~10之间的随机数(x=rand()%10+1)。编写三种算法。页面置换算法模拟程序4.总体设计4.1程序N-S图程序开始输入选择项(进行判断)页面存在进入下一部操作此项不存在输入要输出的结果输出结果结束4.2主要的函数Input(intm,Prop[L])(打印页面走向状态);voidprint(Pro*page1)(打印当前的页面);intSearch(inte,Pro*page1)(寻找内存块中与e相同的块号);intMax(Pro*page1)(寻找最近最长未使用的页面);intCount(Pro*page1,inti,intt,Prop[L])(记录当前内存块中页面离下次使用间隔长度);intmain()(主函数);.随机数发生器#includestdlib.h#includetime.h//准备用时钟函数调用库函数t=time(NULL);//取时钟时间并存入t调用库函数srand(t);//用时间t初始化随机数发生器调用库函数x=rand()%10+1;//返回一个1~10之间的随机数页面置换算法模拟程序4.3主要流程图及代码4.3.1FIFO(先进先出)设计原理:需要进行页面置换,即把内存中装入最早的那个页面淘汰,换入当前的页面。算法流程图YNNY图4-1FIFO算法流程图代码:if(c==1)//FIFO页面置换{n=0;开始页面走向存入数组p[]中,内存块用page[]表示初始化为0当前p[]中第i个元素是否已在内存中Page[]是否有空把page[]中最先装入的页面置换出去.i++把p[i]的内容直接装入最上面一个空内存块,i++输出当前内存块状态结束i++页面置换算法模拟程序cout******************************************endl;coutendl;coutFIFO算法页面置换情况如下:endl;coutendl;cout******************************************endl;while(im){if(Search(p[i].num,page)=0)//当前页面在内存中{coutp[i].num;//输出当前页p[i].numcout不缺页endl;i++;//i加1}else//当前页不在内存中{if(t==M)t=0;else{n++;//缺页次数加1page[t].num=p[i].num;//把当前页面放入内存中coutp[i].num;print(page);//打印当前页面t++;//下一个内存块i++;//指向