《FIFO算法实验报告(共9页).doc》由会员分享,可在线阅读,更多相关《FIFO算法实验报告(共9页).doc(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上实 验 报 告 课程名称 学生所在系部 年级 专业、班级 学生姓名 学号 任课教师 实验成绩 软件工程系制一、 实验题目:先进先出(FIFO)页面置换算法和最近最久未使用(LRU)置换算法程序设计二、 实验目的:通过对FIFO,LRU算法的模拟,进一步理解进程的基本概念,加深对进程运行状态和进程调度过程、调度算法的理解。三、 实验设备及环境:1. 硬件设备:PC机一台2. 软件环境:安装Windows操作系统或者Linux操作系统,并安装相关的程序开发环境,如C C+Java 等编程语言环境。四、 实验内容及要求:(1)用C语言编程实现对FIFO,LRU算法的模拟。(
2、2)每个用来标识进程的进程控制块PCB可用结构来描述,包括以下字段:五、实验方法内容1. 算法流程图开始检查内存是否有空闲块选择最先进入的页面置换读入访问页面信息存入页面输出置换出的页面序号结束未读完已读完有无2. 主要的常量变量char a;int m=4,n=12,i,y12=1,2,3,4,1,2,5,1,2,3,4,5;主要模块void FIFO(void);void LRU(void);void Xunhuan()void main()四代码#includestdio.h#includestdlib.h#includetime.hvoid FIFO(void);void LRU(vo
3、id);char a;int m=4,n=12,i,y12=1,2,3,4,1,2,5,1,2,3,4,5; /*m为物理块数,n为要访问的页面数*/typedef struct page int num; int time;Page;Page x10;int GetMax(page *x) int i; int max=-1; int tag=0; for(i=0;imax) max=xi.time; tag=i; return tag;void Xunhuan() printf(Please select 1:FIFO算法n 2:LRU算法n); scanf(%s,&a); printf(
4、物理块数:4n); /scanf(%d,&m); for(i=0;im;i+) xi.num=-1; printf(所要访问的页面数:12n); /scanf(%d,&n); /srand(time(NULL); printf(所要访问的页面号序列为:); for(i=0;in;i+) printf(%d ,yi); printf(n); printf(页面置换步骤如下:n); switch(a) case 1:FIFO();break; case 2:LRU(); break; void main() char a; Xunhuan(); while(1) printf(Continue o
5、r Exit:C/Anykey:n); scanf(%s,&a); if(a=c|a=C) Xunhuan(); else break; exit(0);void FIFO(void) int i,j,u; for(i=0;im;i+) xi.time=0; x0.num=y0; x0.time=1; printf( %d n,x0.num); for(i=1;in;i+) u=0; for(j=0;jm;j+) if(xj.num=yi) u=1; break; if(u!=1&xm-1.num!=-1) j=GetMax(x); xj.num=yi; xj.time=0; if(u!=1&
6、xm-1.num=-1) for(j=0;jm;j+) if(xj.num=-1) xj.num=yi; break; for(j=0;jm;j+) if(xj.num!=-1) xj.time+; for(j=0;jm;j+) if(xj.num=-1) printf(%2c ,32); else printf(%2d ,xj.num); printf(n); void LRU() int i,j,u; for(i=0;im;i+) xi.time=0; x0.num=y0; x0.time=1; printf( %d n,x0.num); for(i=1;in;i+) u=0; for(j
7、=0;jm;j+) if(xj.num=yi) xj.time=0; u=1; break; if(u!=1&xm-1.num!=-1) j=GetMax(x); xj.num=yi; xj.time=0; if(u!=1&xm-1.num=-1) for(j=0;jm;j+) if(xj.num=-1) xj.num=yi; break; for(j=0;jm;j+) if(xj.num!=-1) xj.time+; for(j=0;jm;j+) if(xj.num=-1) printf(%2c ,32); else printf(%2d ,xj.num); printf(n); 五、 实验
8、结果1. 执行结果2. 结果分析由结果可以看出,使用FIFO算法,总是淘汰最先进入内存的页面,即即选择在内存中驻留时间最久的页面予以淘汰。使用LRU算法则是选择最近最久未使用的页面予以淘汰。 七、实验总结这次实验让我深刻理解了FIFO和LRU算法。由于FIFO所依据的条件是各个页面存入的时间,而页面调入的先后并不能反映页面的使用情况,所以FIFO算法的性能较差。LRU算法相对较好。通过这个实验我体会到了编程的思路流程,结构流程图的作用。一个程序如果一开始计划的好,结构设计完善,才可能顺利进行。教 师 评 价评定项目ABCD评定项目ABCD算法正确界面美观,布局合理程序结构合理操作熟练语法、语义正确解析完整实验结果正确文字流畅报告规范题解正确其他:评价教师签名:年 月 日专心-专注-专业