实验五页面调度算法模拟实验报告.docx

上传人:b****3 文档编号:4671977 上传时间:2022-12-07 格式:DOCX 页数:18 大小:180.88KB
下载 相关 举报
实验五页面调度算法模拟实验报告.docx_第1页
第1页 / 共18页
实验五页面调度算法模拟实验报告.docx_第2页
第2页 / 共18页
实验五页面调度算法模拟实验报告.docx_第3页
第3页 / 共18页
实验五页面调度算法模拟实验报告.docx_第4页
第4页 / 共18页
实验五页面调度算法模拟实验报告.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

实验五页面调度算法模拟实验报告.docx

《实验五页面调度算法模拟实验报告.docx》由会员分享,可在线阅读,更多相关《实验五页面调度算法模拟实验报告.docx(18页珍藏版)》请在冰豆网上搜索。

实验五页面调度算法模拟实验报告.docx

实验五页面调度算法模拟实验报告

《计算机操作系统》实验报告

实验五:

页面调度算法模拟

学校:

XXX

院系:

XXX

班级:

XXX

姓名:

XXX

学号:

XXX

指导教师:

XXX

一、实验题目3

二、实验学时3

三、指导老师4

四、实验日期4

五、实验目的4...

六、实验原理4...

6.1页面的含义4...

6.2页面置换算法的含义4..

6.3置换算法4...

6.3.1最佳置换算法(Optimal)4..

6.3.2先进先出(FIFO)页面置换算法5.

6.3.3LRU置换算法5..

七、实验步骤及结果5...

7.1验证最佳置换算法5..

7.1.1实验截图5...

7.1.2实验分析5...

7.2验证先进先出(FIFO)页面置换算法6.

7.2.1实验截图6...

7.2.2实验分析6...

7.3验证LRU置换算法7.

7.3.1实验截图7...

7.3.2实验分析8...

八、报告书写人8...

附录一最佳置换算法(Optimal)9..

附录二先进先出(FIFO)页面置换算法1..4

附录三LRU置换算法1...8

实验五:

页面调度算法模拟

、实验题目

页面调度算法模拟

、实验学时

2学时

三、指导老师

XXX

四、实验日期

2018年12月10日星期一

五、实验目的

(1)熟悉操作系统页面调度算法

(2)编写程序模拟先进先出、LRU等页面调度算法,体会页面调度算法原理

六、实验原理

6.1页面的含义

分页存储管理将一个进程的逻辑地址空间分成若干大小相等的片,称为页面或页。

6.2页面置换算法的含义

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

但应将哪个页面调出,须根据一定的算法来确定。

通常,把选择换出页面的算法称为页面置换算法(Page_ReplacementAlgorithms)。

6.3置换算法

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

从理论上讲,应将那些以后不再会访问的页面换出,或将那些在较长时间内不会再访问的页面调出。

6.3.1最佳置换算法(Optimal)

它是由Belady于1966年提出的一种理论上的算法。

其所选择的被淘汰页面,将是以后永不使用的或许是在最长(未来)时间内不再被访问的页面。

采用最佳置换算法,通常可保证获得最低的缺页率。

但由于人目前还无法预知一个进程在内存的若干个页面中,哪一个页面是未来最长时间内不再被访问的,因而该算法是

无法实现的,便可以利用此算法来评价其它算法。

632先进先出(FIFO)页面置换算法

这是最早出现的置换算法。

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

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

633LRU置换算法

LRU置换算法是选择最近最久未使用的页面予以淘汰。

七、实验步骤及结果

7.1验证最佳置换算法

7.1.1实验截图

7.1.2实验分析

in

7

2

7

7

1

0

4

4

0

8

0

4

b1

7

7

7

7

4

4

b2

2

2

2

2

8

b3

1

1

1

1

b4

0

0

0

out

7

2

7.2验证先进先出(FIFO)页面置换算法

7.2.1实验截图

■匸:

'Weriraler\D«lrtopV5:

科:

*1三\计算叽撓柞報\宪鲨八实暑代码\DEbug\FIfO.e^

khoFIFO

List:

103380812056

thelost

in

FIFO:

newbuf=l

in<-一1

interrupt

pewbuf=1

0

in<—0

interrnpt

newbuf=l

0

3

in<—3

iRterrupt

in<—3

successfully

newbuf=l

0

3

8

in<-一8

interrupt

in<—0

successfully

in<一8

successfully

in<—1

successfully

newbuf=2

0

3

S

in<—2

changel—>Qut

in<—0

successfully

hewbuf=2

5

3

8

in<一-5

change0—>out

newbuf=2

5

6

8

in<—6

change3—>our

intemipt.=4

