欢迎来到天天文库
浏览记录
ID:42746682
大小:42.51 KB
页数:9页
时间:2019-09-20
《页面置换 实验 操作系统》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、一、实验名称:模拟操作系统的页面置换二、实验目的:1、掌握操作系统的页面置换过程,加深理解页式虚拟存储器的实现原理。2、掌握用随机数生成满足一定条件的指令地址流的方法。3、掌握页面置换的模拟方法。三、实验内容:1、用C++等,编制程序。2、模拟操作系统采用OPT、FIFO和LRU算法进行页面置换的过程。3、设程序中地址范围为0到32767,采用随机数生成256个指令地址,满足50%的地址是顺序执行,25%向前跳,25%向后跳。为满足上述条件,可采取下列方法:设d0=10000,第n个指令地址为dn,第n+1个指令地址为dn+1,n的取值范围为0到255。每次生成
2、一个1到1024范围内的随机数a,如果a落在1到512范围内,则dn+1=dn+1。如果a落在513到768范围内,则设置dn+1为1到dn范围内一个随机数。如果a落在769到1024范围内,则设置dn+1为dn到32767范围内一个随机数。4、页面大小的取值范围为1K,2K,4K,8K,16K。按照页面大小将指令地址转化为页号。对于相邻相同的页号,合并为一个。5、分配给程序的内存块数取值范围为1块,2块,直到程序的页面数。6、分别采用OPT、FIFO和LRU算法对页号序列进行调度,计算出对应的缺页中断率。7、打印出页面大小、分配给程序的内存块数、算法名、对应的
3、缺页中断率。8、分析页面大小和分配给程序的内存块数对缺页中断率的影响。分析不同的页面置换算法的调度性能。四、程序主要流程图:实验源程序:主要程序清单:voidCMyDlg::run(intstart,intend,int*add,intk)//模拟应用程序运行过程{intm,m1,m2;while(320!=k){m=rand()%(end-1);//选取地址起点m++;//顺序执行一条指令add[k++]=m;m1=rand()%m;//在前地址[0,m+1]中选取一条指令并执行add[k++]=m1;m1++;//顺序执行一条指令add[k++]=m1;m2
4、=rand()%(end-m1)+m1;//在后地址[m1+1,319]中随机选取一条指令并执行add[k++]=m2;}}intCMyDlg::addresstopage(int*add,int*pag,intk,intsize)//地址序列转换成页流{for(inti=0;i<320;i++){if((add[i]/(10*size))!=(add[i-1]/(10*size)))pag[k++]=add[i]/(10*size);}returnk;}intCMyDlg::fifo(int*num,intsize,int&count,intlen)//先来先
5、服务{intm[32],flag=0;for(inti=0;i6、size,int&count,intlen)///最近最久未使用置换算法{intm[32],m2[32],max,mark;for(inti=0;i=0;j--){if(m[k]==num[j]){m2[k]=i-j;break;}}}max=-1;for(k=0;k7、8、]==num[j]){m
6、size,int&count,intlen)///最近最久未使用置换算法{intm[32],m2[32],max,mark;for(inti=0;i=0;j--){if(m[k]==num[j]){m2[k]=i-j;break;}}}max=-1;for(k=0;k7、8、]==num[j]){m
7、8、]==num[j]){m
8、]==num[j]){m
此文档下载收益归作者所有