欢迎来到天天文库
浏览记录
ID:55041053
大小:38.00 KB
页数:10页
时间:2020-04-26
《页面置换算法(操作系统试验).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验4页面置换算法(2学时)一、实验目的通过实验加强对虚拟存储管理中页面置换算法的理解和掌握。二、实验内容编写程序实现虚拟存储管理中OPT,FIFO,LRU页面置换算法。三、实验要求1、任意给出一组页面访问顺序(如页面走向是1、2、5、7、5、7、1、4、3、5、6、4、3、2、1、5、2)。2、分配给该作业一定的物理块(如3块、4块等)。3、利用OPT,FIFO,LRU页面置换算法模拟页面置换过程并计算其缺页率。4、每访问一个页面均需给出内存中的内容(内存中的页面号),若有淘汰还需给出淘汰的页面号。5、通过给出特
2、殊的页面访问顺序,分配不同的物理块,利用FIFO算法计算其缺页率,进一步理解Belady现象。6、(附加)实现CLOCK置换算法,修改位可在确定页面号时直接任意给出。代码部分:#include#include#includevoidrand(intn,intp[])//这函数是产生n个1~10的随机数放到p[]数组里面{intSTART=1;intEND=10;intv;inti;inta;srand(time(NULL));for(i=0;i3、){v=rand()%(END-START+1)+START;p[i]=v;cout<4、ewint[m];rand(m,p2);for(inti=0;i5、就返回在物理块中的位置给Searchreturn-1;//找不到,就返回-1}intMax(Pro*page,intN)//LRU算法用到的{//找出在page块中,time最大的值和位置,同时位置返回//time最大,就代表了最久没被使用的数inte=page[0].time,i=0;intk=0;while(i6、算法用到的{//找出如果page[t]要等于p,并且zaip[i]~p[m]这个区间内,走的次数,最大的数intcount=0;//count是保存走的步数for(intj=i;j7、;intmin=page[0].time;for(inti=0;ipage[i].time)k=i;}returnk;}voidFIFO(Prop[],Propage[],intm,intN)//p[]数组是存放页面的空间,m是页面的长度{//page[]是可以使用的物理块,N是物理块的大小floatn=0;//n用来保存缺页的次数inti=0;//i是循环变量,它是表示走到页面的位置。intt=0;//t是用来表示物理块走到的位置cout<<"页面置换情况:"<8、=0;i=0)continue;//找到相同的页面,就跳到下一次循环,不做处理。else//在找不到的时候,通过t=t%N,求出这次来替换物理块的位置{t=t%N;n++;//缺页数加1page[t].num=p[i].num;t++;//位置加1}}cout<<"缺页次数:"<
3、){v=rand()%(END-START+1)+START;p[i]=v;cout<4、ewint[m];rand(m,p2);for(inti=0;i5、就返回在物理块中的位置给Searchreturn-1;//找不到,就返回-1}intMax(Pro*page,intN)//LRU算法用到的{//找出在page块中,time最大的值和位置,同时位置返回//time最大,就代表了最久没被使用的数inte=page[0].time,i=0;intk=0;while(i6、算法用到的{//找出如果page[t]要等于p,并且zaip[i]~p[m]这个区间内,走的次数,最大的数intcount=0;//count是保存走的步数for(intj=i;j7、;intmin=page[0].time;for(inti=0;ipage[i].time)k=i;}returnk;}voidFIFO(Prop[],Propage[],intm,intN)//p[]数组是存放页面的空间,m是页面的长度{//page[]是可以使用的物理块,N是物理块的大小floatn=0;//n用来保存缺页的次数inti=0;//i是循环变量,它是表示走到页面的位置。intt=0;//t是用来表示物理块走到的位置cout<<"页面置换情况:"<8、=0;i=0)continue;//找到相同的页面,就跳到下一次循环,不做处理。else//在找不到的时候,通过t=t%N,求出这次来替换物理块的位置{t=t%N;n++;//缺页数加1page[t].num=p[i].num;t++;//位置加1}}cout<<"缺页次数:"<
4、ewint[m];rand(m,p2);for(inti=0;i5、就返回在物理块中的位置给Searchreturn-1;//找不到,就返回-1}intMax(Pro*page,intN)//LRU算法用到的{//找出在page块中,time最大的值和位置,同时位置返回//time最大,就代表了最久没被使用的数inte=page[0].time,i=0;intk=0;while(i6、算法用到的{//找出如果page[t]要等于p,并且zaip[i]~p[m]这个区间内,走的次数,最大的数intcount=0;//count是保存走的步数for(intj=i;j7、;intmin=page[0].time;for(inti=0;ipage[i].time)k=i;}returnk;}voidFIFO(Prop[],Propage[],intm,intN)//p[]数组是存放页面的空间,m是页面的长度{//page[]是可以使用的物理块,N是物理块的大小floatn=0;//n用来保存缺页的次数inti=0;//i是循环变量,它是表示走到页面的位置。intt=0;//t是用来表示物理块走到的位置cout<<"页面置换情况:"<8、=0;i=0)continue;//找到相同的页面,就跳到下一次循环,不做处理。else//在找不到的时候,通过t=t%N,求出这次来替换物理块的位置{t=t%N;n++;//缺页数加1page[t].num=p[i].num;t++;//位置加1}}cout<<"缺页次数:"<
5、就返回在物理块中的位置给Searchreturn-1;//找不到,就返回-1}intMax(Pro*page,intN)//LRU算法用到的{//找出在page块中,time最大的值和位置,同时位置返回//time最大,就代表了最久没被使用的数inte=page[0].time,i=0;intk=0;while(i6、算法用到的{//找出如果page[t]要等于p,并且zaip[i]~p[m]这个区间内,走的次数,最大的数intcount=0;//count是保存走的步数for(intj=i;j7、;intmin=page[0].time;for(inti=0;ipage[i].time)k=i;}returnk;}voidFIFO(Prop[],Propage[],intm,intN)//p[]数组是存放页面的空间,m是页面的长度{//page[]是可以使用的物理块,N是物理块的大小floatn=0;//n用来保存缺页的次数inti=0;//i是循环变量,它是表示走到页面的位置。intt=0;//t是用来表示物理块走到的位置cout<<"页面置换情况:"<8、=0;i=0)continue;//找到相同的页面,就跳到下一次循环,不做处理。else//在找不到的时候,通过t=t%N,求出这次来替换物理块的位置{t=t%N;n++;//缺页数加1page[t].num=p[i].num;t++;//位置加1}}cout<<"缺页次数:"<
6、算法用到的{//找出如果page[t]要等于p,并且zaip[i]~p[m]这个区间内,走的次数,最大的数intcount=0;//count是保存走的步数for(intj=i;j7、;intmin=page[0].time;for(inti=0;ipage[i].time)k=i;}returnk;}voidFIFO(Prop[],Propage[],intm,intN)//p[]数组是存放页面的空间,m是页面的长度{//page[]是可以使用的物理块,N是物理块的大小floatn=0;//n用来保存缺页的次数inti=0;//i是循环变量,它是表示走到页面的位置。intt=0;//t是用来表示物理块走到的位置cout<<"页面置换情况:"<8、=0;i=0)continue;//找到相同的页面,就跳到下一次循环,不做处理。else//在找不到的时候,通过t=t%N,求出这次来替换物理块的位置{t=t%N;n++;//缺页数加1page[t].num=p[i].num;t++;//位置加1}}cout<<"缺页次数:"<
7、;intmin=page[0].time;for(inti=0;ipage[i].time)k=i;}returnk;}voidFIFO(Prop[],Propage[],intm,intN)//p[]数组是存放页面的空间,m是页面的长度{//page[]是可以使用的物理块,N是物理块的大小floatn=0;//n用来保存缺页的次数inti=0;//i是循环变量,它是表示走到页面的位置。intt=0;//t是用来表示物理块走到的位置cout<<"页面置换情况:"<8、=0;i=0)continue;//找到相同的页面,就跳到下一次循环,不做处理。else//在找不到的时候,通过t=t%N,求出这次来替换物理块的位置{t=t%N;n++;//缺页数加1page[t].num=p[i].num;t++;//位置加1}}cout<<"缺页次数:"<
8、=0;i=0)continue;//找到相同的页面,就跳到下一次循环,不做处理。else//在找不到的时候,通过t=t%N,求出这次来替换物理块的位置{t=t%N;n++;//缺页数加1page[t].num=p[i].num;t++;//位置加1}}cout<<"缺页次数:"<
此文档下载收益归作者所有