操作系统实验三页面置换算法实验报告材料Word文档下载推荐.docx

上传人:b****2 文档编号:1222690 上传时间:2023-04-30 格式:DOCX 页数:20 大小:93.80KB
下载 相关 举报
操作系统实验三页面置换算法实验报告材料Word文档下载推荐.docx_第1页
第1页 / 共20页
操作系统实验三页面置换算法实验报告材料Word文档下载推荐.docx_第2页
第2页 / 共20页
操作系统实验三页面置换算法实验报告材料Word文档下载推荐.docx_第3页
第3页 / 共20页
操作系统实验三页面置换算法实验报告材料Word文档下载推荐.docx_第4页
第4页 / 共20页
操作系统实验三页面置换算法实验报告材料Word文档下载推荐.docx_第5页
第5页 / 共20页
操作系统实验三页面置换算法实验报告材料Word文档下载推荐.docx_第6页
第6页 / 共20页
操作系统实验三页面置换算法实验报告材料Word文档下载推荐.docx_第7页
第7页 / 共20页
操作系统实验三页面置换算法实验报告材料Word文档下载推荐.docx_第8页
第8页 / 共20页
操作系统实验三页面置换算法实验报告材料Word文档下载推荐.docx_第9页
第9页 / 共20页
操作系统实验三页面置换算法实验报告材料Word文档下载推荐.docx_第10页
第10页 / 共20页
操作系统实验三页面置换算法实验报告材料Word文档下载推荐.docx_第11页
第11页 / 共20页
操作系统实验三页面置换算法实验报告材料Word文档下载推荐.docx_第12页
第12页 / 共20页
操作系统实验三页面置换算法实验报告材料Word文档下载推荐.docx_第13页
第13页 / 共20页
操作系统实验三页面置换算法实验报告材料Word文档下载推荐.docx_第14页
第14页 / 共20页
操作系统实验三页面置换算法实验报告材料Word文档下载推荐.docx_第15页
第15页 / 共20页
操作系统实验三页面置换算法实验报告材料Word文档下载推荐.docx_第16页
第16页 / 共20页
操作系统实验三页面置换算法实验报告材料Word文档下载推荐.docx_第17页
第17页 / 共20页
操作系统实验三页面置换算法实验报告材料Word文档下载推荐.docx_第18页
第18页 / 共20页
操作系统实验三页面置换算法实验报告材料Word文档下载推荐.docx_第19页
第19页 / 共20页
操作系统实验三页面置换算法实验报告材料Word文档下载推荐.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

操作系统实验三页面置换算法实验报告材料Word文档下载推荐.docx

《操作系统实验三页面置换算法实验报告材料Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《操作系统实验三页面置换算法实验报告材料Word文档下载推荐.docx(20页珍藏版)》请在冰点文库上搜索。

操作系统实验三页面置换算法实验报告材料Word文档下载推荐.docx

//输入数据的函数

voidDataOutput();

//输出数据的函数

voidFIFO();

//FIFO函数

voidOptimal();

//Optimal函数

voidLRU();

//LRU函数

intmain(intargc,char*argv[])

