FIFO算法实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告

课程名称

学生所在系部

年级

专业、班级

学生姓名

学号

任课教师

实验成绩

软件工程系制

一、实验题目:

先进先出(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,y[12]={1,2,3,4,1,2,5,1,2,3,4,5};

主要模块

void FIFO(void);

void LRU(void);

void Xunhuan()

void main()

四.代码

#include"stdio.h"

#include"stdlib.h"

#include"time.h"

void FIFO(void);

void LRU(void);

char a;

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

typedef struct page{

int num;

int time;

}Page;

Page x[10];

int GetMax(page *x)

{

int i;

int max=-1;

int tag=0;

for(i=0;i

{

if(x[i].time>max)

{ max=x[i].time;

tag=i;

}

}

return tag;

}

void Xunhuan()

{

printf("Please select 1:FIFO算法\n 2: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;

}

}

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;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

相关文档
最新文档