欢迎来到天天文库
浏览记录
ID:52445115
大小:739.00 KB
页数:19页
时间:2020-03-27
《存储管理模拟实现.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、..一、实验目的存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式管理的页面置换算法。二、实验内容编程实现页面置换算法,要求输出页面的置换过程,具体可以编程实现OPT、FIFO和LRU算法。1.过随机数产生一个指令序列,共320条指令。其地址按下述原则生成:①50%的指令是顺序执行的;②25%的指令是均匀分布在前地址部分;③25%的指令是均匀分布在后地址部分;#具体的实施方法是:A.在[0,319]的指令地址之间
2、随机选区一起点M;B.顺序执行一条指令,即执行地址为M+1的指令;C.在前地址[0,M+1]中随机选取一条指令并执行,该指令的地址为M’;D.顺序执行一条指令,其地址为M’+1;E.在后地址[M’+2,319]中随机选取一条指令并执行;F.重复A—E,直到执行320次指令。2.指令序列变换成页地址流设:(1)页面大小为1K;(2)用户内存容量为4页到32页;(3)用户虚存容量为32K。在用户虚存中,按每K存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为:第0条—第9条指令为第0页(对应虚存地址为[0,9]);第10条—第1
3、9条指令为第1页(对应虚存地址为[10,19]);。。。。。。。。。。。。。。。。。。。。。第310条—第319条指令为第31页(对应虚存地址为[310,319]);按以上方式,用户指令可组成32页。3.计算并输出下述各种算法在不同内存容量下的命中率。A.FIFO先进先出的算法word教育资料..A.LRU最近最少使用算法C.LFU最少访问页面算法三、实验要求1、需写出设计说明;2、设计实现代码及说明3、运行结果;四、主要实验步骤1、分析算法结构;画出算法的流程图,即设计说明;根据画出的流程图使用C语言编写相应的代码(代码过长,放到最后
4、);程序主要由main函数和以下几个函数组成:voidinitialization();初始化内存数据voidFIFO();FIFO先进先出算法;voidLRU();LRU最久未使用算法;voidLFU();LFU最近最久未使用算法:流程图如下:word教育资料..页面置换算法整体结构FIFO页面置换算法word教育资料..LRU页面置换算法word教育资料..LFU页面置换算法2、设计说明及源代码FIFO算法设计说明:按照所要求的产生随机指令序列,存放在order[320]这个数组中。通过循环产生这些随机指令,每产生一条都要进行下列判
5、断:是否和内存中即memword教育资料.._volume[4]中存放的页面相同,如果相同则不做任何操作,如果不相同,则产生缺页,相应的缺页次数加一,按照fcfs将最先进入内存的页数淘汰,并将该页写到内存中去。重复上面的操作直到完成这320条指令。源代码://储存管理.cpp:定义控制台应用程序的入口点。//#include"stdafx.h"int_tmain(intargc,_TCHAR*argv[]){return0;}#include#include#include#defi
6、neN5//总共运行的次数voidmain(){intorder[320],mem_volume[4]={100,100,100,100};//使得mem_volume[]的值大于100>32,这样我们便可使其在开始就产生缺页//定义add为缺页次数sign作为标识符判断所调页数是否在内存中intl=0,i=0,j,num=0,cx,sign=0,add=0;floatvalue=0,sum=0;//定义sum为缺页率srand(time(NULL));for(cx=0;cx7、rder[i]=rand()%320;//产生随机数放order中for(j=0;j<4;j++)if((order[i]+1)/10==mem_volume[j])sign=1;//通过sign标识判断所调页数是否在内存块中if(sign)sign=0;else{l++;if(mem_volume[3]==100)mem_volume[3]=(order[i]+1)/10;//保证第一次调入的页面都产生缺页else{mem_volume[num]=(order[i]+1)/10;//将所缺页调入到内存块中num=(num+1)%4;/8、/num值为下次所要置换出去的内存块中对应的页数}word教育资料..}i++;order[i]=rand()%(order[i-1]+2);for(j=0;j<4;j++)if(order[i]/10==
7、rder[i]=rand()%320;//产生随机数放order中for(j=0;j<4;j++)if((order[i]+1)/10==mem_volume[j])sign=1;//通过sign标识判断所调页数是否在内存块中if(sign)sign=0;else{l++;if(mem_volume[3]==100)mem_volume[3]=(order[i]+1)/10;//保证第一次调入的页面都产生缺页else{mem_volume[num]=(order[i]+1)/10;//将所缺页调入到内存块中num=(num+1)%4;/
8、/num值为下次所要置换出去的内存块中对应的页数}word教育资料..}i++;order[i]=rand()%(order[i-1]+2);for(j=0;j<4;j++)if(order[i]/10==
此文档下载收益归作者所有