短进程算法c语言,短进程优先算法C语言实现

短进程优先算法C语言实现

1、本实验实现了短进程优先的进程调度操作,但因为是非抢占式,所以实现起来比较简单。

短进程优先算法是以作业的长短来计算优先级,作业越短,其优先级越高。作业的长短是以作业所要求的运行时间来衡量的。在把短作业优先调度算法用于作业调度时,它将从外存的作业后备队列中选择若干个估计运行时间最短的作业,优先将它们调入内存运行。

2、实验说明:

(1)PCB:

①作业号 ②到达时间 ③需要运行时间 ④开始时间 ⑤完成时间 ⑥周转时间 ⑦带权周转时间

(2)公式:

完成时间 = 开始时间 + 需要运行时间

周转时间 = 完成时间 - 到达时间

带权周转时间 = 周转时间 / 需要运行时间

(3)附:当全部进程执行完毕,

①打印出平均带权周转时间

②打印出调度顺序

③打印出平均周转时间

最先到的进程从0时刻到达,首先开始执行它。

比较处于等待队列中的进程的需要运行时间, 谁的需要运行时间短就先执行谁,如果需要运行时间相同则看它们的到达时间,到达时间早的先执行。

3、源代码:

#include

#include

#include

#define TAKEIN "Takein"//吸纳状态

#define WAIT "Wait"//就绪状态

#define RUN "Run"//运行状态

#define FINISH "Finish"//完成状态

#define JOBNUMBER 5 //设置进程测试数为5

#define MIN 100

typedef struct PCB{

char jobName[10];//作业号

int arriveTime;//到达时间

int runTime;//需要运行时间

int startTime;//开始时间

int endTime;//完成时间

int turnoverTime;//周转时间

float useWeightTurnoverTime;//带权周转时间

char processStatus[10];//进程状态

};

static int currentTime = 0;

static int finishNumber = 0;

char JobArray[JOBNUMBER][10];

static int indexJob = 1;

//创建PCB

void createPCB(struct PCB* pcb){

freopen("input.txt","r",stdin);

printf("从文件中读入三个参数的数据:\n");

printf("作业号 到达时间 需要运行时间\n");

for(int i = 0; i < 5; i++){

scanf("%s", &pcb[i].jobName);//作业号

scanf("%d", &pcb[i].arriveTime);//到达时间

scanf("%d", &pcb[i].runTime);//需要运行时间

pcb[i].startTime = 0;

pcb[i].endTime = 0;

pcb[i].turnoverTime = 0;

pcb[i].useWeightTurnoverTime = 0.0;

strcpy(pcb[i].processStatus, TAKEIN);

printf("%s\t%d\t%d\n",pcb[i].jobName, pcb[i].arriveTime,pcb[i].runTime);

}

printf("---------------------------------

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值