操作系统学不会?————一文速通(FCFS,SJF/SPF,SRTN,HRRN算法)保姆级解析
一.FCFS(先来先服务)算法
第一部分:六维分析FCFS算法
第二部分:六个计算指标分析FCFS的优劣
指标1:周转时间=完成时间-到达时间
指标2:带权周转时间=周转时间/运行时间
指标3:等待时间=周转时间-运行时间
指标4:平均周转时间=周转时间总和/进程总数
指标5:平均带权周转时间=带权周转时间总和/进程总数
指标6:平均等待时间=等待时间总和/进程总数
算法核心思想:等待时间越久到达时间越晚,越先得到服务
下面我们通过一个题目来分析:
我们按照先来先服务的算法思想画出甘特图如下:
我们根据前面给出的六个指标的公式计算出六个指标:
注意:本题目中的进程是纯计算型的进程,如果涉及到I/O操作,则等待时间的计算公式变为等待时间=周转时间-运行时间-I/O操作时间
二.SJF/SPF(非抢占式短作业优先/短进程优先)调度算法
第一部分:六维分析SJF/SPF算法
第二部分:六个计算指标分析SJF/SPF的优劣
指标1:周转时间=完成时间-到达时间
指标2:带权周转时间=周转时间/运行时间
指标3:等待时间=周转时间-运行时间
指标4:平均周转时间=周转时间总和/进程总数
指标5:平均带权周转时间=带权周转时间总和/进程总数
指标6:平均等待时间=等待时间总和/进程总数
算法核心思想:每次选择已经到达并且运行时间最短的作业或进程
计算公式同FCFS一致,我们不再赘述,我们还是来看一道题目:
我们还是通过甘特图的方式分析:
分析:
0时刻p1进程到达,此时没有其他进程到达,所以p1先上处理机,然后过了7ms运行结束,在这7ms的时间里所有进程都已经到达,然后我们每次选择运行时间最短的进程可以得到P1->P3->P2->P4的调度顺序
下面我们给出计算步骤:
对比FCFS算法中的8.75ms的平均周转时间,3.5ms的平均带权周转时间,4.75ms的平均等待时间,性能得到了很大的提升
三.SRTN(抢占式短进程优先)调度算法
SRTN又称最短剩余时间优先算法,我们给出如下定义:
调度流程分析:
2时刻p2到达,p2运行4ms,运行时间小于p1剩余的5ms,于是抢占处理机,4时刻p3到达,p3运行1ms小于p1剩余的5ms和p2剩余的2ms,于是抢占处理机,到达5时刻。p3正好运行完,p4到达,此时p4的运行时间大于p2的运行时间,所以p2重新抢占处理机一直到执行结束,然后p4再上处理机直到结束,p1再上处理机运行直到结束,由此我们得到甘特图:
我们给出计算步骤:
不难看出,相比较于SJF算法,SRTN算法时间上的优化做的更好,我们需要注意以下几点:
四.HRRN(高响应比优先算法)
响应比有如下计算公式:
流程分析:
注意每次调度响应比最高的不是最低的
计算步骤同前面一致,读者可自行计算,下面我们给出高响应比算法的六维分析:
最后我们给出四种算法的比较
以上四种算法属于批处理系统的调度算法,交互性很差,交互性系统的调度算法下一篇文章会详细介绍。