{

DataInput();

intmenu;

while(true)

{

printf("

\n*菜单选择*\n"

);

*******************************************************\n"

*1-Optimal*\n"

*2-FIFO*\n"

*3-LRU*\n"

*4-返回上一级*\n"

*0-EXIT*\n"

printf("

scanf("

%d"

&

menu);

switch(menu)

{

case1:

Optimal();

break;

case2:

FIFO();

case3:

LRU();

case0:

exit(0);

case4:

system("

cls"

DataInput();

}

if(menu!

=1&

&

menu!

=2&

=3&

=0&

=4){

system("

\n请输入0-4之间的整数!

\n"

continue;

}

return0;

}

voidDataInput()

inti,choice;

printf("

请输入最小物理块数:

"

scanf("

M);

//输入最小物理块数大于数据个数

while(M>

BlockNum)

物理块数超过预定值,请重新输入:

请输入页面的个数:

N);

//输入页面的个数大于数据个数

while(N>

DataMax)

页面个数超过预定值,请重新输入:

请选择产生页面访问序列的方式(1.随机2.输入):

choice);

switch(choice)

case1:

//产生随机访问序列

for(i=0;

i<

N;

i++)

{

Data[i]=(int)(((float)rand()/32767)*10);

//随机数大小在0-9之间

system("

//显示随机产生的访问序列

\n随机产生的访问序列为:

%d"

Data[i]);

break;

case2:

//输入访问序列

请输入页面访问序列:

scanf("

Data[i]);

//显示输入的访问序列

\n输入的访问序列为:

default:

while(choice!

choice!

=2)

请输入1或2选择相应方式:

voidDataOutput()

inti,j;

//对所有数据操作

for(i=0;

for(j=0;

j<

M;

j++)

//对所有数据操作

if(DataShowEnable[j][i])

printf("

DataShow[j][i]);

else

"

缺页次数:

%d\n"

ChangeTimes);

缺页率:

%d%%\n"

ChangeTimes*100/N);

//最佳置换算法

voidOptimal()

inti,j,k;

boolfind;

intpoint;

inttemp;

//临时变量,比较离的最远的时候用

intm=1,n;

ChangeTimes=0;

for(i=0;

DataShowEnable[j][i]=false;

//初始化为false,表示没有要显示的数据

count[i]=0;

//初始化计数器

//确定当前页面是否在物理块中,在继续,不在置换

///////////////////////////////////////////////////////////////////////////////////

Block[0]=Data[0];

for(i=1;

m<

intflag=1;

for(n=0;

n<

m;

n++)

if(Data[i]==Block[n])flag=0;

if(flag==0)continue;

Block[m]=Data[i];

m++;

//////////////////////////////////////////////////////////////////////////////////

//对所有数据进行操作

for(i=0;

//表示块中有没有该数据

find=false;

for(j=0;

if(Block[j]==Data[i])

{

find=true;

}

if(find)continue;

//块中有该数据,判断下一个数据

//块中没有该数据,最优算法

ChangeTimes++;

//缺页次数++

//找到下一个值的位置

find=false;

for(k=i;

k<

k++)

if(Block[j]==Data[k])

{

find=true;

count[j]=k;

break;

}

if(!

find)count[j]=N;

//因为i是从0开始记,而BlockNum指的是个数,从1开始,所以i+1

if((i+1)>

M)

//获得要替换的块指针

temp=0;

for(j=0;

if(temp<

count[j])

temp=count[j];

point=j;

//获得离的最远的指针

elsepoint=i;

//替换

Block[point]=Data[i];

//保存要显示的数据

DataShow[j][i]=Block[j];

DataShowEnable[i<

M?

(j<

=i?

j:

i):

j][i]=true;

//设置显示数据

//输出信息

\nOptimal=>

\n"

DataOutput();

//先进先出置换算法

voidFIFO()

//临时变量

}

count[i]=0;

//大于等于BlockNum,表示块中没有数据,或需被替换掉

//所以经这样初始化(321),每次替换>

=3的块,替换后计数值置1,

//同时其它的块计数值加1,成了(132),见下面先进先出程序段

//对有所数据操作

//增加count

count[j]++;

//表示块中有没有该数据

//块中有该数据,判断下一个数据

//块中没有该数据

ChangeTimes++;

//缺页次数++

//因为i是从0开始记,而M指的是个数,从1开始,所以i+1

count[j])

count[point]=0;

//更新计数值

\nFIFO=>

//最近最久未使用置换算法

voidLRU()

count[j]=0;

//块中没有该数据

for(j=0;

j<

M;

(j<

\nLRU=>

实验结果截图:

程序运行:

输入相应数据:

选择相应算法:

最佳置换算法:

先进先出算法:

最近最久未使用算法:

 

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

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2