合工大页面置换算法操作系统课程设计报告Word文档下载推荐.doc
- 文档编号:13110608
- 上传时间:2022-10-05
- 格式:DOC
- 页数:55
- 大小:995.24KB
合工大页面置换算法操作系统课程设计报告Word文档下载推荐.doc
《合工大页面置换算法操作系统课程设计报告Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《合工大页面置换算法操作系统课程设计报告Word文档下载推荐.doc(55页珍藏版)》请在冰豆网上搜索。
2.关键代码 8
五、设计结果 22
六、设计体会 24
七、附录 24
一、设计题目
第15题:
1.建立相应的数据结构;
2.在屏幕上显示页面的状况;
3.时间的流逝可以用下面几种方法模拟:
(a)按键盘,每按一次可以认为过一个时间单位;
(b)相应WM_TIMER;
4.将一批页的置换情况存入磁盘文件,以后可以读出并重放;
5.计算页面的缺页次数、缺页后的页面置换次数;
6.支持算法:
FIFO、LRU、最佳置换算法。
二、开发环境与工具
开发环境:
Windows
开发工具:
VC6.0、Eclipse
三、设计原理
1.最佳(Optimal)置换算法
最佳置换算法是由Belady于1966年提出的一种理论上的算法。
其所选择的被淘汰页面将是以后永不使用的,或是在未来最长时间内不再被访问的页面。
采用最佳置换算法通常可以保证获得最低的缺页率,但由于人们目前还无法预知,一个进程在内存的若干个页面中,哪一个页面是未来最长时间内不再被访问的,因而该算法是无法实现的,但可以用该算法去评价其他算法。
现举例说明如下:
假定系统为某进程分配了三个物理快,并考虑有以下的页面号引用串:
7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1
进程运行时,先将7,0,1三个页面放入内存。
以后,当进程要访问页面2时,将会产生缺页中断。
此时OS根据最佳置换算法将将选择页面7予以淘汰。
这是因为页面0将作为第5个被访问的页面,页面1是第14个被访问的页面,而页面7则要在第18次页面访问是才需调入。
下次访问页面0时,因它已在内存而不必产生缺页中断。
当进程访问页面3时,又讲引起页面1被淘汰;
因为它在现在的1,2,0三个页面中,将是以后最晚才被访问的。
图1示出了采用最佳置换算法时的置换图。
由图可以看出,采用最佳置换算法发生了6次页面置换。
页面号
7
1
2
3
4
物理快1
物理快2
物理快3
2.先进先出(FIFO)页面置换算法
FIFO算法是最早出现的置换算法,该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最长的页面予以淘汰。
该算法实现简单,只需要把已经调入内存的页面按先后次序排成一个队列,当发生缺页时,将队首页面出队,再将找到的页面入队,这样就完成了页面置换的任务。
以书上的为例有如下表格:
7 0 1 2 0 3 4 2 3 0 3 2 1 2 0 1 7 0
但该算法与程序的运行规律不相适应,它忽视了程序运行的局部性原理。
有可能造成需要访问的页面经常性的被置换。
3.最近最久未使用(LRU)页面置换算法
FIFO算法性能较差,它是根据页面进入的先后次序进行置换,并不能反映页面的使用情况。
最近最久未使用(LRU)算法的基本思想是利用“最近的过去”来预测“最近的未来”,这个也是根据程序运行的局部性原理。
由于最佳置换算法只有理论价值,实际系统中是无法使用的,所以就利用最近的过去来预测未来。
该算法每访问一个字段,记录一个自上次以来被访问以来所经历的时间t。
当需要淘汰一个页面时,选择所有页面中t值最大的,即最近最久未使用的页面予以置换。
以书上为例,有如下表格:
四、重要算法
1.算法流程图
FIFO算法流程图:
Y
i++
把p[i]的内容直接装入最上面一个空内存块,i++
把page[]中最先装入的页面置换出去.i++
Page[]是否有空
当前p[]中第i个元素是否已在内存中
页面走向存入数组p[]中,内存块用page[]表示初始化为0
开始
N
输出当前内存块状态
结束
LRU算法流程图:
开始
当前p[]中第i个元素是否已在内存
把page[]中最近最久未使用的页面置换出去.i++
OPT算法流程图:
结束
把page[]中以后一段时间都不使用或是使用时间离现在最远的换出.i++
2.关键代码
1.FIFO算法代码:
publicclassFIFOControl{
//privateint[]num={7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1};
//使用无参构造函数
privateint[]num=newint[50];
privateintnumLength;
privateint[]pg=newint[10];
privateint[]timepg=newint[10];
privateintPageNum;
publicint[][]store;
FIFOControl()
{
this.PageNum=3;
numLength=20;
int[]numtemp={7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1};
for(inti=0;
i<
numLength;
i++)
{
num[i]=numtemp[i];
}
for(inti=0;
10;
i++)
pg[i]=-1;
timepg[i]=1;
store=newint[numLength][PageNum+1];
for(inti=1;
PageNum+1;
for(intj=0;
j<
j++)
{
store[j][i]=-1;
}
for(intk=0;
k<
k++)
store[k][0]=0;
}
FIFOControl(intnump,int[]n,intnlength)//参数:
1.物理块数2.页面序列号3.页面序列号数组长度meiyong
this.PageNum=nump;
numLength=nlength;
for(intj=0;
nlength;
j++)
num[j]=n[j];
privatebooleancheckInPage(int[]p,intplength,intkeynum)
for(intjj=0;
jj<
plength;
jj++)
timepg[jj]++;
if(keynum==p[j])
returntrue;
returnfalse;
privatevoidcaculate()
//将物理页框装满
inttimer=0;
//横着的指针
PageNum;
pg[i]=num[i];
i;
j++)//加时间
timepg[j]++;
for(intjj=0;
jj++)//数据放到store中去
store[timer][jj+1]=pg[jj];
}
timer++;
//把后面的数据按先进先出的顺序放到物理块中
for(inti=PageNum;
if(checkIn
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 合工大 页面 置换 算法 操作系统 课程设计 报告