500字范文,内容丰富有趣,生活中的好帮手!
500字范文 > 作业调度之先来先服务算法C语言实现

作业调度之先来先服务算法C语言实现

时间:2023-01-19 11:15:20

相关推荐

作业调度之先来先服务算法C语言实现

代码如下

/*@authorWellsLiu@*/#include"stdio.h"#include"stdlib.h"typedefstructPCB//定义进程控制块{charname[10];//进程名charstate;//运行状态intArriveTime;//到达时间intStartTime;//进程开始时间intFinishTime;//进程结束时间intServiceTime;//服务时间floatWholeTime;//周转时间floatWeightWholeTime;//带权周转时间doubleAverageWT_FCFS;//平均周转时间doubleAverageWWT_FCFS;//带权平均周转时间structPCB*next;//指向下个进程}pcb;doublex=0,y=0;inti;inttime;//计时器intn;//进程个数pcb*head=NULL,*p,*q;//进程链表指针voidrun_FCFS(pcb*p1)//运行未完成的进程{time=p1->ArriveTime>time?p1->ArriveTime:time;p1->StartTime=time;//printf("\n时刻:%d,当前开始运行作业%s\n\n",time,p1->name);time+=p1->ServiceTime;p1->state='T';p1->FinishTime=time;p1->WholeTime=p1->FinishTime-p1->ArriveTime;p1->WeightWholeTime=p1->WholeTime/p1->ServiceTime;x+=p1->WholeTime;y+=p1->WeightWholeTime;p1->AverageWT_FCFS=p1->WholeTime/n;p1->AverageWWT_FCFS=p1->WeightWholeTime/n;printf("%4s%6d%10d%10d%8d%10.1f%10.2f%12.2f%14.2f\n",p1->name,p1->ArriveTime,p1->StartTime,p1->ServiceTime,p1->FinishTime,p1->WholeTime,p1->WeightWholeTime,p1->AverageWT_FCFS,p1->AverageWWT_FCFS);}voidFCFS()//找到当前未完成的进程{inti;p=head;printf("\n============================================================================================================\n");printf("作业名到达时间开始时间服务时间完成时间周转时间带权周转时间平均周转时间平均带权周转时间\n");printf("------------------------------------------------------------------------------------------------------------\n");for(i=0;i<n;i++){if(p->state=='F'){q=p;//标记当前未完成的进程run_FCFS(q);}p=p->next;}printf("\n============================================================================================================\n");}voidgetInfo()//获得进程信息并创建进程{intnum;printf("\n进程个数:");scanf("%d",&n);for(num=0;num<n;num++){p=(pcb*)malloc(sizeof(pcb));printf("依次输入:进程名到达时间服务时间\n");scanf("%s\t%d\t%d",&p->name,&p->ArriveTime,&p->ServiceTime);if(head==NULL){head=p;q=p;time=p->ArriveTime;}if(p->ArriveTime<time)time=p->ArriveTime;q->next=p;p->StartTime=0;p->FinishTime=0;p->WholeTime=0;p->WeightWholeTime=0;p->next=NULL;p->state='F';q=p;}}voidmain(){printf("先来先服务FCFS算法模拟\n");getInfo();p=head;FCFS();}

运行如图

本文链接:/4694.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。