最短作业优先算法又叫做短进程优先算法
写此博文目的:
1.方便自己复习
2.给正在学习此算法的人一点参考
单道(一次只能运行一个进程)
分析:
先将进程按照到达时间升序排序,第一个进程到达的时候不等待,直接运行,因为他是第一个到达的进程,在他之前没有进程在运行,当有进程到达但是有其他进程在运行的时候,到达的进程处于等待状态,当某个正在运行的进程运行完毕的时候,需要选择下一个进程,依据是:处于等待状态的进程,且运行时间最短(当有多个进程处于等待状态的时候,选择运行时间最短的进程,这个结束最短作业优先算法的核心)
代码如下:
#include<bits/stdc++.h> using namespace std; #define TAKEIN "takein"//对应的进程状态 #define WAIT "wait" #define RUN "run" #define FINISH "finish" #define PNUMBER 5//进程个数 typedef struct pcb { char processName[20];//进程名称 int arriveTime;//进程到达时间 int startTime;//进程开始时间 int endTime;//进程结束时间 int runTime;//进程运行时间大小 int turnOverTime;//周转时间 int userweightTurnOverTime;//带权周转时间 char provessStatus[10];//进程状态 } pcb; pcb pcbs[PNUMBER];//进程数组 int currentTime=0;//时间 int processIndex=0;//进程的编号 void createPcbs()//进程初始化函数 { freopen("input.txt","