printf("%5s",a[i].pro_name);
printf("\n");
a[0].starttime=a[0].arrivetime;
a[0].finishtime=a[0].servetime+a[0].starttime;
a[0].circle_time=a[0].finishtime-a[0].arrivetime;
a[0].d_circle_time=a[0].circle_time/a[0].servetime;
for(j=1;ja[j].starttime=a[j-1].servetime+a[j-1].starttime;
a[j].finishtime=a[j].servetime+a[j].starttime;
a[j].circle_time=a[j].finishtime-a[j].arrivetime;
a[j].d_circle_time=a[j].circle_time/a[j].servetime;
}
printf("\n进程调度列表:
\n");
printf("name\tarrive\tserve\tstart\tfinish\tcircle\td_circle\n");
for(i=0;iprintf("%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",a[i].pro_name,
a[i].arrivetime,a[i].servetime,a[i].starttime,a[i].finishtime,
a[i].circle_time,a[i].d_circle_time);
return0;
}Sjf进程调度运行结果:
HRF算法实现:
#include
intmain(void)
{
structprocess
{
charname[10];
floatarrivetime;
floatservetime;
floatstarttime;
floatfinishtime;
floatcycle_time;
floatd_cycle_time;
}pro[100];
inti,j,N,t,k,l=1;
intcount=1;
floatadd,min_arrive,priority,max=0;
processtemp;
printf("请输入进程数:
");
scanf("%d",&N);
printf("请输入进程信息(包括进程名、进程到达时间、进程服务时间)\n");
for(i=0;iprintf("请输入第%d个进程的信息",i+1);
scanf("%s%f%f",&pro[i].name,&pro[i].arrivetime,&pro[i].servetime);
}
min_arrive=pro[0].arrivetime;
for(i=0;iif(pro[i].arrivetimemin_arrive=pro[i].arrivetime;
t=i;
}
}
temp=pro[t];
pro[t]=pro[0];
pro[0]=temp;
add=pro[0].arrivetime+pro[0].servetime;
pro[0].starttime=add;
while(countfor(i=count;iif(pro[i].arrivetime<=add){
priority=(add-pro[i].arrivetime)/pro[i].servetime;
if(priority>max){
max=priority;
k=i;
}
}
}
count++;
add=add+pro[k].servetime;
temp=pro[k];
pro[k]=pro[l];
pro[l]=temp;
pro[l].starttime=add;
l=l+1;
}
printf("\n进程调度顺序为:
\n");
for(i=0;iprintf("\t%s",pro[i].name);
printf("\n\n");
for(i=0;ipro[i].finishtime=pro[i].starttime+pro[i].servetime;
pro[i].cycle_time=pro[i].finishtime-pro[i].arrivetime;
pro[i].d_cycle_time=pro[i].cycle_time/pro[i].servetime;
}
printf("进程调度列表如下:
\2\n");
printf("\tname\tarrive\tserve\tstart\tfinish\tcycle\td_cycle\n");
for(i=0;iprintf("\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t\n",pro[i].name,
pro[i].arrivetime,pro[i].servetime,pro[i].starttime,pro[i].finishtime,
pro[i].cycle_time,pro[i].d_cycle_time);
return0;
}
HRF进程调度运行结果:
时间片轮转调度算法:
#include
intmain(void)
{
structprocess
{
charname[10];
floatarrivetime;
floatservetime;
floatstarttime;
floatfinishtime;
floatcycletime;
floatd_cycletime;
}pro[100];
floatsize;
inti,j,N,count=0;
floatresttime[100],time;\
printf("\t***************时间片轮转调度算法***************\n\n");
printf("pleaseinputtheprocessnumber:
");
scanf("%d",&N);
printf("pleaseinputtheprocesses'information(nameandservetime):
\n");
for(i=0;iprintf("pleaseinputthe%thprocessinformation:
",i+1);
scanf("%s%f",&pro[i].name,&pro[i].servetime);
printf("\n");
}
printf("pleaseinputthesizeoftime:
");
scanf("%f",&size);
for(i=0;ipro[i].arrivetime=0;
pro[0].starttime=0;