鱼C论坛

 找回密码
 立即注册
查看: 1750|回复: 0

[技术交流] 先来先服务FCFS进程调度模拟

[复制链接]
发表于 2019-11-1 15:20:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

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

        pcb[0].finish_time=pcb[0].arrive_time+pcb[0].run_time;
        pcb[0].zhouzhuan_time=pcb[0].finish_time-pcb[0].arrive_time;

          for(i=1;i<N;i++)
        {         
         
           
            pcb[i].finish_time=pcb[i-1].finish_time+pcb[i].run_time;
            pcb[i].zhouzhuan_time=pcb[i].finish_time-pcb[i].arrive_time;
         
        }   
        output();
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 16:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表