【Linux】先来先服务(FCFS)优先调度算法,最短作业优先 ( SJF ) 优先调度算法(非抢占式与抢占式),高响应比优先 (HHRM)调度算法
先来先服务(FCFS)优先调度算法
FCFS: First-come first-service
最简单的调度算法,既可以用于作业调度 ,也可以用于程序调度,当作业调度中采用该算法时,系统将按照作业到达的先后次序来进行调度,优先从后备队列中,选择一个或多个位于队列头部的作业,把他们调入内存,分配所需资源、创建进程,然后放入“就绪队列”,直到该进程运行到完成或发生某事件堵塞后,进程调度程序才将处理机分配给其他进程。
最短作业优先( SJF ) 优先调度算法(非抢占式与抢占式)
SJF:Shortest Job First
最短作业优先调度算法将每个进程与其下次 CPU 执行的长度关联起来。当 CPU 变为空闲时,它会被赋给具有最短 CPU 执行的进程。如果两个进程具有同样长度的 CPU 执行,那么可以由 FCFS 来处理。
注意:SJF 默认指的是非抢占式的最短作业优先调度算法
高响应比优先 (HHRN)调度算法
HHRN:Highest Response Ratio Next
是一种对CPU中央控制器响应比的分配的一种算法。HRRN是介于FCFS(先来先服务算法)与SJF(短作业优先算法)之间的折中算法,既考虑作业等待时间又考虑作业运行时间,既照顾短作业又不使长作业等待时间过长,改进了调度性能。
提示:
周转时间 = 完成时间 - 提交时间
平均周转时间 = 周转时间 / 作业数
带权周转时间 = 周转时间 / 执行时间
平均带权周转时间(响应比)= 带权周转时间 / 作业数
解:(1)先来先服务调度算法的平均周转时间 = [(10.5 - 8.5) + ( 12.1 - 9.2) + (12.6 - 9.4)] / 3 = 2.7(h)
最短作业优先算法的平均周转时间 = [(10.5 - 8.5) + (12.6 - 9.2) + (11 - 9.4)] / 3 = 2.3(h)
(2)由(1)知最短作业优先算法的平均周转时间 为2.3h
(3)抢占式最短作业优先算法的平均周转时间 = [(11 - 8.5) + (12.6 - 9.2) +(9.9 - 9.4) ] / 3 = 2.1(h)
解:(1)FCFS算法的平均周转时间 Ti = [(9 - 8) +(9.5-8.5)+(9.7-9)+(9.8-9.1)] /4=0.85(ms)
响应比R=(R1+R2+R3+R4)/4=3.375
(2)SJF算法的平均周转时间Ti=[(9.8-8)+(9-8.5)+(9.3-9)+(9.2-9.1)]/4=0.925
响应比R=(R1+R2+R3+R4)/4=1.25