当前位置:   article > 正文

操作系统-先到先服务和短时间优先算法-C语言_最短服务时间优先算法

最短服务时间优先算法

运行结果

先看效果再附源码(源码、经验交流QQ群:613879714),有问题QQ群提问,这里不能及时回复
进程信息:{‘A’,1,2},{‘C’,2,1}, {‘B’,1,100},{‘D’,150,100}, {‘F’,150,80},{‘E’,200,4}
在这里插入图片描述

先到先服务(FCFS)

先按到达时间对进程进行排序(升序),再依次对排好序的进程依次服务。

  • 第一个进程的开始时间是它的到达时间(A进程)
  • 其余进程的开始是上个进程的完成时间
  • 注:如果上一个进程完成时,该进程还没到达,则该进程的开始时间是它的到达时间(F进程)

短时间优先(SJF)

先按到达时间对进程进行排序(升序),再选择第一个进程去服务,其余按下面规则去服务。

  • 短时间优先的前提条件是进程已到达的情况下才去按服务时间排序(升序)
  • 服务完当前进程后,要去判断当前进程完成时,已到达的进程中哪个进程服务时间最短的
  • 注:如果当前到达时,前面的进程早已服务完,则该进程的开始时间是它的到达时间(F进程)

源代码

#include<stdio.h>
#include<stdlib.h>
#define N 6
struct JOBS{
   
 char jobID;//进程名
 int ArriveTime;//到达时间
 int ServerTime;//服务时间
 int StartTime;//开始时间
 int FinishTime;//完成时间
 int WholeTime;//周转时间
 float ValueWholeTime;//带权周转时间 
}job[N]={
   {
   'A',1,2},
         {
   'C',2,1},
         {
   'B',1,100},
         {
   'D',150,100},
         {
   'F',150,80},
         {
   'E',200,4}
};
//交换
void change(int i,int j){
   
 int tempAT,tempST;
 char chang;
 chang=job[i].jobID;
 tempAT=job[i
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/964666
推荐阅读
相关标签
  

闽ICP备14008679号