在这一部分笔记中整理,关于进程调度的常用的算法,前四个算法各有优缺,第五个和第六个算法最为重要,一定要理解。
- 典型的调度算法
-
先来先服务(FCFS-first come first served)
调度方式:非抢占式调度
适用场景:作业/进程调度
优缺点:有利于CPU繁忙型作业,充分利用PCU资源,不利于IO繁忙型作业,操作耗时
-
短作业优先(SJF-shortest job first)
SRTN抢占式:最短剩余时间优先
算法原则:追求最少的平均(带权)周转时间
调度方式:SJK/SPF非抢占式
使用场景:作业和进程调度
优缺点:平均周转时间最少,长时间周转时间会增加或者饥饿,估计时间不准确,不能保证急迫的任务及时处理
-
高响应比优先调度(HRRN-highest response ratio next)
算法内容:结合FCFS和SJF,综合考虑等待时间和服务时间计算响应比,高的优先调度
算法原则:综合考虑作业进程的等待时间和服务时间
调度方式:非抢占式
响应比计算:
- 响应比=(服务时间+等待时间)/服务时间,≥1
- 只有当前进程放弃执行权的时候(完成/阻塞),重新计算所有进程响应比
- 长作业等待越久,响应比越高,更容易获得处理机
-
优先级调度(PSA,priority scheduling algorithm)
调度方式:抢占/非抢占(并不能获得及时执行)
适用场景:作业/进程调度
优先级设置原则
- 静态/动态优先级
- 系统>用户;交互型>非交互型;IO型>计算型
- 低优先级进程可能会产生饥饿
-
时间片轮转调度(RR,round-robin)
算法内容:按照进程到达就绪队列的顺序,轮流分配了一个时间片执行,时间用完则剥夺
算法原则:公平,轮流为每个进程服务,进程在一定时间内都能得到响应
调度方式:抢占式,有时钟中断确定时间
使用场景:进程调度
优缺点:公平响应快,适用于分时系统,时间片由:系统响应时间,就绪队列进程数量,系统处理能力决定,缺点是时间片太大相当于FCFS;太小,处理机转换频繁,开销增大
-
多级反馈队列调度(MFQ,nultileveled feedback queue)
算法内容:设置多个优先级队列的就绪队列,优先级从高到低,时间片从小到大,新进程采用队列降级法,前面的队列不为空就不执行后续的队列
算法原则:集合了前面集中算法的优点,相当于PSA+RR
调度方式:抢占式
适用场景:进程调度
优缺点:对于各类型相对公平,快速响应;终端型作业用户:短作业优先;批处理作业用户:周转时间短;长批处理作业用户:用前几个队列部分执行。
-