FIFO算法实验报告材料.docx
- 文档编号:28207408
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:11
- 大小:57.23KB
FIFO算法实验报告材料.docx
《FIFO算法实验报告材料.docx》由会员分享,可在线阅读,更多相关《FIFO算法实验报告材料.docx(11页珍藏版)》请在冰豆网上搜索。
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 算确 界面美观,布局合理 程序结构合理 操作熟练 语法、语义正确 解析完整 实验结果正确 文字流畅 报告规 题解正确 其他: 评价教师签名: 年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FIFO 算法 实验 报告 材料