页面置换算法实验报告Word下载.docx

上传人:b****5 文档编号:19386191 上传时间:2023-01-05 格式:DOCX 页数:14 大小:38.42KB
下载 相关 举报
页面置换算法实验报告Word下载.docx_第1页
第1页 / 共14页
页面置换算法实验报告Word下载.docx_第2页
第2页 / 共14页
页面置换算法实验报告Word下载.docx_第3页
第3页 / 共14页
页面置换算法实验报告Word下载.docx_第4页
第4页 / 共14页
页面置换算法实验报告Word下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

页面置换算法实验报告Word下载.docx

《页面置换算法实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《页面置换算法实验报告Word下载.docx(14页珍藏版)》请在冰豆网上搜索。

页面置换算法实验报告Word下载.docx

实验目的:

通过综合性课程设计题目的完成过程,运用所学操作系统知识,解决生活中遇到的实际问题,达到活学活用,所学所用的目的,进一步理解操作系统的学习目的,提高实际应用水平

指导教师签字:

、日期:

成绩:

指导教师签字:

日期:

硬件:

win-7系统笔记本

软件:

win-tc

课程设计进度计划

起至日期

工作内容

备注

13年12月上旬

13年12月中旬

13年12月下旬

收集素材

制定计划方案

设计制作

参考文献、资料索引

序号

文献、资料名称

编著者

出版单位

《计算机操作系统》(第3版)汤子瀛西安电子科技大学

《计算机操作系统》林果园清华大学出版社

《计算机操作系统》汤小丹西安电子科技大学出版社

一、实验目的

1.通过模拟实现几种基本页面置换的算法,了解虚拟存储技术的特点。

2.掌握虚拟存储请求页式存储管理中几种基本页面置换算法的基本思想,并至少用三种算法来模拟实现。

3.通过对几种置换算法页面的比较,来对比他们的优缺点,并通过比较更换频率来对比它们的效率。

二、实验内容:

设计一个虚拟存储区和内存工作区,并使用下述算法来模拟实现页面的置换:

1.先进先出的算法(FIFO)

2.最近最久未使用算法(LRU)

3.最佳置换算法(OPT)

三、实验分析

在进程运行过程中,若其所访问的页面不存在内存而需要把它们调入内存,但内存已无空闲时,为了保证该进程能够正常运行,系统必须从内存中调出一页程序或数据送磁盘的对换区中。

但应调出哪个页面,需根据一定的算法来确定,算法的好坏,直接影响到系统的性能。

一个好的页面置换算法,应该有较低的页面更换频率。

假设分给一作业的物理块数为3,页面数为20个。

页面号为(20个):

7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1

1.先进先出(FIFO)置换算法的思路

该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。

该算法实现简单,只需把一个进程已调入内存的页面,按照先后次序连接成一个队列,并设置一个替换指针,使它总指向最老的页面。

2.最近久未使用(LRU)置换算法的思路

最近久未使用置换算法的替换规则,是根据页面调入内存后的使用情况来进行决策的。

该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间,当需淘汰一个页面的时候选择现有页面中其时间值最大的进

行淘汰。

3.最佳(OPT)置换算法的思路

其所选择的被淘汰的页面,奖是以后不使用的,或者是在未来时间内不再被访问的页面,采用最佳算法,通常可保证获得最低的缺页率。

4.数据结构

structpageInfor

{

intcontent;

//页面号

inttimer;

//被访问标记

};

classPRA

public:

PRA(void);

intfindSpace(void);

//查找是否有空闲内存

intfindExist(intcurpage);

//查找内存中是否有该页面

intfindReplace(void);

//查找应予置换的页面

voiddisplay(void);

//显示

voidFIFO(void);

//FIFO算法

voidLRU(void);

//LRU算法

voidBlockClear(void);

//BLOCK清空,以便用另一种方法重新演示

pageInfor*block;

//物理块

pageInfor*page;

//页面号串

private:

5.FIFO页面置换算法

当需要访问一个新的页面时,首先调用findExist(i)函数来查看物理块中是否就有这个页面,若要查看的页面物理块中就有,则调用display函数直接显示,不需要替换页面;

如果要查看的页面物理块中没有,就需要寻找空闲物理块放入,若存在有空闲物理块,则将页面放入;

若没有空闲物理块,则调用findReplace函数替换页面。

并将物理块中所有页面timer++。

6.LRU页面置换算法

  当需要访问一个新的页面,首先调用findExist(i)函数查看物理块中是否就有这个页面。

7.OPT页面置换算法

当需要访问一个新的页面,首先调用findExist(i)函数来查看物理块中是否有这个页面。

8.寻找置换页面函数findReplace比较三个物理块中的时间标记timer,找到时间最久的。

四、源程序结构分析

1.程序结构

程序共有以下九个部分:

//查找是否有空闲内存

//查找内存中是否有该页面

//查找应予置换的页面

//显示

//FIFO算法

//LRU算法

voidOPT(void);

//OPT算法;

intmain()//主程序

2.源程序代码

#include<

iostream.h>

#defineBsize3

#definePsize20

voidOptimal(void);

//OPTIMAL算法

//BLOCK恢复

//物理块

//页面号串

PRA:

:

PRA(void)

intQString[20]={7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1};

block=newpageInfor[Bsize];

for(inti=0;

i<

Bsize;

i++)

block[i].content=-1;

block[i].timer=0;

}

page=newpageInfor[Psize];

for(i=0;

Psize;

page[i].content=QString[i];

page[i].timer=0;

intPRA:

findSpace(void)

if(block[i].content==-1)

returni;

//找到空闲内存,返回BLOCK中位置

return-1;

findExist(intcurpage)

if(block[i].content==page[curpage].content)

//找到内存中有该页面,返回BLOCK中位置

findReplace(void)

intpos=0;

if(block[i].timer>

=block[pos].timer)

pos=i;

//找到应予置换页面,返回BLOCK中位置

returnpos;

voidPRA:

display(void)

if(block[i].content!

=-1)

cout<

<

block[i].content<

"

"

;

cout<

endl;

Optimal(void)

intexist,space,position;

{

exist=findExist(i);

if(exist!

{cout<

不缺页"

}

else

{

space=findSpace();

if(space!

{

block[space]=page[i];

display();

for(intk=0;

k<

k++)

for(intj=i;

j<

j++)

if(block[k].content!

=page[j].content)

{block[k].timer=1000;

}//将来不会用,设置TIMER为一个很大数

block[k].timer=j;

break;

position=findReplace();

block[position]=page[i];

LRU(void)

block[exist].timer=-1;

//恢复存在的并刚访问过的BLOCK中页面TIMER为-1

for(intj=0;

block[j].timer++;

FIFO(void)

{cout<

//BLOCK中所有页面TIMER++

BlockClear(void)

voidmain(void)

|----------页面置换算法----------|"

|---powerbywangxinchuang(080501228)---|"

|-------------------------------------|"

页面号引用串:

7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1"

----------------------------------------------------"

选择<

1>

应用Optimal算法"

2>

应用FIFO算法"

3>

应用LRU算法"

0>

退出"

intselect;

PRAtest;

while(select)

cin>

>

select;

switch(select)

case0:

case1:

Optimal算法结果如下:

test.Optimal();

test.BlockClear();

----------------------"

case2:

FIFO算法结果如下:

test.FIFO();

case3:

LRU算法结果如下:

test.LRU();

default:

请输入正确功能号"

五、实验结果

1运行后的初始界面

2opt算法3.FIFO算法4LRU算法

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 环境科学食品科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1