页面调度.docx
- 文档编号:5730128
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:12
- 大小:53.96KB
页面调度.docx
《页面调度.docx》由会员分享,可在线阅读,更多相关《页面调度.docx(12页珍藏版)》请在冰豆网上搜索。
页面调度
实验报告
(2011/2012学年第一学期)
课程名称
操作系统
实验名称
页面调度
实验时间
2012
年
4
月
28
日
指导单位
指导教师
段卫华
学生姓名
班级学号
学院(系)
通达学院
专业
计算机通信
实验报告
实验名称
页面调度
指导教师
段卫华
实验类型
设计
实验学时
2
实验时间
2012.4.28
一、实验目的和要求
页面调度算法主要有:
FIFO,
最近最少使用调度算法(LRU),最佳算法(OPT)。
设计并编写程序模拟以上算法。
二、实验环境(实验设备)
Windows7旗舰版
联想G450PC
三、实验原理及内容
①实验代码
②实验截图
实验报告
①实验代码
/*
页面置换算法
FIFO算法
OPT算法
LRU算法
*/
#include
constintMAX=1000;
/*
页面请求序列request
页面请求个数n
分配的页框数m
函数返回值缺页次数
*/
intopt(intrequest[],intn,intm)
{
inti,j;
int*frame=newint[m];//系统分配的页框数
int*future=newint[m];//将来出现的时机
intr;//缺页次数统计
intcurrent;//当前多少个页面在内存中
intk;//查找要淘汰的页面
intf;
r=0;
current=0;
for(i=0;i { //查找页面是否在内存中 for(j=0;j { if(request[i]==frame[j]) { cout< break; } } if(j>=current)//页面没有找到 { r++;//缺页次数加1 if(current { frame[current]=request[i]; current++; cout< } else//页框已经用完,需要淘汰页面 { //查找每个页框中,页面将来的出现时间 for(k=0;k { for(f=i+1;f { if(frame[k]==request[f]) { future[k]=f; break; } } if(f>=n)future[k]=MAX; } intlatest; latest=0; //查找下次出现时间最长的,或将来再也不出现的 for(f=0;f { if(future[f]>future[latest]) latest=f; } cout< frame[latest]=request[i]; } } else//页面找到 { //什么也不做 } } delete[]frame; delete[]future; returnr; } /* 页面请求序列request 页面请求个数n 分配的页框数m 函数返回值缺页次数 */ intFIFO(intrequest[],intn,intm) { inti,j; int*frame=newint[m];//系统分配的页框数 intr;//缺页次数统计 intcurrent;//当前多少个页面在内存中 intf; r=0; current=0; for(i=0;i { //查找页面是否在内存中 for(j=0;j { if(request[i]==frame[j]) { cout< break; } } if(j>=current)//页面没有找到 { r++;//缺页次数加1 if(current { frame[current]=request[i]; current++; cout< } else//页框已经用完,需要淘汰页面 { cout< //将frame[1..m-1]中的页面前移 for(f=0;f { frame[f]=frame[f+1]; } //将新的页面装入frame[m-1]中 frame[m-1]=request[i]; } } else//页面找到 { //什么也不做 } } delete[]frame; returnr; } /* 页面请求序列request 页面请求个数n 分配的页框数m 函数返回值缺页次数 */ intLRU(intrequest[],intn,intm) { inti,j; int*frame=newint[m];//系统分配的页框数 int*last=newint[m]; intr;//缺页次数统计 intcurrent;//当前多少个页面在内存中 r=0; current=0; for(i=0;i { last[i]=0; } for(i=0;i { //查找页面是否在内存中 for(j=0;j { if(request[i]==frame[j]) { cout< last[j]=i; break; } } if(j>=current)//页面没有找到 { r++;//缺页次数加1 if(current { frame[current]=request[i]; last[current]=i; current++; cout< } else//页框已经用完,需要淘汰页面 { inttoReplace=0; intmin=MAX; for(intk=0;k { if(last[k] { min=last[k]; toReplace=k; } } //将新的页面装入frame[m-1]中 cout< frame[toReplace]=request[i]; last[toReplace]=i; } } else//页面找到 { last[j]=i; } } delete[]frame; delete[]last; returnr; } intmain() { intrequest[]={4,3,2,1,4,3,5,4,3,2,1,5}; intn,m,r; n=12; m=3; r=opt(request,n,m); cout<<"opt算法缺页次数: "< "<<((double)r/(double)n)< cout< r=FIFO(request,n,m); cout<<"FIFO算法缺页次数: "< "<<((double)r/(double)n)< cout< cout< r=LRU(request,n,m); cout<<"LRU算法缺页次数: "< "<<((double)r/(double)n)< cout< return0; } 实验报告 ②实验截图 实验报告 实验报告 四、实验小结(包括问题和解决方法、心得体会、意见与建议等) 通过此次实验,我学到了拥有页面交换机制的操作系统总是把当前进程急需处理的部分页面换入到内存中,而把更多暂时不需要处理的页面放置到外存中。 今后我会自己多动手实践,勤于向老师和同学请教,希望把此课程学的更好! 将平时学的理论进行实际操作,而在实际操作中,也对概念加深了了解。 五、指导教师评语 成绩 批阅人 日期
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 页面 调度