rhange^3

successfully

Pressany

key1

tocontinue.

7.2.2实验分析

in

1

0

3

3

8

0

8

1

2

0

5

6

bl

1

1

1

1

2

2

2

b2

0

0

0

0

5

5

b3

3

3

3

3

6

b4

8

8

8

8

out

1

0

3

7.3验证LRU置换算法

7.3.1实验截图

'CAUsers^Adminkt诽科大三\计算fl提作系瓠莫煤八垂躺代码\Debug\LRU.Radom心电"

TheRaiitlutuLisi:

96877:

37

12670

thelostinLRU;

newmf=9

in<-

9

]nterrlipt

newbuf=96

1n<—

6

interrupt

newbuf=9SB

in<—

8

interrupt

npwbtif=96呂

7in<-

7

interrlipt

in<-

7

successfully

newbuf=368

7in<-

3

change9—>out

in<-

7

successfully

newbuf=318

7m<-

-1

change6—>out

newbuf=312

7in<_,

-2

change8—>out

newbuf=612

7in<-j

-6

change3—>cut

in<-

successfully

nettbuf-602

7in<-

-0

change1--/out

]nterrtipt=4-

chanfie=5

successfully^

Pressanykeytc

icontinue.

 

732实验分析

in

9

6

8

7

7

3

7

1

2

6

7

0

bl

9

9

9

9

3

3

3

6

6

b2

6

6

6

6

1

1

1

0

b3

8

8

8

8

2

2

2

b4

7

7

7

7

7

7

out

9

6

8

3

1

八、报告书写人

 

附录一最佳置换算法(Optimal)

#include

#include

#include

#defineN12/*随机数列的长度*/

#defineB4/*内存页面数*/intIsInBuf(intbuf[],intlist[],intnum){

inti,j=-1;

intmax_p;

intmax_d=0;

