实验二(作业调度)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; 

}

 

 

posted on 2015-05-07 09:41  10-叶宝安  阅读(225)  评论(0编辑  收藏  举报

导航