FCFS、SJF、HRN调度算法

 此程序是模拟作业调度中的先来先服务算法(fcfs),最短作业优先算法(sjf),最高响应比优先算法(hrn)。
        print()函数的功能是输出模拟后的各作业运行情况。
              
        avg() 函数的功能是计算平均周转时间和平均带权周转时间并输出。
    

 

源代码:

 

#include<stdio.h>

#define    MAX   100



typedef struct JCB
{
     char    job_id[10];     //作业ID
     float   Arr_time;       //到达时刻
     float   Fun_time;       //估计运行时间
     float   Wait_time;      //等待时间
     float   Start_time;     //开始时刻
     float   Fin_time;       //完成时刻
     float   Tur_time;       //周转时间
     float   WTur_time;      //带权周转时间
     int     Order;          //优先标记
}list;


void fcfs(list *p,int count);    

void sjf(list *p,int count);

void hrn(list *p,int count);

void print(list *p,int count);

void avg(list *p,int count);






void fcfs(list *p,int count)    //先来先服务算法
{
    list temp;                 //临时结构体变量
    int i;
    int j;  

    for(i = 1;i < count;i++)       //按到达时刻直接插入排序
    {
        temp = p[i];
        j = i-1;
 
          while(temp.Arr_time < p[j].Arr_time && j >= 0)
          {
              p[j+1] = p[j];
               --j;
          }
            p[j+1] = temp;
    }
    

    for(i = 0;i < count;i++)                   //循环计算各个作业的时间值
    {
        if(i == 0)
        {
            p[i].Start_time = p[i].Arr_time;
        }
        else
        {
            p[i].Start_time = p[i-1].Fin_time;    //开始时刻==前一个作业的完成时刻
        } 
      
  • 8
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值