FIFO算法实验报告.docx

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

FIFO算法实验报告.docx

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

FIFO算法实验报告.docx

FIFO算法实验报告

 

实验报告

 

课程名称

学生所在系部

年级

专业、班级

学生姓名

学号

任课教师

实验成绩

 

软件工程系制

 

一、实验题目:

先进先出(FIFO)页面置换算法和最近最久未使用(LRU)置换算法程序设计

二、实验目的:

通过对FIFO,LRU算法的模拟,进一步理解进程的基本概念,加深对进程运行状态和进程调度过程、调度算法的理解。

三、实验设备及环境:

1.硬件设备:

PC机一台

2.软件环境:

安装Windows操作系统或者Linux操作系统,并安装相关的程序开发环境,如C\C++\Java等编程语言环境。

四、实验内容及要求:

(1)用C语言编程实现对FIFO,LRU算法的模拟。

(2)每个用来标识进程的进程控制块PCB可用结构来描述,包括以下字段:

五、实验方法内容

1.算法流程图

2.主要的常量变量

chara;

intm=4,n=12,i,y[12]={1,2,3,4,1,2,5,1,2,3,4,5};

 

主要模块

voidFIFO(void);

voidLRU(void);

voidXunhuan()

voidmain()

 

四.代码

 

#include"stdio.h"

#include"stdlib.h"

#include"time.h"

voidFIFO(void);

voidLRU(void);

chara;

intm=4,n=12,i,y[12]={1,2,3,4,1,2,5,1,2,3,4,5};/*m为物理块数,n为要访问的页面数*/

typedefstructpage{

intnum;

inttime;

}Page;

Pagex[10];

intGetMax(page*x)

{

inti;

intmax=-1;

inttag=0;

for(i=0;i

{

if(x[i].time>max)

{max=x[i].time;

tag=i;

}

}

returntag;

}

voidXunhuan()

{

printf("Pleaseselect1:

FIFO算法\n2:

LRU算法\n");

scanf("%s",&a);

printf("物理块数:

4\n");

//scanf("%d",&m);

for(i=0;i

{

x[i].num=-1;

}

printf("所要访问的页面数:

12\n");

//scanf("%d",&n);

//srand(time(NULL));

printf("所要访问的页面号序列为:

");

for(i=0;i

printf("%d",y[i]);

printf("\n");

printf("页面置换步骤如下:

\n");

switch(a)

{

case'1':

FIFO();break;

case'2':

LRU();break;

}

}

voidmain()

{

chara;

Xunhuan();

while

(1)

{

printf("ContinueorExit:

C/Anykey:

\n");

scanf("%s",&a);

if(a=='c'||a=='C')

Xunhuan();

elsebreak;

}

exit(0);

}

voidFIFO(void)

{

inti,j,u;

for(i=0;i

x[i].time=0;

x[0].num=y[0];

x[0].time=1;

printf("%d\n",x[0].num);

for(i=1;i

{u=0;

for(j=0;j

if(x[j].num==y[i])

{

u=1;

break;

}

if(u!

=1&&x[m-1].num!

=-1)

{

j=GetMax(x);

x[j].num=y[i];

x[j].time=0;

}

if(u!

=1&&x[m-1].num==-1)

{

for(j=0;j

{

if(x[j].num==-1)

{x[j].num=y[i];

break;}

}

}

for(j=0;j

if(x[j].num!

=-1)

x[j].time++;

for(j=0;j

if(x[j].num==-1)

printf("%2c",32);

else

printf("%2d",x[j].num);

printf("\n");

}

}

voidLRU()

{

inti,j,u;

for(i=0;i

x[i].time=0;

x[0].num=y[0];

x[0].time=1;

printf("%d\n",x[0].num);

for(i=1;i

{u=0;

for(j=0;j

if(x[j].num==y[i])

{

x[j].time=0;

u=1;

break;

}

if(u!

=1&&x[m-1].num!

=-1)

{

j=GetMax(x);

x[j].num=y[i];

x[j].time=0;

}

if(u!

=1&&x[m-1].num==-1)

{

for(j=0;j

{

if(x[j].num==-1)

{x[j].num=y[i];

break;}

}

}

for(j=0;j

if(x[j].num!

=-1)

x[j].time++;

for(j=0;j

if(x[j].num==-1)

printf("%2c",32);

else

printf("%2d",x[j].num);

printf("\n");

}

}

五、实验结果

1.执行结果

 

2.结果分析

由结果可以看出,使用FIFO算法,总是淘汰最先进入内存的页面,即即选择在内存中驻留时间最久的页面予以淘汰。

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

七、实验总结

这次实验让我深刻理解了FIFO和LRU算法。

由于FIFO所依据的条件是各个页面存入的时间,而页面调入的先后并不能反映页面的使用情况,所以FIFO算法的性能较差。

LRU算法相对较好。

通过这个实验我体会到了编程的思路流程,结构流程图的作用。

一个程序如果一开始计划的好,结构设计完善,才可能顺利进行。

 

教师评价

评定项目

A

B

C

D

评定项目

A

B

C

D

算法正确

界面美观,布局合理

程序结构合理

操作熟练

语法、语义正确

解析完整

实验结果正确

文字流畅

报告规范

题解正确

其他:

 

评价教师签名:

年月日

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

当前位置:首页 > 初中教育

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

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