资源预览内容
第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
第9页 / 共11页
第10页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
页面置换算法实验报告实验目的和要求1、了解内存分页管理策略,掌握 3 种调度页面的算法2、 分别采用 3种页面调度方式实现调度,显示调度结果并计算缺页次数与缺页率 编写程序 完成实验内容及实验报告实验内容、方法和步骤1、设计结构体存放页面调度顺序串及内存块2、 分别模拟FIFO置换调度算法、LRU置换调度算法以及OPT置换调度算法进行页面调 度分别打印输出 3种置换算法调度后的内存块状态结果,在缺页的列对应输出缺页标志,计算缺页次数及缺页率 主要流程:始输入1调度算法选押输入3输入2结束图1主流程图初始化内存块数组与页面访问串数组FIFOS换算法OPTH换算医LRU富换算法FIFO置换调度算法流程 图:开始将内存块数纽当前列分别赋值为上一列元素是输出内存块调度结杲图2 FIFO置换调度算法流程图LRU谊换调度算法流程图:开始L将内存块数组当前列分别赋 值为匕列元素,time加1缺页,找到内存块数驾 中最先进入的页面将该页面号赋俏为当前需调入内存的页 面号,缺页数加1,缺页*标记置1不缺页,time值审置为1iId结束图3 LRU置换算法流程图opt n换调度算法流程图节间上由M内存否中最先进入的页面缺贝,找到内行:块数纠块中是否存在?将该页面号.赋值为当前需调人内存的页 面号,缺页数加1,缺页”标记鷲1|开始将内存块数组当前列分别赋值为上一列元索,time in 1输岀内存块调度结果图4 OPT置换调度算法流程图实验代码#in clude using n amespace std;void Print(int bc,int blockCount) for(i nt i=0;iblockCo un t;i+) coutbci; coute ndl; bool Travel(i nt bc,i nt blockCo un t,i nt x)bool is_foun d=false; int i;for(i=0;iblockCou nt;i+) if(bci=x) is_fo un d=true;break; return is_found;void FIFO(int pc,int bc,int pageCount,int blockCount) coutvv0 : FIFO 置换算法vvendl;int i;if(pageCo un tv=blockCo unt)coutvv缺页次数为vvOvvendl; coutvv缺页率为 vv0vvendl;elseint noPage=0;int p=0; for(i=0;ivpageCount;i+)cout 引用页: pciendl; if(!Travel(bc,blockCount,pci) if(iblockCount)bci=pci;else if(p=blockCount) p=0;bcp=pci; p+; noPage+;cout 物理快情况: ; Print(bc,blockCount); coutendl;cout 缺页次数为 :noPageendl;cout 缺页率为 :(float)noPage/pageCountendl; int FoundMaxNum(int a,int n)int k,j;k=a0;j=0;for (int i=0;i=k)k=ai; j=i;return j;void LRU(int pc,int bc,int pageCount,int blockCount)cout1 :LRU 置换算法 endl;if(pageCount=blockCount)cout 缺页次数为 0endl;cout 缺页率为 0endl;elseint noPage=0;int i,j,m;int *bc1=new intblockCount;for(i=0;iblockCount;i+)bc1i=0;for(i=0;ipageCount;i+)cout 引用页: pciendl;if(!Travel(bc,blockCount,pci) if(iblockCount) bci=pci;for(int p=0;p=i;p+)bc1p+;elsefor(j=0;jblockCount;j+)bc1j+;int k=FoundMaxNum(bc1,blockCount); bck=pci; bc1k=1; noPage+; cout 物理快情况: ; Print(bc,blockCount);else if(Travel(bc,blockCount,pci) if(iblockCount)for(j=0;j=i;j+)bc1j+;for(m=0;m=i;m+)if(bcm=pci) break; bc1m=1; bcm=pci;elsefor(j=0;jblockCount;j+)bc1j+; for(m=0;mblockCount;m+)if(bcm=pci)break;bc1m=1; bcm=pci;coutendl;cout 缺页次数为 :noPageendl;cout 缺页率为 :(float)noPage/pageCountendl;delete bc1;void Optiomal(int pc,int bc,int pageCount,int blockCount)cout2 :最佳置换算法 endl;if(pageCount=blockCount)cout 缺页次数为 0endl;cout 缺页率为 0endl;elseint noPage=0;int i,j,k;for(i=0;ipageCount;i+)cout 引用页: pciendl; if(!Travel(bc,blockCount,pci)if(iblockCount)bci=pci;elseint max=0;int blockIndex; for(j=0;jblockCount;j+)for(k=i;k=max)max=k;blockIndex=j; bcblockIndex=pci; noPage+;cout 物理快情况: ;Print(bc,blockCount); coutendl;cout 缺页次数为 :noPageendl; cout 缺页率为 :(float)noPage/pageCountendl;void NRU(int pc,int bc,int pageCount,int blockCount) cout3 : Clock 置换算法 endl;if(pageCount=blockCount)cout 缺页次数为 0endl;cout 缺页率为 0endl;elseint noPage=0;int i,j;int *bc1=new intblockCount; for(i=0;iblockCount;i+)bc1i=0; for(i=0;ipageCount;i+)cout 引用页: pciendl;if(!Travel(bc,blockCount,pci) for(j=0;jblockCount;j+) if(bc1j=1) bc1j=0;else if(bc1j=0)break;if(j=blockCount-1)j=-1;bcj=pci;bc1j=1;noPage+;cout 物理快情况: ;Print(bc,blockCount);coutendl;cout 缺页次数为 :noPageendl;cout 缺页率为 :(float)noPage/pageCountendl;delete bc1;int main()int pageCount,blockCount,i;cout 输入页面数 pageCount;int *pc=new intpageCount;cout 输入页面走向 endl;for(i=0;ipci;cout 输入物理块数 blockCount;coutvv0 : FIFO 置换算法vvendl;coutvv1 : LRU 置换算法vvendl;coutvv2 :最佳置换算法 vvendl;coutvv3 : Clock 置换算法vvendl;coutvv按数字选择算法类别:vve ndl;int n;while(cinn)if(n=0)int *bc=new intblockCount;FIFO(pc,bc,pageCount,blockCount); delete bc;else if(n=1)int *bc=new intblockCount;LRU(pc,bc,pageCount,blockCou
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号