ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:233.21KB ,
资源ID:1931435      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/1931435.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(存储管理模拟实现.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

存储管理模拟实现.docx

1、存储管理模拟实现存储管理模拟实现一、实验目的存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式管理的页面置换算法。二、实验内容编程实现页面置换算法,要求输出页面的置换过程,具体可以编程实现OPT、FIFO和LRU算法。1过随机数产生一个指令序列,共320条指令。其地址按下述原则生成:50%的指令是顺序执行的;25%的指令是均匀分布在前地址部分;25%的指令是均匀分布在后地址部分;#具体的实施方法是:A.在0,319的指令地址之间随机选区一起点M;B.顺序执行一条指令,即

2、执行地址为M+1的指令;C.在前地址0,M+1中随机选取一条指令并执行,该指令的地址为M;D.顺序执行一条指令,其地址为M+1;E.在后地址M+2,319中随机选取一条指令并执行;F.重复AE,直到执行320次指令。2指令序列变换成页地址流 设:(1)页面大小为1K;(2)用户内存容量为4页到32页;(3) 用户虚存容量为32K。在用户虚存中,按每K存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为: 第0条第9条指令为第0页(对应虚存地址为0,9); 第10条第19条指令为第1页(对应虚存地址为10,19); 。 第310条第319条指令为第31页(对应虚存地址为310,319)

3、;按以上方式,用户指令可组成32页。3. 计算并输出下述各种算法在不同内存容量下的命中率。A.FIFO先进先出的算法B.LRU最近最少使用算法CLFU最少访问页面算法三、实验要求1、需写出设计说明;2、设计实现代码及说明3、运行结果;四、主要实验步骤1、分析算法结构;画出算法的流程图,即设计说明;根据画出的流程图使用C语言编写相应的代码(代码过长,放到最后);程序主要由main函数和以下几个函数组成:void initialization();初始化内存数据void FIFO();FIFO先进先出算法;void LRU();LRU最久未使用算法;void LFU();LFU最近最久未使用算法:

4、流程图如下:页面置换算法整体结构FIFO页面置换算法 LRU页面置换算法LFU页面置换算法2、设计说明及源代码FIFO算法设计说明:按照所要求的产生随机指令序列,存放在order320这个数组中。通过循环产生这些随机指令,每产生一条都要进行下列判断:是否和内存中即mem_volume4中存放的页面相同,如果相同则不做任何操作,如果不相同,则产生缺页,相应的缺页次数加一,按照fcfs将最先进入内存的页数淘汰,并将该页写到内存中去。重复上面的操作直到完成这320条指令。源代码:/ 储存管理.cpp : 定义控制台应用程序的入口点。/#include stdafx.hint _tmain(int a

5、rgc, _TCHAR* argv) return 0;#include #include #include #define N 5 /总共运行的次数void main() int order320,mem_volume4=100,100,100,100;/使得mem_volume的值大于10032,这样我们便可使其在开始就产生缺页 /定义add为缺页次数 sign作为标识符判断所调页数是否在内存中 int l=0,i=0,j,num=0,cx,sign=0,add=0; float value=0,sum=0; /定义sum为缺页率 srand(time(NULL); for(cx=0;cx

6、N;cx+) /总共运行N次 while(i320) orderi=rand()%320; /产生随机数放order中 for(j=0;j4;j+) if(orderi+1)/10=mem_volumej) sign=1; /通过sign标识判断所调页数是否在内存块中 if(sign) sign=0; else l+; if(mem_volume3=100) mem_volume3=(orderi+1)/10;/ 保证第一次调入的页面都产生缺页 else mem_volumenum=(orderi+1)/10; /将所缺页调入到内存块中 num=(num+1)%4; /num值为下次所要置换出

7、去的内存块中对应的页数 i+; orderi=rand()%(orderi-1+2); for(j=0;j4;j+) if(orderi/10=mem_volumej) sign=1; if(sign) sign=0; else l+; if(mem_volume2=100) mem_volume2=orderi/10; else mem_volumenum=orderi/10; num=(num+1)%4; i+; orderi=orderi-1+1; for(j=0;j4;j+) if(orderi/10=mem_volumej) sign=1; if(sign) sign=0; else

8、 l+; if(mem_volume1=100) mem_volume1=orderi/10; else mem_volumenum=orderi/10; num=(num+1)%4; i+; orderi=rand()%(319-orderi-1-2)+(orderi-1+2); for(j=0;j4;j+) if(orderi/10=mem_volume0) sign=1; if(sign) sign=0; else l+; if(mem_volume0=100) mem_volume0=(orderi+1)/10; else mem_volumenum=orderi/10; num=(n

9、um+1)%4; i+; value=l/320.0*100; add=add+l; sum=sum+value; printf(* FIFO页面置换算法 *n); printf(* 最后一次指令序列 *); for(i=0;i320;i+) if(i%10=0) printf(n); printf(%5d,orderi); printf(n); printf(*n); printf(tt%d次的平均缺页数为%dntt%d次的平均缺页率为%.3f%n,N,add/N,N,sum/N); printf(n);LRU页面置换算法设计说明:这个算法同FCFS算法的不同之处在于,每产生一条随机指令,如

10、果和4个内存块中的某一个页数相同的话,就要对这4个内存块中的页数重新排序,将每次要置换出去的页数放在mem_volume3中,这样,在每次产生缺页的时候,都先将所缺页数写入到该内存块,然后再排序,将其放到mem_volume0中去。源代码:/ 储存管理.cpp : 定义控制台应用程序的入口点。/#include stdafx.hint _tmain(int argc, _TCHAR* argv) return 0;#include #include #include #define N 5int main(void) int order320,mem_volume4=100,100,100,1

11、00; int l=0,i=0,j,cx; int num,temp=0,ex_chan=0,add=0; float value=0,sum=0; srand(time(NULL); for(cx=0;cxN;cx+) while(i0;j-) temp=mem_volumej; mem_volumej=mem_volumej-1; mem_volumej-1=temp; else if(orderi+1)/10=mem_volume3) for(j=3;j0;j-) temp=mem_volumej; mem_volumej=mem_volumej-1; mem_volumej-1=temp; /如果所调页数同第3、4个内存块中页数相同,则通过循环进行排序 else l+; if(mem_volume3=100) mem_volume3=(orderi+1)/10;/保证刚开始调入内存块中就产生缺页 else mem_volume3=(orderi+1)/10; for(num=3;num0;num-) ex_chan=mem_volumenum; mem_volumenum=mem_volumenum-1;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1