广东海洋大学虚拟存储器管理

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

广东海洋大学学生实验报告书(学生用表)实验名称虚拟存储器管理课程名称计算机操作系统学院(系)数学与计算机学院专业班级学生姓名学号实验地点实验日期一、实验目的请求页式虚存管理是常用的虚拟存储管理方案之一。通过请求页式虚存管理中对页面置换算法的模拟,有助于理解虚拟存储技术的特点,并加深对请求页式虚存管理的页面调度算法的理解。二、实验内容编程模拟一个拥有若干个虚页的进程在给定的若干个实页中运行、并在缺页中断发生时分别使用FIFO和LRU算法进行页面置换的情形。其中虚页的个数可以事先给定(例如10个),对这些虚页访问的页地址流(其长度可以事先给定,例如20次虚页访问)可以由程序随机产生,也可以事先保存在文件中。要求程序运行时屏幕能显示出置换过程中的状态信息并输出访问结束时的页面命中率。程序应允许通过为该进程分配不同的实页数,来比较两种置换算法的稳定性。三、实验步骤1.实验说明实验中进程的数量、资源的种类以及每种资源的总量Total[j]最好允许动态指定。初始时每个进程运行过程中的最大资源需求量Max[i,j]和系统已分配给该进程的资源量Allocation[i,j]均为已知(这些数值可以在程序运行时动态输入),而算法中其他数据结构的值(包括Need[i,j]、Available[j])则需要由程序根据已知量的值计算产生。2.实验流程GDOU-B-11-112YN发生缺页NY主页面OPT算法LRU算法开始取指令取指令中的负号查页表页标志=1?形成绝对地址输出绝对地址输出*页号表示发生缺页中断有后续指令取下条指令输出缺页数及缺页率结束四、实验源程序#includeiostream#includemath.h#includemalloc.husingnamespacestd;#defineM9#defineN20typedefstructnode1/*页面的数据结构*/{intnum;intage;intstate;intblocknum;}page;typedefstructnode2/*内存块的数据结构*/{intnum;intstate;intpagenum;intage;}Block;voidLRU(Blockb[],intn,pagep[],intm)/*最近最少使用页面置换算法*/{inti,j,j1,k,mm,mn,flag=0;floatnum=0,c=0;for(j=0;jm;j++){for(mm=0;mmn;mm++){if(b[mm].pagenum==p[j].num)flag=1;}if(flag==1)coutendl此次未出现缺页(NF)endl;elseif(flag==0){c++;coutendl出现缺页(F)\n;if(p[j].state==0){for(i=0;in;i++){if(b[i].state==0){p[j].blocknum=b[i].num;p[j].state=1;b[i].pagenum=p[j].num;b[i].state=1;break;}}if(i=n){for(mn=j-1;mn=0;mn--){if(numn){num++;for(j1=mn+1;j1=j-1;j1++){if(p[mn].num==p[j1].num){num--;}}}if(num==n){break;}}for(mm=0;mmn;mm++){if(p[mn].num==b[mm].pagenum){k=mm;break;}}b[k].pagenum=p[j].num;b[k].age=0;p[j].blocknum=b[mm].num;p[j].state=1;}}}cout页面调序列为:;for(mm=0;mmn;mm++){coutb[mm].pagenum;}coutendlendl;flag=0;num=0;}cout缺页总次数:cendl;cout缺页率:c/12endl;}voidOPT(Blockb[],intn,pagep[],intm)/*最优页面置换算法*/{inti,j,k,mm,mn,flag=0;intmaxage=-1;floatc=0;for(j=0;jm;j++){for(mm=0;mmn;mm++){if(b[mm].pagenum==p[j].num)flag=1;}if(flag==1)coutendl此次未出现缺页(NF)endl;elseif(flag==0){c++;coutendl出现缺页(F)\n;if(p[j].state==0){for(i=0;in;i++){if(b[i].state==0){p[j].blocknum=b[i].num;p[j].state=1;b[i].pagenum=p[j].num;b[i].state=1;break;}}if(i=n){for(mm=0;mmn;mm++){for(mn=j+1;mnm;mn++){if(b[mm].pagenum==p[mn].num){b[mm].age=mn;break;}}if(mn=m){b[mm].age=100;}}for(k=0;kn;k++){if(maxageb[k].age){maxage=b[k].age;mm=k;}}b[mm].pagenum=p[j].num;b[mm].age=0;p[j].blocknum=b[mm].num;p[j].state=1;}}}cout页面序列为:endl;for(mm=0;mmn;mm++){coutb[mm].pagenum;}coutendlendl;flag=0;maxage=-1;}cout缺页总次数:cendl;cout缺页率:c/12endl;}intdisplay(Blockb[],intm,pagepag[],intn){intchose;for(inti=0;in;i++){pag[i].age=0;pag[i].state=0;pag[i].blocknum=-1;}for(i=0;im;i++){b[i].num=i;b[i].state=0;b[i].pagenum=-1;b[i].age=0;}cout1.LRU替换算法\n2.OPT替换算法\n0.退出endl;cout请输入您的选择:;cinchose;return(chose);}voidmain(){Blockb[M];pagepag[N];intchose;intm,n;cout***********虚拟存储器LRU算法,OPT算法************endl;cout请输入内存块个数:endl;cinm;cout请输入页面个数:endl;cinn;cout请输入页面序列:endl;for(inti=0;in;i++){cinpag[i].num;}while(1){chose=display(b,m,pag,n);if(chose==1){LRU(b,m,pag,n);coutendlendl;}elseif(chose==2){OPT(b,m,pag,n);coutendlendl;}elseif(chose==0){exit(0);}}}五、实验结果六.实验感想:这两种算法中,最优置换的缺页率最少,最近最少使用算法次之。最佳值换算发是无法实现的,但是却可以用来评价其他的算法。LRU算法算法性能比较差,是因为它所依据的条件是各个页面调入内存的机间,而页面调入的先后顺序并不能反应页面的使用情况。

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功