常用的调度算法
-
先来先服务调度算法(FCFS):先到达先执行,非抢占式的,同时就绪时仲裁规则是随机的。
-
短进程优先调度算法(SPF):从就绪队列中找运行时间最短的进程,非抢占式的,仲裁规则是按照时间先后顺序或随机方式。
先来先服务调度算法(FCFS)
#include<stdio.h>
#include<stdlib.h>
struct work{
char name[10]; //作业名称
int Atime; //到达时间
int Stime; //服务时间
int Ftime; //完成时间
int Rtime; //周转时间
double DRtime; //带权周转时间
};
int main(void){
int N,num; //输入N个作业
printf("请输入总共的进程数:\n");
scanf("%d",&N);
struct work s[N];
printf("请输入作业名:\n");
for(int i=0; i<N; i++) //输入作业名字
scanf("%s",&s[i].name);
printf("请输入作业到达时间:\n") ;
for(int i=0; i<N; i++) //输入作业到达时间
scanf("%d",&s[i].Atime);
printf("请输入作业服务时间:\n") ;
for(int i=0; i<N; i++) //输入作业服务时间
scanf("%d",&s[i].Stime);
for(int i=0; i<N-1; i++) //按到达时间排序
{
struct work temp;
for(int j=i+1; j<N; j++)
{
if(s[i].Atime>s[j].Atime)
{
temp=s[i];
s[i]=s[j];
s[j]=temp;
}
}
}
for(int i=0; i<N; i++) //计算完成时间
{
if(i==0)
s[0].Ftime=s[0].Atime+s[0].Stime;
else{
if(s[i].Atime>s[i-1].Ftime)//后一个程序的到达时间比前一个程序的完成时间
s[i].Ftime=s[i].Atime+s[i].Stime;
else