实验二(作业调度)FCFS

本文介绍了一个基于C语言实现的简单FCFS(先来先服务)调度算法程序。该程序定义了一个作业控制块结构体JCB,用于存储作业的相关信息如作业名、到达时间、所需时间等,并通过输入函数获取作业数据,再使用FCFS函数计算各作业的执行时间。适用于初学者理解进程调度的基本概念。

#include<stdio.h>
#define N 24

typedef struct node
{
char name[10]; /*作业名*/
int proc; //进程优先数*/ 
int ArriTime;//到达时间
int StartTime;//开始时间
int NeedTime; /*进程所需时间*/ 
int RunTime; /*运行时间*/
int EndTime;//结束时间
int ZzTime;//周转时间
float Zznum;
char state; //进程的状态*/

/*struct node *next; 链指针*/
/*int round; 进程时间轮转时间片*/ 
/*int count; 计数器*/
}JCB;

int main(void){
JCB job[N];
int n;
void input();
input(job,&n);
void FCFS();
FCFS(n);

 

 

}

void input(JCB job[],int n){

int tot; //作业个数
int i;

printf("请输入作业个数:[2-24]\n");
scanf("%d",&tot);
for(i=0;i<tot;i++){
job[i].proc=i;
printf("输入第[i+1]个作业的作业名,到达时间,所需时间\n");
scanf("%s",&job[i].name);
scanf("%d",&job[i].ArriTime);
scanf("%d",&job[i].NeedTime);
//scanf("%d",&job[i].EndTime);
//scanf("%d",&job[i].ZzTime);
//scanf("%4f",&job[i].Zznum);
}
printf("作业名 到达时间 所需时间\n");
for(i=0;i<tot;i++)
{
printf("%s ",job[i].name);
printf("%5d ",job[i].ArriTime);
printf("%5d ",job[i].NeedTime);
//printf("%5d ",job[i].EndTime);
// printf("%5d ",job[i].ZzTime);
//printf("%2.1f ",job[i].Zznum);
}

 

 

}

 


void FCFS(int num) //先来先服务算法计算 

int i,j; 
for(i=0;i<num;i++)//顺序执行进入队列的作业 
{ if(i==0) //第一个进程 

job[i].RunTime=job[i].NeedTime; 
job[i].EndTime=job[i].StartTime+job[i].RunTime; 

else 

if(job[i].StartTime>job[i-1].EndTime)//如果当前有作业在执行 

job[i].RunTime=job[i].NeedTime; 
job[i].EndTimejob[i].StartTime+job[i].RunTime; 

else 

job[i].RunTime=job[i].NeedTime+job[i-1].EndTime-job[i].StartTime;
job[i].EndTime=job[i].StartTime+jobc[i].RunTime; 

}

 

 

转载于:https://www.cnblogs.com/baoan/p/4483942.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值