for(i=0;i

{

//当x在buf中,返回-1

//当x不在buf中,且buf[i]为空,则把x

if(buf[i]==list[num])return-1;

elseif(buf[i]==-1)填入buf,并返回-1

buf[i]=list[num];

return-2;

}

for(i=0;i

{

for(j=num+1;j

{

if(buf[i]==list[j]){

if(max_d

max_d=j;//buf[i]在list[]中的最近距离

max_p=i;//list[j]在buf[]的位置

}

break;

}

的后半部分,返回

}

if(j==N)//如果buf满,并且buf[i]不在list[]

位置i

returni;

}

returnmax_p;//返回距离最远的buf[]的位置

}

intmain()

{

intlist[N];//={4,3,2,1,4,3,5,4,3,2,1,5};

intbuf[B],i,f[N],j,m,bufuse=0,tmp;

intchange=0;//置换次数

intinterrupt=0;//中断次数

intsuccessfully=0;//访问成功次数

srand((int)time(NULL));

for(i=0;i

buf[i]=f[i]=-1;

printf("\n\n");

printf("TheOptimalList:

");

for(i=0;i

{

list[i]=(int)rand()%10;

printf("%2d",list[i]);

}

printf("\n");

printf("\nthelostinOptimal:

\n");

for(i=0;i

j=IsInBuf(buf,list,i);

if(j==-1){

successfully++;

for(m=0;m<=B;m++){

printf("");/*成功的打印*/

}

printf("in<--%dsuccessfully\n",list[i]);/*成功

的打印*/

}

elseif(j==-2)

{bufuse++;interrupt++;printf("newbuf=");

for(m=0;m

*/

缺页中断的

printf("%d",buf[m]);/*缺页中断次数的打印}

for(m;m

printf("");/*缺页中断的打印*/

}

printf("in<--%dinterrupt\n",list[i]);/*

打印*/

}

else

{

tmp=buf[j];buf[j]=list[i];

change++;

printf("newbuf=");

for(m=0;m

printf("%d",buf[m]);/*缺页置换的打印*/}

for(m;m

printf("");/*缺页置换的打印*/

}

in<--%d

printf("

change%d-->out\n",list[i],tmp);/*缺页置换的打印*/

}

}

printf("\n\n");

printf("interrupt=%d\n",interrupt);

printf("change=%d\n",change);

printf("successfully=%d\n",successfully);

return0;

}

附录二先进先出(FIFO)页面置换算法

#include

#include

#include

#defineN12/*随机数列的长度*/

#defineB4/*内存页面数*/

intIsInBuf(intbuf[],intx)

{

inti;

for(i=0;i

{if(buf[i]==x)/*当x在buf中,返回其位置*/

return-1;

elseif(buf[i]==-1)/*当x不在buf中,且buf[i]为空,则把x填入buf,并返回其位置*/

{

buf[i]=x;return-2;

}

}

return0;

}

intmain()

{

intlist[N];//={4,3,2,1,4,3,5,4,3,2,1,5};

intbuf[B],i,f[N],j,m,bufuse=0,tmp;

intold=0;

intchange=0;//置换次数

intinterrupt=0;//中断次数

intsuccessfully=0;//访问成功次数

srand((int)time(NULL));for(i=0;i

buf[i]=f[i]=-1;printf("\n\n");printf("TheFIFOList:

");for(i=0;i

list[i]=(int)rand()%10;printf("%2d",list[i]);

}

printf("\n");

printf("\nthelostinFIFO:

\n");

for(i=0;i

j=IsInBuf(buf,list[i]);

if(j==-1){

successfully++;for(m=0;m<=B;m++){printf("");/*成功的打印*/

printf("in<--%dsuccessfully\n",list[i]);/*

成功

的打印*/

}

elseif(j==-2)

{

bufuse++;

interrupt++;

printf("newbuf=");

for(m=0;m

printf("%d",buf[m]);/*缺页中断次数的打印*/

}

for(m;m

printf("");/*缺页中断的打印*/

}

printf("in<--%dinterrupt\n",list[i]);/*缺页中断的

打印*/

}

else

{

tmp=buf[old];

buf[old]=list[i];

old=(old+1)%(int)B;/*数据在buf中的储存是循环的*/

change++;

printf("newbuf=");

for(m=0;m

printf("%d",buf[m]);/*缺页置换的打印*/

}

for(m;m

printf("");/*缺页置换的打印*/

}

in<--%d

printf("

change%d-->out\n",list[i],tmp);/*缺页置换的打印*/

}

}

printf("\n\n");

printf("interrupt=%d\n",interrupt);

printf("change=%d\n",change);

printf("successfully=%d\n",successfully);

return0;

}

附录三LRU置换算法

#include

#include

#include

#defineN12/*随机数列的长度*/

#defineB4/*内存页面数*/

intIsInBuf(intbuf[],intlist[],intnum)

{

inti,j=-1;

for(i=0;i

{

if(buf[i]==list[num])/*当x在buf中,返回其位置*/j=i;break;

}

elseif(buf[i]==-1)/*当x不在buf中,且buf[i]为空,则把x填入buf,并返回其位置*/

{

buf[i]=list[num];

j=-2;

break;

}

}

returnj;

}

intGet(intbuf[],intlist[],intnum)

{

intbuff[B];

intbuffuse=0;

inti,j,k,m;

for(m=0;m

buff[m]=-1;

for(i=num-1;i>=0;i--)

{

for(j=0;j

{

if(list[i]==buf[j]){for(k=0;k

{

if(list[i]==buff[k])break;

}

if(k==buffuse)

{

buff[buffuse]=list[i];buffuse++;

if(buffuse==B)

returnj;

}

break;

}

}

}

return0;

}

intmain()

{

intlist[N];

//intlist[12]=

intbuf[B],i,f[N],j,m,bufuse=0,tmp;

intold=0;

intchange=0;

intinterrupt=0;

intsuccessfully=0;

srand((int)time(NULL));for(i=0;i

buf[i]=f[i]=-1;

printf("TheRandomList:

");

for(i=0;i

{

list[i]=(int)rand()%10;

printf("%2d",list[i]);

}

printf("\n\n");

printf("\nthelostinLRU:

\n");

change=0;/*中断的次数*/

for(i=0;i

{

j=IsInBuf(buf,list,i);

if(j==-1)

{

old=Get(buf,list,i);tmp=buf[old];buf[old]=list[i];

change++;

/*缺页置换的打印*/

printf("newbuf=");for(m=0;m

for(m;m

printf("");/*缺页置换的打印*/

}

printf("

change%d-->out\n",list[i],tmp);/*缺页置换的打印*/

}

elseif(j==-2)

{

bufuse++;

interrupt++;

printf("newbuf=");

for(m=0;m

printf("%d",buf[m]);/*缺页中断次数的打印

}

for(m;m

printf("");/*缺页中断的打印*/

}

printf("in<--%dinterrupt\n",list[i]);/*

打印*/

}

else{

successfully++;

for(m=0;m<=B;m++){

printf("");/*成功的打印*/

}

printf("in<--%dsuccessfully\n",list[i]);/*

*/

in<--%d

缺页中断的

成功

的打印*/

}

printf("\n\n");

printf("interrupt=%d\n",interrupt);

printf("change=%d\n",change);

printf("successfully=%d\n",successfully);return0;

}

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

当前位置:首页 > 人文社科 > 军事政治

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

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