虚拟存储管理器的页面调度算法实现

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

三、虚拟存储管理器的页面调度页面调度算法主要有:FIFO,最近最少使用调度算法(LRU),最近最不常用调度算法(LFU),最佳算法(OPT)1.输入:页面流文件,其中存储的是一系列页面号(页面号用整数表示,用空格作为分隔符),用来模拟待换入的页面。下面是一个示意:1234125123452.处理要求:程序运行时,首先提示“请输入页面流文件的文件名:”,输入一个文件名后,程序将读入该文件中的有关数据。初始条件:采用三个页框,初始时均为空。根据第二次机会算法对数据进行处理。3.输出要求:每换入一个页面(即:每读入一个页面号),判断是否有页面需要被换出。若有,把被换出的页面号输出到屏幕上;若没有,则输出一个“*”号。4.文件名约定提交的源程序名字:sourceXXX.c或者sourceXXX.cpp(依据所用语言确定)输入文件名字:可由用户指定其中:XXX为账号。5.测试说明:测试教师将事先准备好一组文件(格式为*.txt),从中为每个程序随机指定一至三个作为输入文件(被测试者需从键盘输入指定文件的文件名),并查看程序输出结果。6.第二次机会算法:对FIFO算法做如下简单的修改:发生替换时,先检查最老页面的R(访问)位。如果为0,那么此页面是最早被换入的,而且近期没有被访问,可以立刻被替换掉;如果R位为1,就清除R位,并修改它的装入时间,使它就像刚被装入的新页面一样,然后继续搜索可替换的最老页面。我没做出来~~~~页面调度算法主要有:FIFO,最近最少使用调度算法(LRU),最近最不常用调度算法(LFU),最佳算法(OPT)这几种算法的调度都有可能在考试中碰到。关于这一类型,大家还可以参看书本251页的实验指导。如2001年考题:要求:1。实现三种算法:FIFO,最近最少使用调度算法(LRU),最近最不常用调度算法(LFU)2。页面序列从指定的文本文件(TXT文件)中取出3。输出:第一行:每次淘汰的页面号第二行:显示缺页的总次数本程序包括:FIFO,最近最少使用调度算法(LRU),最近最不常用调度算法(LFU)第二次机会算法VC++调试通过(C)copyrightbyNeo欢迎大家测试请问题请Email:sony006@163.com*/#includestdio.h#includestring.h#includeiostream.hconstintMAXSIZE=1000;//定义最大页面数constintMAXQUEUE=3;//定义页框数typedefstructnode{intloaded;inthit;}page;pagepages[MAXQUEUE];//定义页框表intqueue[MAXSIZE];intquantity;//初始化结构函数voidinitial(){inti;for(i=0;iMAXQUEUE;i++){pages[i].loaded=-1;pages[i].hit=0;}for(i=0;iMAXSIZE;i++){queue[i]=-1;}quantity=0;}//初始化页框函数voidinit(){inti;for(i=0;iMAXQUEUE;i++){pages[i].loaded=-1;pages[i].hit=0;}}//读入页面流voidreadData(){FILE*fp;charfname[20];inti;cout请输入页面流文件名:;cinfname;if((fp=fopen(fname,r))==NULL){cout错误,文件打不开,请检查文件名;}else{while(!feof(fp)){fscanf(fp,%d,&queue[quantity]);quantity++;}}cout读入的页面流:;for(i=0;iquantity;i++){coutqueue[i];}}//FIFO调度算法voidFIFO(){inti,j,p,flag;intabsence=0;p=0;coutendl----------------------------------------------------endl;coutFIFO调度算法页面调出流:;for(i=0;iquantity;i++){flag=0;for(j=0;jMAXQUEUE;j++){if(pages[j].loaded==queue[i]){flag=1;}}if(flag==0){if(absence=MAXQUEUE){coutpages[p].loaded;}pages[p].loaded=queue[i];p=(p+1)%MAXQUEUE;absence++;}}absence-=MAXQUEUE;coutendl总缺页数:absenceendl;}//最近最少使用调度算法(LRU)voidLRU(){intabsence=0;inti,j;intflag;for(i=0;iMAXQUEUE;i++){pages[i].loaded=queue[i];}coutendl----------------------------------------------------endl;cout最近最少使用调度算法(LRU)页面流:;for(i=MAXQUEUE;iquantity;i++){flag=-1;for(j=0;jMAXQUEUE;j++){if(queue[i]==pages[j].loaded){flag=j;}}//CAUTIONpages[0]是队列头if(flag==-1){//缺页处理coutpages[0].loaded;for(j=0;jMAXQUEUE-1;j++){pages[j]=pages[j+1];}pages[MAXQUEUE-1].loaded=queue[i];absence++;}else{//页面已载入pages[quantity]=pages[flag];for(j=flag;jMAXQUEUE-1;j++){pages[j]=pages[j+1];}pages[MAXQUEUE-1]=pages[quantity];}}coutendl总缺页数:absenceendl;}//最近最不常用调度算法(LFU)voidLFU(){inti,j,p;intabsence=0;intflag;for(i=0;iMAXQUEUE;i++){pages[i].loaded=queue[i];}coutendl----------------------------------------------------endl;cout最近最不常用调度算法(LFU)页面流:;for(i=MAXQUEUE;iquantity;i++){flag=-1;for(j=0;jMAXQUEUE;j++){if(pages[j].loaded==queue[i]){flag=1;pages[j].hit++;}}if(flag==-1){//缺页中断p=0;for(j=0;jMAXQUEUE;j++){if(pages[j].hitpages[p].hit){p=j;}}coutpages[p].loaded;pages[p].loaded=queue[i];for(j=0;jMAXQUEUE;j++){pages[j].hit=0;}absence++;}}coutendl总缺页数:absenceendl;}//第二次机会算法voidsecond(){inti,j,t;intabsence=0;intflag,temp;for(i=0;iMAXQUEUE;i++){pages[i].loaded=queue[i];}coutendl----------------------------------------------------endl;cout第二次机会算法页面流:;for(i=MAXQUEUE;iquantity;i++){flag=-1;for(j=0;jMAXQUEUE;j++){if(pages[j].loaded==queue[i]){flag=1;pages[j].hit=1;}}if(flag==-1){//缺页处理t=0;while(t==0){if(pages[0].hit==0){coutpages[0].loaded;for(j=0;jMAXQUEUE-1;j++){pages[j]=pages[j+1];}pages[MAXQUEUE-1].loaded=queue[i];pages[MAXQUEUE-1].hit=0;t=1;}else{temp=pages[0].loaded;for(j=0;jMAXQUEUE-1;j++){pages[j]=pages[j+1];}pages[MAXQUEUE-1].loaded=temp;pages[MAXQUEUE-1].hit=0;}}absence++;}}coutendl总缺页数:absenceendl;}//显示版权信息函数voidversion(){coutendlendl;cout┏━━━━━━━━━━━━━━━━━━━━━━━┓endl;cout┃虚拟存储管理器的页面调度┃endl;cout┠───────────────────────┨endl;cout┃(c)AllRightReservedNeo┃endl;cout┃sony006@163.com┃endl;cout┃version2004build1122┃endl;cout┗━━━━━━━━━━━━━━━━━━━━━━━┛endl;coutendlendl;}voidmain(){version();initial();readData();FIFO();init();LRU();init();LFU();init();second();}

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功