1、平均周转时间
周转时间是指从作业被提交给系统开始,到作业完成为止的这段时间间隔。
2、平均带权周转时间
带权周转时间是指作业的周转时间与系统为它提供服务的时间之比
1、先来先服务算法
FCFS按照作业到达的先后次序进行调度,或者说它是优先考虑在系统中等待时间最长的作业,而不管该作业所需执行时间的长短。
A进程先到达,服务时间为3,时间2处B到达,但因为是先来先服务,因此A继续运行,运行到3时刻A结束,B开始运行,运行过程中C、D依次到达,运行到6时刻B结束,C开始运行,之后依次运行D、E。
进程 | A | B | C | D | E | 平均 | |
FCFS | 到达时间 | 0 | 2 | 4 | 6 | 8 | |
服务时间 | 3 | 6 | 4 | 5 | 2 | ||
完成时间 | 3 | 9 | 13 | 18 | 20 | ||
周转时间 | 3 | 7 | 9 | 12 | 12 | 8.6 | |
带权周转时间 | 1 | 1.17 | 2.25 | 2.4 | 6 | 2.56 |
2、非抢占式短作业优先
A作业首先到达,此时只有A在队列中,因此A先执行,运行到2s时B到达,但因为是非抢占式,因此A继续运行,第3s时A运行完,此时队列中只有B到达了,因此B运行,运行过程中C、D、E依次到达,但由于是非抢占式,因此B到第9s运行完。此时队列中有C、D、E作业,先运行谁呢?这时候就要考虑短作业优先原则,通过判断,作业E的服务时间最短为2,因此先运行E。运行完E后,再判断出C作业的服务时间最短为4,因此运行作业C,最后运行作业D。
进程 | A | B | C | D | E | 平均 | |
SJF | 到达时间 | 0 | 2 | 4 | 6 | 8 | |
服务时间 | 3 | 6 | 4 | 5 | 2 | ||
完成时间 | 3 | 9 | 15 | 20 | 11 | ||
周转时间 | 3 | 7 | 11 | 14 | 3 | 7.6 | |
带权周转时间 | 1 | 1.17 | 2.75 | 2.8 | 1.5 | 1.84 |
3、抢占式短作业优先
A作业首先到达,运行2s后B到达,但B的服务时间为6s,A接下来的服务时间为1s,因此继续运行A,A运行完后开始运行B,B运行1s后到了第4s,此时C作业到达,B接下来的服务时间为5,而C作业的服务时间为4,因此优先运行C,B进入后备队列,C运行到第6s时D到达,但D的服务时间长,因此继续运行C,D进入后备队列,排在B后面,到第8s时C运行结束,E到达,此时E的服务时间最短,因此优先运行E。E运行结束后,因此此时B和D的服务时间相同,D排在B后面,所以先运行作业B,再运行作业D。
进程 | A | B | C | D | E | 平均 | |
SJF | 到达时间 | 0 | 2 | 4 | 6 | 8 | |
服务时间 | 3 | 6 | 4 | 5 | 2 | ||
完成时间 | 3 | 15 | 8 | 20 | 10 | ||
周转时间 | 3 | 13 | 4 | 14 | 2 | 7.2 | |
带权周转时间 | 1 | 2.16 | 1 | 2.8 | 1 | 1.59 |
4、高响应比优先
响应比=(运行时间+等待时间)÷ 运行时间。
比较时直接比较等待时间 ÷ 运行时间的大小即可。
高响应比优先算法为非抢占式。
A作业先到达,运行到第3s结束,B作业接着运行6s,到第9s结束,此时C、D、E都到达,此时需要判断优先运行谁,可以算出C的响应比为2.25,D的响应比为1.6,E的响应比为1.5,因此先运行C,C运行到第13s结束,此时可以算出D的响应比为2.4,E的响应比为3.5。因此先运行E,再运行D。
进程 | A | B | C | D | E | 平均 | |
HRRN | 到达时间 | 0 | 2 | 4 | 6 | 8 | |
服务时间 | 3 | 6 | 4 | 5 | 2 | ||
完成时间 | 3 | 9 | 13 | 20 | 15 | ||
周转时间 | 3 | 7 | 9 | 14 | 7 | 8 | |
带权周转时间 | 1 | 1.17 | 2.25 | 2.8 | 3.5 | 2.14 |
5、时间片轮转(时间片=1)
时间片轮转法较为复杂,但认真分析,找到规律就会非常简单。
这是我画的草图,大家可能看不太明白,我解释一下。
0s的时候作业A到达,进入就绪队列。
1s的时候,作业A在队首,将CPU分配给A执行。执行完后A立即进入回到队尾,但此时其他作业还未到达,因此A直接在队首。即A(此时A已经执行了1s时间)
2s的时候B到达,排在A进程的后面,因此2s的时候将CPU分配给A运行。执行完后A立即回到队尾,排在B进程后面。此时B在队首,A在队尾。即A B(此时A已经执行了2s时间)
3s的时候,因为B在队首,因此将CPU分配给B执行。此时B后面是A进程,B执行完后立即回到队尾,排在A后面,那么此时A在队首,B在队尾。即B A(此时B执行了1s时间)
4s的时候,C作业到达,排在队尾,即B的后面。A在队首,将CPU分配给A执行,因为A的服务时间为3,因此此次执行结束后A出队,因此A的完成时间为4。此时B在队首,C在队尾。即C B(A执行了3s时间并出队)
5s的时候,B在队首,将CPU分配给B执行,执行结束后立即回到队尾,排在C的后面,此时C在队首,B在队尾。即B C&#