欢迎来到天天文库
浏览记录
ID:12495122
大小:68.50 KB
页数:9页
时间:2018-07-17
《存储管理模拟程序 - 存储管理模拟程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、存储管理模拟程序1.设计目的存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。2.设计内容(1)通过输入或由程序产生程序执行时的页号序列,共32个页号。页号序列按下述原则生成:页号序列应具有一定随机性。(如:50%的顺序访问);(2)计算并输出下述各种算法在不同内存容量(4~32内存页面)下的命中率。①先进先出的算法(FIFO)②最近最少使用算法(LRU)③最佳淘汰算法(OPT):先淘汰最不常用的页地址④最少访问页面
2、算法(LFR)其中和为选择内容命中率=1-(页面失效次数/页地址流长度)3.程序设计:本程序首先用rand()函数定义和产生地址流序列,并针对不同的算法计算出相应的命中率。I根据实验内容将函数分成五个模块:1主程序模块,主要包括页面结构数组及页面控制结构定义,将指令流转换成页地址流2三个置换算法程序模块:FIFO算法模块,LRU算法模块,OPT算法模块,LFU算法模块II总程序模块流程图如下:4.源程序如下:#include#include#definemaxsize32##includedefinevpf20
3、0voidFIFO(inta[]);voidLRU(inta[]);voidOPT(inta[]);voidLFU(inta[]);intcount[maxsize];//intb[pf];inta[vpf];voidmain()//定义主函数。{for(inti=0;i<200;i++)//用随机数产生页地址流a[i]=rand()%32;FIFO(a);LFU(a);OPT(a);LRU(a);}voidLFU(inta[])//LFU算法{for(intn=4;n<33;n++)//不同的页面数计算命中率{intnum=0;intsame=0;intmin;
4、intminpage=0;intdis=0;inti=0;intk=0;intsum=n;//空白页面数intnum2=2;//设置清零时间间隔intb[maxsize];for(k=0;k5、//无空白页面{min=201;for(k=0;kcount[k]){min=count[k];minpage=k;}}b[minpage]=a[i];if(num2==0)//每两次缺页计数器清零for(k=0;k6、0;num2=3;}num2--;count[n-sum]=1;sum--;}}}}printf("%d",n);printf("pageframesLFU:%3d",dis);printf("LFU:%6.4f",1-(float)dis/32);}}voidOPT(inta[])//OPT算法{for(intn=4;n<33;n++)//不同的页面数计算命中率{intnum1=0,num2=0,num3=0,num4=0;intd;intdis=0;intb[maxsize];intsum=n;intmax;intmaxpage;intdist[vpf];7、for(inti=0;i8、++;if
5、//无空白页面{min=201;for(k=0;kcount[k]){min=count[k];minpage=k;}}b[minpage]=a[i];if(num2==0)//每两次缺页计数器清零for(k=0;k6、0;num2=3;}num2--;count[n-sum]=1;sum--;}}}}printf("%d",n);printf("pageframesLFU:%3d",dis);printf("LFU:%6.4f",1-(float)dis/32);}}voidOPT(inta[])//OPT算法{for(intn=4;n<33;n++)//不同的页面数计算命中率{intnum1=0,num2=0,num3=0,num4=0;intd;intdis=0;intb[maxsize];intsum=n;intmax;intmaxpage;intdist[vpf];7、for(inti=0;i8、++;if
6、0;num2=3;}num2--;count[n-sum]=1;sum--;}}}}printf("%d",n);printf("pageframesLFU:%3d",dis);printf("LFU:%6.4f",1-(float)dis/32);}}voidOPT(inta[])//OPT算法{for(intn=4;n<33;n++)//不同的页面数计算命中率{intnum1=0,num2=0,num3=0,num4=0;intd;intdis=0;intb[maxsize];intsum=n;intmax;intmaxpage;intdist[vpf];
7、for(inti=0;i8、++;if
8、++;if
此文档下载收益归作者所有