实验三存储管理-Read.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验三存储管理-Read.doc

实验三 存储管理 1.目的和要求 存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。 本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式管理的页面置换算法。 2.实验内容 1.过随机数产生一个指令序列,共320条指令。其地址按下述原则生成: ①50%的指令是顺序执行的; ②25%的指令是均匀分布在前地址部分; ③25%的指令是均匀分布在后地址部分; #具体的实施方法是: 在[0,319]的指令地址之间随机选区一起点M; 顺序执行一条指令,即执行地址为M+1的指令; 在前地址[0,M+1]中随机选取一条指令并执行,该指令的地址为M’; 顺序执行一条指令,其地址为M’+1; 在后地址[M’+2,319]中随机选取一条指令并执行; 重复A—E,直到执行320次指令。 2.指令序列变换成页地址流 设:(1)页面大小为1K; 用户内存容量为4页到32页; 用户虚存容量为32K。 在用户虚存中,按每K存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为: 第0条—第9条指令为第0页(对应虚存地址为[0,9]); 第10条—第19条指令为第1页(对应虚存地址为[10,19]); 。。。。。。。。。。。。。。。。。。。。。 第310条—第319条指令为第31页(对应虚存地址为[310,319]); 按以上方式,用户指令可组成32页。 3. 计算并输出下述各种算法在不同内存容量下的命中率。 FIFO先进先出的算法 LRR最近最少使用算法 OPT最佳淘汰算法(先淘汰最不常用的页地址) LFR最少访问页面算法 NUR最近最不经常使用算法 3.实验环境 在486机或586机上用TC语言实现 4.实验提示 提示:A.命中率=1-页面失效次数/页地址流长度 B.本实验中,页地址流长度为320,页面失效次数为每次访问相应指令时,该指令所对应的页不在内存的次数。 C.关于随机数产生方法,采用TC系统提供函数RAND()和RANDOMIZE()来产生。 5.实验运行结果 试验输出如下(输出包括了用户内存从3K到32K的各种不同情况) PAGE FIFO LRR OPT LFR NUR 试验结论 从实验数据来看,OPT算法为最好的一种算法。参考程序见下: #includestdio.h #includeiostream.h #include stdlib.h #includetime.h struct aa{ int page; int count; aa* next; }; void main() { time_t t; srand(unsigned(time(t))); int i,n,j,ii,m,answer,ffalse,count,fangfa,temp1,min,nn,mm; double sum; aa *head,*tail,*temp,*table,*first,*ti; /* nn=4;mm=1; for(nn=4;nn32;nn++) { for(mm=1;mm5;mm++) {*/ cinm; //m=nn; coutendl; coutfangfa: 1-FIFO;2-LRR;3-OPT;4-LFR;5-NURendl; coutMothed:; cinfangfa; //fangfa=mm; ffalse=0; answer=0; table=new(aa); temp=table; table-page=-1; table-count=0; head=table; for(ii=2;ii=m;ii++) { table=new(aa); table-page=-1; table-count=0; temp-next=table; temp=table; if (ii==m){table-next=NULL;} } tail=table; temp=head; first=head; count=0; i=0; while(i320) { min=400; if (count==0) {n=(rand()%320+1)%320; j=n/10;} if (count==1) {n=rand()%(n+1);j=n/10;} if(count==2) {j=((n+1)%320)/10;} if(count==3) {j=((rand()%(320-n-2))+n+2)/1

文档评论(0)

wendang_12 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档