发布时间 : 星期三 文章实现进程调度算法更新完毕开始阅读6d2ff4ddbb4cf7ec4afed033
实现进程调度算法
[实验目的]
通过该实验加深和提高对进程调度知识的掌握。 [实验内容及要求]
用C语言实现下列要求,并写出实验报告,报告内容包括:题目、
目的、内容和要求、程序清单、运行情况(输入、输出)、总结。
现有一批给定的进程P1、P2、P3、P4、P5,它们到达时间和要求
运行时间如下:
进程 P1 p2 p3 p4 p5 到达时间 0 1 2 3 4 运行时间 5 3 2 6 1 (1)分别输出采用短进程优先调度算法SPF、先来先服务FCFS调度算法时,各进程的周转时间、带权周转时间及平均周转时间和平均带权周转时间,比较两种算法哪个性能好。 (2)输出两种调度算法的进程完成顺序。
源程序为:
#include
char pname; float arrivetime; float servetime; float finishtime; float roundtime; float droundtime; float waittime; float yxq; };
struct process pro[100];
void fcfs(struct process pro[],int n); void sjf(struct process pro[],int n);
struct process *sortarrivetime(struct process pro[],int n); void print(struct process pro[],int n); void main() {
int n,i;
printf(\请输入有几个进程:\ scanf(\ for(i=0;i fcfs(pro,n); sjf(pro,n); } struct process *sortarrivetime(struct process pro[],int n) { int i,j; struct process itemp; int flag; for(i=1;i flag=0; for(j=0;j return pro; } void print(struct process pro[],int n) { int i; float Sumroundtime=0,Sumdroundtime=0; float averoundtime,avedroundtime; for(i=0;i averoundtime=Sumroundtime/n; avedroundtime=Sumdroundtime/n; printf(\进程名\\t到达时间\\t服务时间\\t完成时间\\t周转时间\\t带全周转\ for(i=0;i printf(\pro[i].servetime,pro[i].finishtime,pro[i].roundtime,pro[i].droundtime); } printf(\平均值\\t\\t\\t\\t\\t\\t\\t%.2f\\t\\t%.2f\\n\} void fcfs(struct process pro[],int n) { int i; pro=sortarrivetime(pro,n); pro[0].finishtime=pro[0].arrivetime+pro[0].servetime; pro[0].roundtime=pro[0].finishtime-pro[0].arrivetime; pro[0].droundtime=pro[0].roundtime/pro[0].servetime; for(i=1;i printf(\先来先服务:\\n\\n\ print(pro,n); } void sjf(struct process pro[],int n) { int i; pro=sortarrivetime(pro,n); pro[0].finishtime=pro[0].arrivetime+pro[0].servetime; for(i=1;i