Wowzz 发表于 2019-11-1 15:20:34

先来先服务FCFS进程调度模拟


先来先服务FCFS进程调度模拟
下面程序默认认为上一个进程结束前,下一个进程就已经到达,如果要增加一种情况,即上一个进程结束前,下一个进程还没有到达,程序计算周转时间仍然正确,如何修改程序?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#defineN5
structPCB
{
        char name;
        intarrive_time;
        intrun_time;
    int finish_time;
        intzhouzhuan_time;
};
inttotal=0;
structPCBpcb,temp;
float sum1,sum2,average=0;
voidoutput()
{   
    printf("----------------------------------------------------------------------------------------------\n");
    printf("进程名到达时间运行时间完成时间周转时间带权周转时间\n");
        printf("----------------------------------------------------------------------------------------------\n");
    for(inti=0;i<N;i++)
        {
                average=(float)pcb.zhouzhuan_time/pcb.run_time;
                sum1=sum1+pcb.zhouzhuan_time;
                sum2=sum2+average;
                  printf(" %s      %d         %d         %d         %d      %.2f\n",pcb.name,pcb.arrive_time,pcb.run_time,pcb.finish_time,pcb.zhouzhuan_time,average);
        }
        printf("          平均                           ");
printf("%.2f      %.2f\n",sum1/N,sum2/N);
    printf("----------------------------------------------------------------------------------------------\n");
}
voidmain()
{   
   
        int i,j;
        for ( i=0;i<N;i++)
        {
                printf("请输入进程名\n" );
      scanf("%s",pcb.name);
                printf("请输入到达时间:");
                scanf("%d",&pcb.arrive_time);
                printf("请输入要运行时间");
                scanf("%d",&pcb.run_time);               
        }
        for( i=0;i<N;i++)
        {                printf("%s    ",pcb.name);
      printf("%d    ",pcb.arrive_time);
                printf("%d \n",pcb.run_time);
    }

        pcb.finish_time=pcb.arrive_time+pcb.run_time;
        pcb.zhouzhuan_time=pcb.finish_time-pcb.arrive_time;

        for(i=1;i<N;i++)
        {       
       
         
            pcb.finish_time=pcb.finish_time+pcb.run_time;
            pcb.zhouzhuan_time=pcb.finish_time-pcb.arrive_time;
       
        }   
        output();
}
页: [1]
查看完整版本: 先来先服务FCFS进程调度模拟