欢迎来到天天文库
浏览记录
ID:56526117
大小:129.30 KB
页数:14页
时间:2020-06-27
《页面置换算法模拟 实验报告材料.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、中北大学软件学院实验报告专业软件工程课程名称计算机操作系统学号姓名辅导教师静成绩实验日期2015.11.20实验时间1实验名称:实验四页面置换算法模拟2、实验目的(1)了解存分页管理策略(2)掌握调页策略(3)掌握一般常用的调度算法(4)学会各种存储分配算法的实现方法。(5)了解页面大小和存实际容量对命中率的影响。3、实验要求编程实现页面置换算法,最少实现两种算法,比较算法的优劣,并将调试结果显示在计算机屏幕上,并检测机算和笔算的一致性。(1)采用页式分配存储方案,通过分别计算不同算法的命中率来比较算法的优劣,同时也考虑页面大小
2、及存实际容量对命中率的影响;(2)实现OPT算法(最优置换算法) 、LRU算法(LeastRecently) 、FIFO算法(FirstINFirstOut)的模拟;(3)使用某种编程语言模拟页面置换算法。4、实验算法描述(1)FIFO(先进先出)开始页面走向存入数组p[]中,内存块用page[]表示初始化为0当前p[]中第i个元素是否已在内存中i++YPage[]是否有空NN把p[i]的内容直接装入最上面一个空内存块,i++把page[]中最先装入的页面置换出去.i++Y输出当前内存块状态结束图4-1FIFO算法流程图开始(2
3、)LRU(最近最久未使用)页面走向存入数组p[]中,内存块用page[]表示初始化为0当前p[]中第i个元素是否已在内存i++YNPage[]是否有空YN把p[i]的内容直接装入最上面一个空内存块,i++把page[]中最近最久未使用的页面置换出去.i++输出当前内存块状态结束图4-2LRU算法流程图(3)OPT(最佳置换算法)开始页面走向存入数组p[]中,内存块用page[]表示初始化为0当前p[]中第i个元素是否已在内存i++YPage[]是否有空NYN把p[i]的内容直接装入最上面一个空内存块,i++把page[]中以后一
4、段时间都不使用或是使用时间离现在最远的换出.i++输出当前内存块状态结束图4-3OPT流程图6、实验代码#includeusingnamespacestd;#defineBsize3#definePsize20structpageInfor{intcontent;//页面号inttimer;//被访问标记};classPRA{public:PRA(void);intfindSpace(void);//查找是否有空闲存intfindExist(intcurpage);//查找存中是否有该页面intfindRep
5、lace(void);//查找应予置换的页面voiddisplay(void);//显示voidFIFO(void);//FIFO算法voidLRU(void);//LRU算法voidOptimal(void);//OPTIMAL算法voidBlockClear(void);//BLOCK恢复pageInfor*block;//物理块pageInfor*page;//页面号串private:};PRA::PRA(void){intQString[20]={7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0
6、,1};block=newpageInfor[Bsize];for(inti=0;i7、闲存,返回BLOCK中位置return-1;}intPRA::findExist(intcurpage){for(inti=0;i=block[pos].timer)pos=i;//找到应予置换页8、面,返回BLOCK中位置returnpos;}voidPRA::display(void){for(inti=0;i
7、闲存,返回BLOCK中位置return-1;}intPRA::findExist(intcurpage){for(inti=0;i=block[pos].timer)pos=i;//找到应予置换页
8、面,返回BLOCK中位置returnpos;}voidPRA::display(void){for(inti=0;i
此文档下载收益归作者所有