------------------------------------------作者xxxx------------------------------------------日期xxxx《操作系统》实验五:页面置换算法模拟【精品文档】【精品文档】【精品文档】【精品文档】【精品文档】【精品文档】实验五.请求页式存储管理的模拟[实验内容]:熟悉虚拟存储管理的各种页面置换算法,并编写模拟程序实现请求页式存储管理的页面置换算法----最近最久未使用算法(LRU),要求在每次产生置换时显示页面分配状态和缺页率。[实验要求]:1、运行给出的实验程序,查看执行情况,进而分析算法的执行过程,在理解FIFO页面置换算法和最近最久未使用算法(LRU)置换算法后,给出最佳置换算法的模拟程序实现,并集成到参考程序中。2、执行2个页面置换模拟程序,分析缺页率的情况。最好页框数和访问序列长度可调节,在使用同一组访问序列数据的情况下,改变页框数并执行2个页面置换模拟程序,查看缺页率的变化。3、在每次产生置换时要求显示分配状态和缺页率。程序的地址访问序列通过随机数产生,要求具有足够的长度。最好页框数和访问序列长度可调节。实验的执行结果如下图所示(左下图为FIFO执行结果,右下图为LRU执行结果):程序源代码:#include
#include"windows.h"#include#include#include#include#include#includevoidinitialize();//初始化相关数据结构voidcreateps();//随机生成访问序列voiddisplayinfo();//显示当前状态及缺页情况voidfifo();//先进先出算法intfindpage();//查找页面是否在内存voidlru();//最近最久未使用算法intinvalidcount=0;//缺页次数intvpoint;//页面访问指针intpageframe[10];//分配的页框intpagehistory[10];//记录页框中数据的访问历史intrpoint;//页面替换指针intinpflag;//缺页标志,0为不缺页,1为缺页structPageInfo//页面信息结构{intserial[100];//模拟的最大访问页面数,实际控制在20以上intflag;//标志位,0
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示无页面访问数据intdiseffect;//缺页次数inttotal_pf;//分配的页框数inttotal_pn;//访问页面序列长度}pf_info;//////////////////////////////////////////////////////////////////////////初始化相关数据结构voidinitialize(){inti,pf;inpflag=0;//缺页标志,0为不缺页,1为缺页pf_info.diseffect=0;//缺页次数pf_info.flag=0;//标志位,0表示无页面访问数据printf("\n请输入要分配的页框数:");//自定义分配的页框数scanf("%d",&pf);pf_info.total_pf=pf;for(i=0;i<100;i++)//清空页面序列{pf_info.serial[i]=-1;}}/////////////////////////////////////////////////////////////////////随机生成访问序列voidcreateps(void){ints,i,pn;initialize();//初始化相关数据结构printf("\n请输入要随机生成访问序列的长度:");//自定义随机生成访问序列的长度scanf("%d",&pn);srand(rand());//初始化随机数队列的"种子"s=((float)rand()/32767)*50+pn;//随机产生页面序列长度pf_info.total_pn=s;for(i=0;i=0)printf("%3d",pageframe[n]);elseprintf("");}printf(">");if(inpflag==1)//缺页标志,0为不缺页,1为缺页{printf("==>缺页");printf("缺页率%",(float)(pf_info.diseffect)*100.00/vpoint);}printf("\n");}//////////////////////////////////////////////////////////////////////////查找页面是否在内存,1为在内存,0为不在即缺页intfindpage(intpage){intn;for(n=0;npagehistory[max]){max=n;}}rpoint=max;pageframe[rpoint]=pf_info.serial[vpoint];pagehistory[rpoint]=0;pf_info.diseffect++;//缺页次数加1}}Sleep(10);displayinfo();//显示当前状态}//置换算法循环结束_getch();return;}/////////////////////最佳置换算法自己完成/////////////////////////////////////////////////////////////////////主函数intmain(){charch;system("cls");while(true){printf("*******************************************\n");printf("若要执行FIFO页面置算法请按1\n");printf("若要执行LRU页面置算法请按2\n");printf("若要退出请按3\n");printf("*******************************************\n");printf("Enteryourchoice(1or2or3):");do{//如果输入信息不正确,继续输入ch=(char)getch();}while(ch!='1'&&ch!='2'&&ch!='3');printf("\n\n你按的是:%c,现在为你执行对应操作。",ch);if(ch=='3')//选择3,退出{return0;}else{if(ch=='1')//选择1,FIFO{printf("\n\n----------*****执行FIFO算法*****-----------\n");fifo();}else{printf("\n\n----------*****执行LRU算法*****----------\n");//lru();}}system("cls");}printf("\n\nPressAnyKeyToContinue:");getch();return0;}