欢迎来到天天文库
浏览记录
ID:30219075
大小:43.00 KB
页数:9页
时间:2018-12-28
《页面置换算法模拟》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实用标准文案#include#include//deque容器头文件#includeusingnamespacestd;typedefstruct{intid;//页面IDintstayTime;//内存中驻留时间intunUseTime;//已经多久未被使用}CPage;dequeRunQueue;dequeinterPage;//内存中的四个页面dequeexterPage;//外存中的N个页面intpresentSeat;//目前运行到了队列
2、的第几个?intlackNum[3]={0};intgetRandNum(intrange)//返回[0,range)范围内的整数{returnstatic_cast(rand()%range);}intfindPageIdByCmdId(intcmdId)//判断指令属于哪个页面{returnstatic_cast(cmdId/10);精彩文档实用标准文案}voidInitDevice()//初始化运行队列按照25%50%25%的标准生成{srand(static_cast(time(NULL)));
3、intt_cmdNum=getRandNum(320);//随机选择第一条指令RunQueue.push_back(t_cmdNum);if(t_cmdNum<319)RunQueue.push_back(t_cmdNum+1);//顺序执行下一条指令while(RunQueue.size()<=320){t_cmdNum=getRandNum(t_cmdNum);//跳转到m1属于[0,m-1]RunQueue.push_back(t_cmdNum);//将m1插入队列if(t_cmdNum<319)RunQueue.push_b
4、ack(t_cmdNum+1);//将m1+1插入队列inttemp=320-(t_cmdNum+2);t_cmdNum=t_cmdNum+2+getRandNum(temp);//跳转到m2属于[m+2,319]RunQueue.push_back(t_cmdNum);//插入队列if(t_cmdNum<319)RunQueue.push_back(t_cmdNum+1);//将m2+1插入队列}精彩文档实用标准文案while(RunQueue.size()>320)RunQueue.pop_back();}stayTime=0;
5、temp.voidInitMemoryQueue()//初始化运行标志、内存外存页面队列{presentSeat=0;exterPage.clear();interPage.clear();for(inti=0;i<32;i++){CPagetemp;temp.id=i;temp.unUseTime=0;exterPage.push_back(temp);}}精彩文档实用标准文案intsearchStatusOfPage(intt_PageId,boolsign)//分别在内存中查找页面存在返回位置不存在返回-1{if(sign)f
6、or(unsignedi=0;i7、rt;i<320;i++)if(static_cast(RunQueue[i]/10)==id)returni;return-1;}intfindLongestStayTimePage()//FIFO算法中查找在内存中呆了最久的页面{intmax=0;for(unsignedi=1;iinterPage[max].stayTime)max=i;returnmax;}intfindLongestUnUseTimePage()//LR8、U算法中查找最久未使用的页面{intmax=0;for(unsignedj=0;jinterPage[max].unU
7、rt;i<320;i++)if(static_cast(RunQueue[i]/10)==id)returni;return-1;}intfindLongestStayTimePage()//FIFO算法中查找在内存中呆了最久的页面{intmax=0;for(unsignedi=1;iinterPage[max].stayTime)max=i;returnmax;}intfindLongestUnUseTimePage()//LR
8、U算法中查找最久未使用的页面{intmax=0;for(unsignedj=0;jinterPage[max].unU
此文档下载收益归作者所有