1、常见的处理机调度算法
- 先来先服务
- 短进程优先
- 优先权
- 高响应比优先
- 时间片轮转
- 多级反馈队列
1.1 先来先服务调度算法
调度策略:根据进程进入就绪状态的先后顺序调度进程
实现:FIFO队列
优点:简单
缺点:
- 平均等待时间波动较大
- I/O资源和CPU资源利用率较低
1.2 短进程优先调度算法
调度策略:选择就绪队列中执行时间最短进程占用CPU进入运行状态
特点:就绪队列按预估的执行时间来排序
优点:
- 降低了短进程的等待时间,平均周转时间和平均带权周转时间小;
- 提高系统的吞吐量
缺点:
- 对长进程非常不利,可能长时间得不到运行
- 未能依据进程的紧迫程度来划分执行的优先级
- 难以准确估计进程的执行时间,从而影响调度性能
1.3 优先权调度算法
调度策略:选择就绪队列中优先级最高的进程投入运行
算法分类:
- 抢占式优先权算法:可剥夺当前运行进程CPU;
- 非抢占式优先权算法:仅发生在进程放弃CPU
优先权类型:
- 静态优先权:在进程创建时指定优先权,在进程运行时优先数不变;
- 动态优先权:在进程创建时创立一个优先级,但在其生命周期内优先数可以动态变化,如等待时间长优先数可改变
确定优先权依据:进程类型;对资源的需求;用户要求
优点:算法可以体现进程的紧急程度,非常适合实时系统
缺点:无穷阻塞问题(很早进入就绪队列的低优先权进程长期等待得不到响应,处于饥饿状态)
1.4 高响应比优先调度算法
响应比
R
(优先权)
=
等待时间
+
要求服务时间
要求服务时间
响应比R(优先权) = \frac{等待时间+要求服务时间}{要求服务时间}
响应比R(优先权)=要求服务时间等待时间+要求服务时间
是对FCFS和SJF算法的折中设计
1.5 时间片轮转调度算法
时间片:分配处理机资源的基本资源
调度策略:时间片结束时,时钟中断,按FCFS算法切换到下一个就绪进程
特点:
- 算法性能与时间片大小有关
- 周转时间依赖时间片
1.6 多级反馈队列调度算法
CPU密集型进程希望定义大的时间片,减小上下文切换次数;
I/O进程希望定义小时间片,可以及时响应
该算法设置多个就绪队列,赋予不同的优先权,就绪队列1优先权最高,其他逐级降低,
每队列赋予不同的时间片,规定优先权越低则时间片越长
优点:兼顾I/O密集和CPU密集型进程
缺点:算法相对复杂