欢迎来到天天文库
浏览记录
ID:48970845
大小:309.00 KB
页数:8页
时间:2020-02-26
《操作系统实验五:页面置换算法模拟.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.实验五.请求页式存储管理的模拟[实验内容]:熟悉虚拟存储管理的各种页面置换算法,并编写模拟程序实现请求页式存储管理的页面置换算法----最近最久未使用算法(LRU),要求在每次产生置换时显示页面分配状态和缺页率。[实验要求]:1、运行给出的实验程序,查看执行情况,进而分析算法的执行过程,在理解FIFO页面置换算法和最近最久未使用算法(LRU)置换算法后,给出最佳置换算法的模拟程序实现,并集成到参考程序中。2、执行2个页面置换模拟程序,分析缺页率的情况。最好页框数和访问序列长度可调节,在使用同一组访问
2、序列数据的情况下,改变页框数并执行2个页面置换模拟程序,查看缺页率的变化。3、在每次产生置换时要求显示分配状态和缺页率。程序的地址访问序列通过随机数产生,要求具有足够的长度。最好页框数和访问序列长度可调节。实验的执行结果如下图所示(左下图为FIFO执行结果,右下图为LRU执行结果):教育资料.程序源代码:#include#include"windows.h"#include#include#include#include3、o.h>#include#include教育资料.voidinitialize();//初始化相关数据结构voidcreateps();//随机生成访问序列voiddisplayinfo();//显示当前状态及缺页情况voidfifo();//先进先出算法intfindpage();//查找页面是否在内存voidlru();//最近最久未使用算法intinvalidcount=0;//缺页次数intvpoint;//页面访问指针intpageframe[10];/4、/分配的页框intpagehistory[10];//记录页框中数据的访问历史intrpoint;//页面替换指针intinpflag;//缺页标志,0为不缺页,1为缺页structPageInfo//页面信息结构{intserial[100];//模拟的最大访问页面数,实际控制在20以上intflag;//标志位,0表示无页面访问数据intdiseffect;//缺页次数inttotal_pf;//分配的页框数inttotal_pn;//访问页面序列长度}pf_info;//////////////5、////////////////////////////////////////////////////////////初始化相关数据结构voidinitialize(){inti,pf;inpflag=0;//缺页标志,0为不缺页,1为缺页pf_info.diseffect=0;//缺页次数pf_info.flag=0;//标志位,0表示无页面访问数据printf("请输入要分配的页框数:");//自定义分配的页框数scanf("%d",&pf);pf_info.total_pf=pf;for(6、i=0;i<100;i++)//清空页面序列{pf_info.serial[i]=-1;}}/////////////////////////////////////////////////////////////////////随机生成访问序列voidcreateps(void){ints,i,pn;教育资料.initialize();//初始化相关数据结构printf("请输入要随机生成访问序列的长度:");//自定义随机生成访问序列的长度scanf("%d",&pn);srand(rand(7、));//初始化随机数队列的"种子"s=((float)rand()/32767)*50+pn;//随机产生页面序列长度pf_info.total_pn=s;for(i=0;i8、iddisplayinfo(void){inti,n;if(vpoint==0){printf("=============页面访问序列=============");for(i=0;i
3、o.h>#include#include教育资料.voidinitialize();//初始化相关数据结构voidcreateps();//随机生成访问序列voiddisplayinfo();//显示当前状态及缺页情况voidfifo();//先进先出算法intfindpage();//查找页面是否在内存voidlru();//最近最久未使用算法intinvalidcount=0;//缺页次数intvpoint;//页面访问指针intpageframe[10];/
4、/分配的页框intpagehistory[10];//记录页框中数据的访问历史intrpoint;//页面替换指针intinpflag;//缺页标志,0为不缺页,1为缺页structPageInfo//页面信息结构{intserial[100];//模拟的最大访问页面数,实际控制在20以上intflag;//标志位,0表示无页面访问数据intdiseffect;//缺页次数inttotal_pf;//分配的页框数inttotal_pn;//访问页面序列长度}pf_info;//////////////
5、////////////////////////////////////////////////////////////初始化相关数据结构voidinitialize(){inti,pf;inpflag=0;//缺页标志,0为不缺页,1为缺页pf_info.diseffect=0;//缺页次数pf_info.flag=0;//标志位,0表示无页面访问数据printf("请输入要分配的页框数:");//自定义分配的页框数scanf("%d",&pf);pf_info.total_pf=pf;for(
6、i=0;i<100;i++)//清空页面序列{pf_info.serial[i]=-1;}}/////////////////////////////////////////////////////////////////////随机生成访问序列voidcreateps(void){ints,i,pn;教育资料.initialize();//初始化相关数据结构printf("请输入要随机生成访问序列的长度:");//自定义随机生成访问序列的长度scanf("%d",&pn);srand(rand(
7、));//初始化随机数队列的"种子"s=((float)rand()/32767)*50+pn;//随机产生页面序列长度pf_info.total_pn=s;for(i=0;i
8、iddisplayinfo(void){inti,n;if(vpoint==0){printf("=============页面访问序列=============");for(i=0;i
此文档下载收益归作者所有