FIFO算法实验报告.doc_第1页
FIFO算法实验报告.doc_第2页
FIFO算法实验报告.doc_第3页
FIFO算法实验报告.doc_第4页
FIFO算法实验报告.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实 验 报 告 课程名称 学生所在系部 年级 专业、班级 学生姓名 学号 任课教师 实验成绩 软件工程系制一、 实验题目:先进先出(FIFO)页面置换算法和最近最久未使用(LRU)置换算法程序设计二、 实验目的:通过对FIFO,LRU算法的模拟,进一步理解进程的基本概念,加深对进程运行状态和进程调度过程、调度算法的理解。三、 实验设备及环境:1. 硬件设备:PC机一台2. 软件环境:安装Windows操作系统或者Linux操作系统,并安装相关的程序开发环境,如C C+Java 等编程语言环境。四、 实验内容及要求:(1)用C语言编程实现对FIFO,LRU算法的模拟。(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(void);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(物理块数: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 or 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&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=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); 五、 实验结果1. 执行结果2. 结果分析由结果可以看出,使用FIFO算法,总是淘汰最先进入内存的页面,即即选择在内存中驻留时间最久的页面予以淘汰。使用LRU算法则是选择最近最久未使用的页面予以淘汰。 七、实验总结这次实验让我深刻理解了FIFO和LRU算法。由于FIFO所依据的条件是各个页面存入的时间,而页面调入的先后并不能反映页面的使用情况,所以FIFO算法的性能较差。LRU算法相对较好。通过这个实验我体会到了编程的思路流程,结构流程图的作

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论