您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 最新第3章-与存储管理有关的操作系统算法实践作业资料
精品文档精品文档第3章与存储管理有关的操作系统算法实践作业参照“强化实践能力培养课程内容”中“内存页面置换算法实践能力培养考核选例”程序,编写一个能演示LRU内存页面置换算法的程序,它可根据给定的一组页面引用序列号和实存页数,显示LRU置换页的过程,能统计和报告LRU置换算法情况下依次淘汰的页号、缺页次数(页错误数)和缺页率。答:实验代码及说明#includeiostream.h#includestringconstintBsize=10;constintPsize=20;typedefstructpage{intcontent;//页面号inttimer;//被访问标记}page;pageblock[Bsize];//物理块pagepage[Psize];//页面号串voidInit(intQString[],intBsize){//初始化for(inti=0;iBsize;i++){block[i].content=-1;//找到空闲内存block[i].timer=0;}for(i=0;iPsize;i++){page[i].content=QString[i];page[i].timer=0;}}intfindSpace(intBsize){//查找是否有空闲内存for(inti=0;iBsize;i++)if(block[i].content==-1)returni;//找到空闲内存,返回BLOCK中位置return-1;}intfindExist(intcurpage,intBsize){//查找内存中是否有该页面for(inti=0;iBsize;i++)if(block[i].content==page[curpage].content)精品文档精品文档returni;//找到内存中有该页面,返回BLOCK中位置return-1;}intfindReplace(intBsize){//查找应予置换的页面intpos=0;for(inti=0;iBsize;i++)if(block[i].timer=block[pos].timer)pos=i;//找到应予置换页面,返回BLOCK中位置returnpos;}voiddisplay(intBsize){//显示for(inti=0;iBsize;i++)if(block[i].content!=-1)//非空闲内存coutblock[i].content;coutendl;}voidFIFO(intBsize){//先进先出页面置换算法intexist,space,position;floatscore=0;for(inti=0;iPsize;i++){exist=findExist(i,Bsize);if(exist!=-1)//内存中有该页面{cout不缺页endl;score+=1;//统计不缺页次数}else{space=findSpace(Bsize);if(space!=-1)//找到空闲内存{block[space]=page[i];display(Bsize);}else{position=findReplace(Bsize);//找到应予置换页面block[position]=page[i];display(Bsize);}}精品文档精品文档for(intj=0;jBsize;j++)block[j].timer++;//BLOCK中所有页面timer++}cout缺页次数为:20-scoreendl;cout缺页率为:(20-score)*100/20%endl;}voidLRU(intBsize){//最近最久未使用置换算法intexist,space,position;floatscore=0;for(inti=0;iPsize;i++){exist=findExist(i,Bsize);if(exist!=-1){block[exist].timer=0;cout不缺页endl;score+=1;}else{space=findSpace(Bsize);if(space!=-1){block[space]=page[i];display(Bsize);}else{position=findReplace(Bsize);block[position]=page[i];display(Bsize);}}for(intj=0;jBsize;j++)block[j].timer++;//BLOCK中所有页面TIMER++}cout缺页次数为:20-scoreendl;cout缺页率为:(20-score)*100/20%endl;}voidBlockClear(intBsize){for(inti=0;iBsize;i++){block[i].content=-1;精品文档精品文档block[i].timer=0;}}voidmain(void){cout|----------页面置换算法----------|endl;cout请输入20个数:\n;inti,QString[20],Bsize;for(i=0;i20;i++){cinQString[i];}cout页面号引用串:;for(i=0;i20;i++){coutQString[i];}coutendl------------------------------------------------------endl;cout选择1应用FIFO算法endl;cout选择2应用LRU算法endl;cout选择0退出endl;cout请选择:;intselect;while(select){cinselect;switch(select){case0:break;case1:cout请输入分配的物理块数的大小:;cinBsize;Init(QString,Bsize);coutFIFO算法结果如下:endl;FIFO(Bsize);BlockClear(Bsize);cout----------------------endl;break;case2:cout请输入分配的物理块数的大小:;cinBsize;精品文档精品文档Init(QString,Bsize);coutLRU算法结果如下:endl;LRU(Bsize);BlockClear(Bsize);cout----------------------endl;break;default:cout请输入正确功能号endl;break;}}}运行结果:精品文档精品文档
本文标题:最新第3章-与存储管理有关的操作系统算法实践作业资料
链接地址:https://www.777doc.com/doc-3645098 .html