进程调度算法

(1)先来先服务调度算法FCFS

进程调度算法

FCFS调度算法存在的问题
从表面上,先来先服务于所有作业是公平的,即按照它们到来的先后次序进程服务。但若一个长作业先到达系统,就会使许多短作业等待很长的时间,从而引起许多短作业用户的不满。
所以,现在操作系统中,已很少用该算法作为主要调度策略,尤其是在分时系统和实时系统中。但它常被结合在其它调度策略中使用。

(2)短作业/进程优先调度算法SJF/SPF

短作业优先调度算法(SJF)
用于作业调度
主要任务:从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。
短进程优先调度算法(SPF)
用于进程调度
主要任务:从就绪队列中选出一估计运行时间最短的进程,将处理机分配给它。
可采用抢占(剥夺)或者非抢占(非剥夺)调度方式。

SJ(P)F ——非抢占式
进程调度算法

SJ(P)F ——抢占式
进程调度算法
SJF/SPF调度的优缺点

优点:
1)能有效降低作业的平均等待时间
2)提高吞吐量
3)能有效缩短进程的周转时间
缺点:
1)对长作业不利
2)没有考虑作业的紧迫程度
3)作业执行时间、剩余时间仅为估计*;

故SJF/SJP算法虽然是优化的,但在CPU调度中很难实现。

(3)时间片轮转调度算法RR

时间片轮转法:系统将所有原就绪进程按FCFS的原则,排成一个队列,依次调度,把CPU分配给队首进程,并令其执行一个时间片/CPU时间,通常为10-100ms。时间片用完后,该进程将被抢占并插入就绪队列末尾。
特点:
应用于分时OS
保证及时响应用户的请求,是早期采用的一种调度算法
进入90年代后,广泛采用多级反馈队列调度算法

进程调度算法
进程调度算法

(4)优先权调度算法

非抢占式优先权算法:系统一旦把处理机分配给就绪队列中优先权最高的进程后,该进程便一直执行下去,直到完成/因发生某事件而放弃处理机时,系统方可重新分配处理机。
抢占式优先权算法:系统把处理机分配给就绪队列中优先机最高的进程,使之执行。但在其执行期间,只要出现了另一个优先权更高的进程,进程调度程序就立即停止当前进程的执行,重新将处理机分配给新到的优先权最高的进程。

进程调度算法
进程调度算法
静态优先权
优先权在创建进程时确定
在进程的整个运行期间保持不变
一般用一整数表示,小表优先级高

动态优先权
优先权在创建进程时确定
在进程的运行期间会发生变化

(5)高响应比优先权调度算法

基本思想:把CPU分配给就绪队列中响应比最高的进程。
优先权的变化为 进程调度算法

进程调度算法

(6)多级队列调度算法

基本思想:
根据作业的性质或类型,将就绪队列划分为若干个独立的队列,每个作业固定地分属一个队列。每个队列采用一种调度算法,不同的队列可以采用不同的调度算法。
如:交互型作业设置一队列------时间片轮转调度算法
批处理作业设置一队列------FCFS调度算法
前台[交互式]------RR
后台[批处理]------优先权、SPF或 FCFS

(7)多级反馈队列调度算法

基本思想:
多级反馈队列调度算法是时间片轮转算法和优先级调度算法的综合和发展
通过动态调整进程优先级和时间片大小,不必事先估计进程的执行时间,多级反馈队列可兼顾多方面的系统目标
目前公认的一种较好的进程调度算法。