OS的先到先服务调度算法(FCFS)

#include
typedef struct
{
int starttime;
int endtime;
int arrivetime;
int cputime;
int roundtime;
}WORK;
void Roll(WORK a[],int b[],int temb[],int n)
{
int i,j,t,flag;
for(i=1; i<=n; i++)
{
b[i]=a[i].arrivetime;
temb[i]=i;
}
for(i=1; i<=n; i++)
{
flag=1;
for (j=1; j<=n-i; j++)
{
if (b[j]>b[j+1])
{
t=b[j]; b[j]=b[j+1]; b[j+1]=t;
t=temb[j]; temb[j]=temb[j+1]; temb[j+1]=t;
}
}

}
}

int main()
{printf("**************欢迎使用FCFS调度算法演示程序****************\n");
int n,i;
WORK a[10];
int temb[10];
int b[10];
int currentTime;
printf("请输入需要调度的作业个数:\n");
scanf("%d",&n);
printf("请分别输入每个作业的到达时间和运行时间:\n");
int sum=0;
for(i=1; i<=n; i++)
{
a[i].starttime=0;
a[i].endtime=0;
a[i].roundtime=0;
printf("WORK%d到达时间:\n",i);
scanf("%d",&a[i].arrivetime);
printf("WORK%d运行时间:\n",i);
scanf("%d",&a[i].cputime);
}
Roll(a,b,temb,n);

currentTime=a[temb[1]].arrivetime;
a[temb[1]].starttime=currentTime;
a[temb[1]].endtime=currentTime+a[temb[1]].cputime;
a[temb[1]].roundtime=a[temb[1]].cputime;
currentTime=a[temb[1]].endtime;

for(i=2; i<=n; i++)
{
if(a[temb[i]].arrivetime{
a[temb[i]].endtime=currentTime+a[temb[i]].cputime;
}
else
{
currentTime=a[temb[i]].arrivetime;
a[temb[i]].endtime=currentTime+a[temb[i]].cputime;
}
a[temb[i]].starttime=currentTime;
a[temb[i]].roundtime=a[temb[i]].endtime-a[temb[i]].arrivetime;
currentTime=a[temb[i]].endtime;
}


for(i=1; i<=n; i++)
{
printf("WORK%d的到达时间%d起始时间%d结束时间%d\n",temb[i],a[temb[i]].arrivetime,a[temb[i]].starttime,a[temb[i]].endtime);
}
for(i=1; i<=n; i++){
printf("作业%d的周转时间为:",i);
printf("%d\n",a[temb[i]].endtime-a[temb[i]].arrivetime);
sum=sum+(a[temb[i]].endtime-a[temb[i]].arrivetime);
}
printf("平均周转时间为:%d",sum/n);
return 0;
}

    推荐阅读