资源描述:
《存储管理实验实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验三存储管理实验报告:程序流程:先进先出(FIFO)页面置换算法这是最早出现的置换算法。该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。该算法实现简单,只需把一个进程已调入内存的页面,按先后次序链接成一个队列,并设置一个指针,称为替换指针,使它总是指向最老的页面。但该算法与进程实际运行的规律不相适应,因为在进程中,有些页面经常被访问,比如,含有全局变量、常用函数、例程等的页面,FIFO算法并不能保证这些页面不被淘汰。最近最久未使用(LRU)置换算法先进先出(FIFO)页面置换算法
2、将前三个不重复的页面引用存入分配的物理块PageTable2[3]定义变量、数组,分配3个物理块、20个页面号引用产生随机数,并将随机产生的数存入PageNumber[20],printf标记数组time2[3],存储时间时间越长的为最先进入的。依次内容为0,1,2将前三个不重复的页面引用存入分配的物理块PageTable[3]对PageNumber[20]中没存入物理块的页面引入循环顺序进行判断。标记数组time[3],存储时间时间越长的为最先进入的。依次内容为2,1,0重复?NY更新time2标记对应的物
3、理块,即为0N最近?对PageNumber[20]中没存入物理块的页面引入循环顺序进行判断。Y最久?重复?NY与time2标记中最长时间的物理块内容替换,counter2+1,修改time2标记执行下一个页面引用号,至循环结束与time标记中最长时间的替换,counter+1,修改time标记,执行下一个页面引用号执行下一个页面引入号,counter不发生变化循环结束,printf("FIFO页面置换次数为%d",counter-3);printf("LRU页面置换次数为%d",counter2-3);最近最
4、久未使用(LRU)置换算法FIFO置换算法性能之所以较差,是因为它所依据的条件是各个页面调入内存的时间,而页面调入的先后并不能反映页面的使用情况。最近最久未使用(LRU)的页面置换算法,是根据页面调入内存后的使用情况进行决策的。由于无法预测各页面将来的使用情况,只能利用“最近的过去”作为“最近的将来”的近似,因此,LRU置换算法是选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间t,当须淘汰一个页面时,选择现有页面中其t值最大的,即最近最久未使用的页
5、面予以淘汰。源码详细注释:#include#include#includemain(){//定义变量,数组(fifo)inti,j,k,m,n,max,ChangeNumber;intcounter=0;inttimes[3]={0};shortPageNumber[20];shortPageTable[3]={0};//定义变量,数组(lur)intk2,m,n,min,ChangeNumber2;intcounter2=0;inttimes2[3]={
6、0};shortPageTable2[3]={0};//是以当前时间为种子,产生随意数srand(time(NULL));//将随机数存入,并打印for(i=0;i<20;i++){PageNumber[i]=rand()%10+1;printf("%d",PageNumber[i]);}printf("");//物理块存储不重复的页面引用号(fifo)PageTable[0]=PageNumber[0];for(n=1;n<20;n++){if(PageTable[0]!=PageNumber[n]){
7、PageTable[1]=PageNumber[n];break;}}for(k=2;k<20;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;n<20;n++){if(PageTable2[0]!=P
8、ageNumber[n]){PageTable2[1]=PageNumber[n];break;}}for(k2=2;n<20;n++){if((PageTable2[0]!=PageNumber[k2])&&(PageTable2[1]!=PageNumber[k2])){PageTable2[2]=PageNumber[k2];n=k2;break;}}//time标记(fifo)for(j=0