欢迎来到天天文库
浏览记录
ID:30846507
大小:318.00 KB
页数:15页
时间:2019-01-04
《计算机操作系统页面置换算法的实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、题目5页面置换算法的实现5.1题目的主要研究内容及预期达到的目标(1)该程序模拟操作系统常用的页面置换算法;A、最佳置换算法(OPT)B、先进先出置换算法(FIFO)C、最近最久未使用置换算法(LRU)(2)理解页面置换算法相关内容;(3)掌握页面置换算法主要流程;(4)拿握常用页面置换算法的实现过程。5.2题目研究的工作基础或实验条件(1)硬件环境:装有Linux操作系统(虚拟机)的计算机一台。(2)软件环境:vim编辑器、VisualC++。5.3设计思想(1)页面的随机生成使用mnd()函数随机产
2、生页面号,用数组装入页面号,模拟页面调入内存中发牛页面置换的过程。整个过程,都是使用数组来实现每个算法,模拟队列,模拟堆栈的功能,实现每一个置换算法。(2)先进先出(FIFO)置换算法的思路该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。该算法实现简单,只需把一个进程已调入内存的页面,按照先后次序连接成一个队列,并设置一个替换指针,使它总指向最老的页面。(3)最近久未使用(LRU)置换算法的思路最近久未使用置换算法的替换规则,是根据页面调入内存后的使用情况來进行决策的。该算法
3、赋予每个页面一个访问字段,用來记录一个页面自上次被访问以来所经历的吋间,当需淘汰一个页面的时候选择现有页面屮其吋间值最大的进行淘汰。(4)最佳(OPT)置换算法的思路其所选择的被淘汰的页面,奖是以后不使用的,或者是在未来时间内不再被访问的页而,采用最佳算法,通常可保证获得最低的缺页率5.4流程图(开始)图5-1最佳置换算法(OPT)流程图图5-2先进先岀置换算法(FIFO)图5-3最近最久未使用置换算法(LRU)5.5主要程序代码#include#includeu
4、singnamespacestd;intconstInsideCount=6;//内存中存放的页面数intcount=0;//)M來记录己存放的页面数intInside[InsideCount];//存放内存中的页号intconstPageCount=10;//总的页面数intPage[PageCount];//存放产生的页面号intinsert=0;//先到先出置换算法fefo中表示当内存满的时候,新进入的页号放的位置intsuiji=0;//随机證换算法randchange当内存满的时候,新进入的页
5、号放的位登doublelost=0.0;〃缺失次数boolislnside(intnum)//检测页号是否在内存中{for(inti=0;i6、判断是否命中{cout«H命中"«cndl;for(inti=0;i0;k~)〃从当前的页号向前,发现页号与内存中的页号相同,break;比较内存中InsidcCount个页号,哪一个走的远,用max记录if(Ins7、ide[j]==Page[k])break;if(num-k>max)//求最旧未使用max=num-k;maxchange=j;//j表示把内存中第j个Inside中的贝而从内存拿出,把新的页面放入Inside[maxchange]=Page[num];for(inti=0;i8、dcCount;i++)cout«H内存Inside[n«i«uJ中内容为:M«Inside[i]«endl;voidFIFO(intnum)//先进先出置换算法(FIFO):{if(islnside(num))//判断是否命中{cout«H命中"«cndl;for(inti=0;i
6、判断是否命中{cout«H命中"«cndl;for(inti=0;i0;k~)〃从当前的页号向前,发现页号与内存中的页号相同,break;比较内存中InsidcCount个页号,哪一个走的远,用max记录if(Ins
7、ide[j]==Page[k])break;if(num-k>max)//求最旧未使用max=num-k;maxchange=j;//j表示把内存中第j个Inside中的贝而从内存拿出,把新的页面放入Inside[maxchange]=Page[num];for(inti=0;i8、dcCount;i++)cout«H内存Inside[n«i«uJ中内容为:M«Inside[i]«endl;voidFIFO(intnum)//先进先出置换算法(FIFO):{if(islnside(num))//判断是否命中{cout«H命中"«cndl;for(inti=0;i
8、dcCount;i++)cout«H内存Inside[n«i«uJ中内容为:M«Inside[i]«endl;voidFIFO(intnum)//先进先出置换算法(FIFO):{if(islnside(num))//判断是否命中{cout«H命中"«cndl;for(inti=0;i
此文档下载收益归作者所有