13-优先级调度算法与多级反馈队列算法
优先级调度算法
算法思想
随着计算机的发展,特别是[[001-1-3-发展#实时操作系统 |实时操作系统]]的出现,越来越多的应用场景需要根据任务的紧急程度来决定处理顺序
算法规则
- 每个作业/进程有各自的优先级,调度时选择优先级最高的作业/进程
- 就绪队列未必只有一个,可以按照不同的优先级来组织
- 可以把优先级更高的进程排在靠近队头的位置
- 根据优先级是否可以动态改变,可以将优先级分为静态优先级和动态优先级两种
- 静态优先级:创建进程时确定,之后一直不变
- 动态优先级:创建进程时有一个初始值,之后会根据情况动态的调整优先级。
- 如果某进程在就绪队列中等待了很长时间,则可以适当提高其优先级
- 如果某进程占用处理机运行了很长时间,则可以适当降低其优先级
- 设置进程的原则
- 系统进程优先级高于用户进程
- 前台进程优先级高于后台进程
- 相较于计算型进程(CPU繁忙进程)操作系统更偏好I/O型进程(I/O繁忙型进程)
用途和模式
既可以用于作业调度,也可以用于进程调度。甚至还会用于之后学习的I/O调度中
是否可抢占
1.抢占式
抢占式的除了需要在进程主动放弃处理机时进行调度,还需要在就绪队列变化时,检查是否会发生抢占
2.非抢占式
非抢占式的只需要在进程主动放弃处理机时进行调度。
例题
1.抢占式
2.非抢占式
优缺点
优点
- 用优先级区分各种任务的紧急程度
- 适用于实时操作系统,可灵活地调整对各种作业/进程的偏好程度
缺点
- 若源源不断的高优先级进程进来,则可能导致饥饿。
多级反馈队列调度算法
算法思想
对其他算法的折中权衡
算法规则
- 设置多级就绪队列,各级队列的优先级从高到低,时间片从小到大
- 新进程到达先进入第一级队列,按FCFS原则排队等待被分配时间片,若用完时间片进程还未结束,则进程放入下一级队列队尾
- 如果此时已经处于最下级的队列,则重新放回该队列对尾
- 只有第K级队列为空时,才会为第K+1级对头的进程分配时间片
用途和模式
用于进程调度
是否可抢占
抢占式的算法,在K级队列的进程运行过程中,若更上级的队列(1~k-1级)中加入了一个新进程,则由于新进程处于优先级更高的队列中,因此新进程会抢占处理机,原来运行的进程放回K级队列对尾。
例题
优缺点
优点
- FCFS的优点:对各个进程相对公平
- RR的优点*:每个新到达的进程都可以很快得到响应
- SPF的优点:短进程很快的能够得到响应
- 不必实现估计进程的运行时间(避免用户作假)([[002-2-4-2-短作业优先#缺点 |短作业缺点]])
- 可灵活的调整对各类进程的偏好程度,如CPU密集型,I/O密集型