
操作系统先来先服务算法fcfs(c语言).docx
9页实验报告题目名称C语言实现调度算法程序设计实验^艮告-先来先服务FCFS院系a班级完成时间指导老师本次实验成绩主 要 原 理 及 所 参算法原理:设计程序模拟进程的先来先服务 FCFS过程假设有n 个进程分别在Ti,…,Tn时刻到达系统,它们需要的服务时 间分别为S,,…分别采用先来先服务FCFS调度算法进 行调度,计算每个进程的完成时间,周转时间和带权周转时 间,并且统计n个进程的平均周转时间和平均带权周转时 间程序要求如下:1)进程个数n;每个进程的到达时间Ti,…,Tn和服务时 间G,…,6考 的 资 料主 要 算 法 具 体 实 验 步 骤2)要求采用先来先服务FCFS调度进程运行,计算每个 进程的周转时间,带权周转时间,并且计算所有进程的平均 周转时间,带权平均周转时间;3)输出:要求模拟整个调度过程,输出每个时刻的进程运行状态,如“时刻3:进程B开始运行”等等;4)输出:要求输出计算出来的每个进程的周转时间,带权 周转时间,所有进程的平均周转时间,带权平均周转时间 主要参考书:计算机操作系统第三版西安电子科技大学出版社汤小丹主编实现提示:用C语言实现提示:1)程序中进程调度时间变量描述如下:static int MaxNum=100;int ArrivalTime[MaxNum];int ServiceTime[MaxNum];int FinishTime[MaxNum];int WholeTime[MaxNum];double WeightWholeTime[MaxNum];double AverageWT_FCFS;double AverageWWT_FCFS;2)进程调度的实现过程如下:2.程序源代码#include"”#include"”typedef struct PCB //定义进程控制块{ char name[10]; // 进程名char state; //运行状态int ArriveTime; // 到达时间int StartTime; //进程开始时间int FinishTime; //进程结束时间int ServiceTime; // 服务时间float WholeTime;// 周转时间float WeightWholeTime;〃带权周转时间double AverageWT_FCFS; /狂均周转时间double AverageWWT_FCFS;/席权平均周转时间struct PCB *next; //指向下个进程}pcb;double x=0,y=0;int i;int time; // 计时器int n; //进程个数pcb *head=NULL,*p,*q; // 进程链表指针void run_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->ServiceT ime;x+=p1->WholeTime;y+=p1->WeightWholeTime;p1->AverageWT_FCFS=p1->WholeTime/n;p1->AverageWWT_FCFS=p1->WeightWholeTime/n;printf("到达时间开始时间服务时间完成时间周转时间带权周转时间\n");printf("%6d %10d %10d %8d % % \n",p1->ArriveTime,p1->StartTime,p1->ServiceTime,p1->FinishTime,p1->WholeTime,p1->Wei ghtWholeTime);printf("\n平均周转时间平均带权周转时间\n");printf(" % %\n”,p1->AverageWT_FCFS,p1->AverageWWT_FCFS);}void FCFS() 〃找到当前未完成的进程{int i;p=head;for(i=0;i





![河南新冠肺炎文件-豫建科[2020]63号+豫建科〔2019〕282号](http://img.jinchutou.com/static_www/Images/s.gif)






