欢迎来到天天文库
浏览记录
ID:10802815
大小:253.69 KB
页数:21页
时间:2018-07-08
《请求页式管理的页面置换算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验报告课程:操作系统班级:姓名:学号:成绩:指导教师:实验日期:实验密级:预习程度:实验时间:仪器组次:必修/选修:实验序号:实验名称:访问实验二请求页式管理中的置换算法实验目的与要求:1.采用FIFO(先进先出)置换算法,发生缺页中断时,给出相应的字地址及页号,计算缺页中断率。2.采用LFU(最不经常使用)置换算法,发生缺页中断时,给出相应的字地址及页号,计算缺页中断率。实验仪器:名称型号数量微机1一、实验内容1.假设有一个用户进程P的地址空间为n(n=60)页,系统已在内存中给该进程分配有m(m2、,页长为1K。根据进程访问的字地址序列,采用不同的置换算法,分别计算缺页中断率。2.进程依次要访问的字地址序列(访问串),在0~1024*n-1(0~61439)中模拟随机发生,访问序列的随机生成规则为:50%的字地址前向顺序增长,25%的字地址均匀分布在前地址(低地址)部分,25%的字地址均匀分布在后地址(高地址)部分,为了减少模拟次数,前向顺序递增产生的字地址如小于1024*n-513(60927)则自动加512。模拟访问串长度为100。以n=60为例,字地址序列(访问串)的随机生成方法如下:(1)在[0,61439]之间随机产生起始字地址,当前访问的字地址记为k;(2)前3、向顺序递增产生的字地址为k+1+512;(3)前地址(低地址)在[0,k-1]内随机产生;(4)后地址(高地址)在[k+1,61439]内随机产生;(5)重复顺序递增、前地址区间随机产生、后地址区间随机产生的过程,概率分别为:50%、25%、25%。二、实验要求1.采用FIFO(先进先出)置换算法,发生缺页中断时,给出相应的字地址及页号,计算缺页中断率。2.采用LFU(最不经常使用)置换算法,发生缺页中断时,给出相应的字地址及页号,计算缺页中断率。三、实验思路首先应该确认全局变量,比如:物理块大小、进程数量;建立一个结构体用于记录页面号和页面调度次数,并定义好所要使用的变量,如4、记录调入页面的序号队列queue[psize]、初始化情况下已经分配的页面数rearp、在查找时是否有相同页面flag(初值为1表示没有)、在LFU中最先进去的页面号frontlea。随机数产生序列函数:此函数比较简单,按照要求写出即可。首先随机产生存储块号,并将其列入调入页面序号队列,然后用另一个随机变量suiji,保证重复顺序递增、前地址区间随机产生、后地址区间随机产生的概率是50%、25%、25%,有下面是具体实现部分。voidBuild()//产生页面调度的页面随机序列{inti=0;intsuiji;intk;//表示随机出来的存储块号printf("产生页面调度的页5、面随机序列:");srand(time(NULL));k=rand()%(61440);y[i++]=k;do{suiji=rand()%4+1;switch(suiji){case1:case2:if(k<61440-513)y[i++]=(k+1+512);k=k+1+512;break;case3:k=rand()%k;y[i++]=k;break;case4:k=rand()%(61439-k)+k;y[i++]=k;break;default:break;}}while(i<100);for(i=0;i<100;i++){printf("%2d",y[i]/1026、4);if(i%6==5)printf("");}printf("");}FIFO算法:在FIFO算法中存在三种情况,分别为:存在相同的进程、不存在相同的进程但是存在空闲物理块、不存在相同的进程并且不存在空闲物理块。根据这三种情况编写FIFO函数,并且在这些情况中,还需要使用到查找空闲物理块的子函数,在不存在相同的进程并且不存在空闲物理块的情况时即为发生缺页中断。(1)查找空闲物理块函数:intsearchpb()//查找空闲物理块,成功返回值是物理块号,否则就是-1{intj,m;for(j=0;j7、){m=j;returnm;break;}}return-1;}(2)FIFO函数(省略在程序中);(3)缺页中断率的计算:根据公式缺页中断率=缺页次数/调用程序次数,即可得出缺页中断率。LFU思路:最不经常使用页面淘汰算法LFU(leastfrequentlyused)。该算法在需要淘汰某一页时,首先淘汰到当前时间为止,被访问次数最少的那一页。这只要在页表中给每一页增设一个访问计数器即可实现。每当该页被访问时,访问计数器加1,而发生一次缺页中断时,则淘汰计数值最小的那一页,并将所有的计数器
2、,页长为1K。根据进程访问的字地址序列,采用不同的置换算法,分别计算缺页中断率。2.进程依次要访问的字地址序列(访问串),在0~1024*n-1(0~61439)中模拟随机发生,访问序列的随机生成规则为:50%的字地址前向顺序增长,25%的字地址均匀分布在前地址(低地址)部分,25%的字地址均匀分布在后地址(高地址)部分,为了减少模拟次数,前向顺序递增产生的字地址如小于1024*n-513(60927)则自动加512。模拟访问串长度为100。以n=60为例,字地址序列(访问串)的随机生成方法如下:(1)在[0,61439]之间随机产生起始字地址,当前访问的字地址记为k;(2)前
3、向顺序递增产生的字地址为k+1+512;(3)前地址(低地址)在[0,k-1]内随机产生;(4)后地址(高地址)在[k+1,61439]内随机产生;(5)重复顺序递增、前地址区间随机产生、后地址区间随机产生的过程,概率分别为:50%、25%、25%。二、实验要求1.采用FIFO(先进先出)置换算法,发生缺页中断时,给出相应的字地址及页号,计算缺页中断率。2.采用LFU(最不经常使用)置换算法,发生缺页中断时,给出相应的字地址及页号,计算缺页中断率。三、实验思路首先应该确认全局变量,比如:物理块大小、进程数量;建立一个结构体用于记录页面号和页面调度次数,并定义好所要使用的变量,如
4、记录调入页面的序号队列queue[psize]、初始化情况下已经分配的页面数rearp、在查找时是否有相同页面flag(初值为1表示没有)、在LFU中最先进去的页面号frontlea。随机数产生序列函数:此函数比较简单,按照要求写出即可。首先随机产生存储块号,并将其列入调入页面序号队列,然后用另一个随机变量suiji,保证重复顺序递增、前地址区间随机产生、后地址区间随机产生的概率是50%、25%、25%,有下面是具体实现部分。voidBuild()//产生页面调度的页面随机序列{inti=0;intsuiji;intk;//表示随机出来的存储块号printf("产生页面调度的页
5、面随机序列:");srand(time(NULL));k=rand()%(61440);y[i++]=k;do{suiji=rand()%4+1;switch(suiji){case1:case2:if(k<61440-513)y[i++]=(k+1+512);k=k+1+512;break;case3:k=rand()%k;y[i++]=k;break;case4:k=rand()%(61439-k)+k;y[i++]=k;break;default:break;}}while(i<100);for(i=0;i<100;i++){printf("%2d",y[i]/102
6、4);if(i%6==5)printf("");}printf("");}FIFO算法:在FIFO算法中存在三种情况,分别为:存在相同的进程、不存在相同的进程但是存在空闲物理块、不存在相同的进程并且不存在空闲物理块。根据这三种情况编写FIFO函数,并且在这些情况中,还需要使用到查找空闲物理块的子函数,在不存在相同的进程并且不存在空闲物理块的情况时即为发生缺页中断。(1)查找空闲物理块函数:intsearchpb()//查找空闲物理块,成功返回值是物理块号,否则就是-1{intj,m;for(j=0;j7、){m=j;returnm;break;}}return-1;}(2)FIFO函数(省略在程序中);(3)缺页中断率的计算:根据公式缺页中断率=缺页次数/调用程序次数,即可得出缺页中断率。LFU思路:最不经常使用页面淘汰算法LFU(leastfrequentlyused)。该算法在需要淘汰某一页时,首先淘汰到当前时间为止,被访问次数最少的那一页。这只要在页表中给每一页增设一个访问计数器即可实现。每当该页被访问时,访问计数器加1,而发生一次缺页中断时,则淘汰计数值最小的那一页,并将所有的计数器
7、){m=j;returnm;break;}}return-1;}(2)FIFO函数(省略在程序中);(3)缺页中断率的计算:根据公式缺页中断率=缺页次数/调用程序次数,即可得出缺页中断率。LFU思路:最不经常使用页面淘汰算法LFU(leastfrequentlyused)。该算法在需要淘汰某一页时,首先淘汰到当前时间为止,被访问次数最少的那一页。这只要在页表中给每一页增设一个访问计数器即可实现。每当该页被访问时,访问计数器加1,而发生一次缺页中断时,则淘汰计数值最小的那一页,并将所有的计数器
此文档下载收益归作者所有