存储管理实验实验报告.doc

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

实验三 存储管理 实验报告: 程序流程: 先进先出(FIFO)页面置换算法 这是最早出现的置换算法。该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。该算法实现简单,只需把一个进程已调入内存的页面,按先后次序链接成一个队列,并设置一个指针,称为替换指针,使它总是指向最老的页面。但该算法与进程实际运行的规律不相适应,因为在进程中,有些页面经常被访问,比如,含有全局变量、常用函数、例程等的页面,FIFO算法并不能保证这些页面不被淘汰。 最近最久未使用(LRU)置换算法 FIFO置换算法性能之所以较差,是因为它所依据的条件是各个页面调入内存的时间,而页面调入的先后并不能反映页面的使用情况。最近最久未使用(LRU)的页面置换算法,是根据页面调入内存后的使用情况进行决策的。由于无法预测各页面将来的使用情况,只能利用“最近的过去”作为“最近的将来”的近似,因此,LRU置换算法是选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间t,当须淘汰一个页面时,选择现有页面中其t值最大的,即最近最久未使用的页面予以淘汰。 源码详细注释: #includestdio.h #includetime.h #includestdlib.h main() { //定义变量,数组(fifo) int i,j,k,m,n,max,ChangeNumber; int counter=0; int times[3]={0}; short PageNumber[20]; short PageTable[3]={0}; //定义变量,数组(lur) int k2,m,n,min,ChangeNumber2; int counter2=0; int times2[3]={0}; short PageTable2[3]={0}; //是以当前时间为种子,产生随意数 srand(time(NULL)); for(i=0;i20;i++) { PageNumber[i]=rand()%10+1; printf(%d ,PageNumber[i]); } printf(\n); //物理块存储不重复的页面引用号(fifo) PageTable[0]=PageNumber[0]; for(n=1;n20;n++) { if(PageTable[0]!=PageNumber[n]) { PageTable[1]=PageNumber[n]; break; } } for(k=2;k20;k++) { if((PageTable[0]!=PageNumber[k])(PageTable[1]!=PageNumber[k])) { PageTable[2]=PageNumber[k]; n=k; m=k; break; } } counter=3; //物理块存储不重复的页面引用号(lur) PageTable2[0]=PageNumber[0]; for(n=1;n20;n++) { if(PageTable2[0]!=PageNumber[n]) { PageTable2[1]=PageNumber[n]; break; } } for(k2=2;n20;n++) { if((PageTable2[0]!=PageNumber[k2])(PageTable2[1]!=PageNumber[k2])) { PageTable2[2]=PageNumber[k2]; n=k2; break; } } //time标记(fifo) for(j=0,m;j3;j++,m--) { times[j]=m; } for(n=k;n20;n++) { //FIFO PageNumber——与物理块中不重复 if((PageNumber[n]!=PageTable[0])(PageNumber[n]!=PageTable[1])(PageNumber[n]!=PageTable[2])) {//time标记判断策略,时间最长 if(times[0]=times[1]) { max=times[0]; } else max=times[1]; if(max=

文档评论(0)

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

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

1亿VIP精品文档

相关文档