实验五页面调度算法模拟 实验报告文档格式.docx

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

实验五页面调度算法模拟 实验报告文档格式.docx

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

实验五页面调度算法模拟 实验报告文档格式.docx

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

6.2页面置换算法的含义

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

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

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

6.3置换算法

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

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

3.1最佳置换算法(Optimal)

它是由Belady于1966年提出的一种理论上的算法.其所选择的被淘汰页面,将是以后永不使用的或许是在最长(未来)时间内不再被访问的页面。

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

但由于人目前还无法预知一个进程在内存的若干个页面中,哪一个页面是未来最长时间内不再被访问的,因而该算法是无法实现的,便可以利用此算法来评价其它算法。

6.3。

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

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

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

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

3.3LRU置换算法

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

七、实验步骤及结果

7.1验证最佳置换算法

7。

1.1实验截图

1。

2实验分析

in

7

2

1

4

8

b1

b2

b3

b4

out

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

2。

1实验截图

7.2.2实验分析

3

5

6

7.3验证LRU置换算法

3.1实验截图

3。

9

八、报告书写人

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

#include<

stdio.h>

#include〈stdlib.h>

time.h〉

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

#defineB4/*内存页面数*/

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

inti,j=—1;

intmax_p;

intmax_d=0;

for(i=0;

i〈B;

i++)

{

if(buf[i]==list[num])//当x在buf中,返回-1

return-1;

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

buf[i]=list[num];

return—2;

}

for(i=0;

i<

B;

for(j=num+1;

j<

N;

j++)

{

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

if(max_d<

j){

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));

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

printf(”\n\n"

);

printf("

TheOptimalList:

"

i〈N;

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

printf("

%2d”,list[i]);

printf(”\n”);

\nthelostinOptimal:

\n"

);

N;

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++;

newbuf="

for(m=0;

m〈bufuse;

m++){

printf(”%d"

buf[m]);

/*缺页中断次数的打印*/

}

for(m;

m〈B;

printf(””);

/*缺页中断的打印*/

printf(”in〈——%dinterrupt\n"

list[i]);

/*缺页中断的打印*/

else

tmp=buf[j];

buf[j]=list[i];

change++;

printf(”newbuf="

m<

bufuse;

printf(”%d”,buf[m]);

/*缺页置换的打印*/

"

/*缺页置换的打印*/

in〈——%dchange%d——〉out\n"

,list[i],tmp);

/*缺页置换的打印*/

\n\n"

printf(”interrupt=%d\n"

interrupt);

printf(”change=%d\n"

,change);

successfully=%d\n”,successfully);

return0;

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

#include〈stdio.h〉

stdlib。

h〉

#include〈time。

h>

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

#defineB4/*内存页面数*/

intIsInBuf(intbuf[],intx)

inti;

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

return-1;

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

buf[i]=x;

return-2;

}

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;

intsuccessfully=0;

srand((int)time(NULL));

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

\n\n”);

printf(”TheFIFOList:

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

%2d”,list[i]);

printf(”\nthelostinFIFO:

\n”);

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

if(j==-1){

successfully++;

/*成功的打印*/

in<

—-%dsuccessfully\n"

list[i]);

/*成功的打印*/

newbuf=”);

printf(”%d”,buf[m]);

/*缺页中断

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

当前位置:首页 > 解决方案 > 商业计划

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

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