请求页式管理的页面置换算法

上传人:宝路 文档编号:21986286 上传时间:2017-11-25 格式:DOCX 页数:21 大小:289.51KB
返回 下载 相关 举报
请求页式管理的页面置换算法_第1页
第1页 / 共21页
请求页式管理的页面置换算法_第2页
第2页 / 共21页
请求页式管理的页面置换算法_第3页
第3页 / 共21页
请求页式管理的页面置换算法_第4页
第4页 / 共21页
请求页式管理的页面置换算法_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《请求页式管理的页面置换算法》由会员分享,可在线阅读,更多相关《请求页式管理的页面置换算法(21页珍藏版)》请在金锄头文库上搜索。

1、实 验 报 告课程: 操作系统 班级:姓名:学号:成绩: 指导教师: 实验日期:实验密级: 预习程度: 实验时间:仪器组次: 必修/选修: 实验序号:实验名称: 访问实验二 请求页式管理中的置换算法实验目的与要求:采用 FIFO(先进先出)置换算法,发生缺页中断时,给出相应的字地址及页号,计算缺页中断率。采用 LFU(最不经常使用)置换算法,发生缺页中断时,给出相应的字地址及页号,计算缺页中断率。实验仪器:名称 型号 数量微机 1一、实验内容假设有一个用户进程 P 的地址空间为 n(n=60)页,系统已在内存中给该进程分配有 m(m#include#include#include#includ

2、e#define Blocksize 8 /物理块的大小#define Procount 60 /进程的页面数#define psize 100 /进程的大小#define OneK 1024 /一个页面的大小typedef struct pageint num; /*记录页面号*/int count; /*记录最近调度此页面的次数*/Page; /* 页面逻辑结构,结构为方便算法实现设计*/Page BlockBlocksize; /*内存单元数*/int temppsizeBlocksize + 1=0; /*暂保存内存当前的状态:缓冲区*/int queuepsize; /*记录调入页面

3、序号*/int phbBlocksize;int frontp=0;int rearp=3;/初始化情况下,内存中已经分配 3 个页面int flag=1; /标志是否有相同页面,如有则 0,没有则 1int frontlea=0; /标志最先进去的页面号int FIFO_break=0;int LFU_break=0;void build() /产生页面调度的页面随机序列int i=0;int suiji;int k; /表示随机出来的存储块号printf(产生页面调度的页面随机序列:n);srand(time(NULL);k=rand()%(OneK * Procount);queuei+

4、=k/1024;dosuiji=rand()%4+1;switch(suiji)case 1:case 2:if(kProcount*OneK - 513)queuei+=(k+1+512)/1024;k=k+1+512;break;case 3:k=rand()%k;queuei+=k/1024;break;case 4:k=rand()%(61439 - k) + k;queuei+=k/1024;break;default:break;while(ipsize);for(i=0;ipsize;i+)printf(%2d ,queuei);if(i+1)%5=0)printf(n);pri

5、ntf(n);int searchpb()/查找空闲物理块 ,成功返回值是物理块号 ,否则就是-1int j,m;for(j=0; jBlocksize; j+)if(Blockj.num = -1)m = j;return m;break;return -1;void Init()/初始化内存int i;for(i=0;iBlocksize;i+)Blocki.num=-1;Blocki.count=0;Block0.num=0;Block1.num=5;Block2.num=6;void empty()int i;for(i=0;iBlocksize;i+)Blocki.count=0;

6、/计数器置零void empty_temp()int i,k;for(i=0;ipsize;i+)for(k=0;kBlocksize +1;k+)tempik=0;int FIFO()int i,p,k;for(i=0;ipsize;i+)for(k=0;kBlocksize;k+) /查找是否有相同页面if(queuei = Blockk.num) flag=0;if(flag=1) /没有查找到相同页面则开始调入页面if(searchpb()!=-1) /物理块有空闲p=searchpb();Blockp.num=queuei;rearp=(rearp+1) % Blocksize;el

7、se/发生缺页中断Blockfrontp.num=queuei;frontp=(frontp+1) % Blocksize;FIFO_break+;flag=1;p=frontp;tempi0=queuei;for(k=1;kBlocksize + 1;k+)tempik=Blockp.num;p=(p+1) % Blocksize;for(i=0;ipsize;i+)for(k=0;kBlocksize + 1;k+)if(tempik != -1)printf(%3d,tempik);elseprintf( );printf(n);printf(FIFO 算法中断率%2f,(float)F

8、IFO_break/100);return 1;int searchleast() /查找计数值最小的页面,返回其页号int k;int least;least=frontlea;for(k=0;kBlocksize;k+)if(Blockk.count Blockleast.count)least=k;return least;int LFU()int i,k,p;for(i=0;ipsize;i+)for(k=0;kBlocksize;k+) /查找是否有相同页面if(queuei = Blockk.num)flag=0;Blockk.count+;if(flag=1) /没有查找到相同页

9、面if(searchpb()!=-1) /物理块有空闲p=searchpb();Blockp.num=queuei;Blockp.count+;else /发生缺页中断p=searchleast();frontlea=(frontlea+1) % Blocksize;Blockp.num=queuei;Blockp.count+;empty();LFU_break+;flag=1;tempi0=queuei;for(k=0;kBlocksize;k+)tempik+1=Blockk.num;for(i=0;ipsize;i+)for(k=0;kBlocksize + 1;k+)if(tempik != -1)printf(%3d|%3d,tempik,Blockk.count);elseprintf( );printf(n);printf(LFU 算法中断率%f,(float)LFU_break/100);return 1;int main()build();printf(FIFO 算法n);Init();FIFO();empty_temp();printf(nn);printf(LFU 算法n);Init();LFU();empty_temp();printf(n);return 0;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号