Loading

13-优先级调度算法与多级反馈队列算法

优先级调度算法

算法思想

随着计算机的发展,特别是[[001-1-3-发展#实时操作系统 |实时操作系统]]的出现,越来越多的应用场景需要根据任务的紧急程度来决定处理顺序


算法规则

  1. 每个作业/进程有各自的优先级,调度时选择优先级最高的作业/进程
  2. 就绪队列未必只有一个,可以按照不同的优先级来组织
  3. 可以把优先级更高的进程排在靠近队头的位置
  4. 根据优先级是否可以动态改变,可以将优先级分为静态优先级动态优先级两种
    1. 静态优先级:创建进程时确定,之后一直不变
    2. 动态优先级:创建进程时有一个初始值,之后会根据情况动态的调整优先级。
      1. 如果某进程在就绪队列中等待了很长时间,则可以适当提高其优先级
      2. 如果某进程占用处理机运行了很长时间,则可以适当降低其优先级
    3. 设置进程的原则
      1. 系统进程优先级高于用户进程
      2. 前台进程优先级高于后台进程
      3. 相较于计算型进程(CPU繁忙进程)操作系统更偏好I/O型进程(I/O繁忙型进程)

用途和模式

既可以用于作业调度,也可以用于进程调度。甚至还会用于之后学习的I/O调度中


是否可抢占

1.抢占式

抢占式的除了需要在进程主动放弃处理机时进行调度,还需要在就绪队列变化时,检查是否会发生抢占

2.非抢占式

非抢占式的只需要在进程主动放弃处理机时进行调度。


例题

1.抢占式

在这里插入图片描述

2.非抢占式

在这里插入图片描述


优缺点

优点

  1. 用优先级区分各种任务的紧急程度
  2. 适用于实时操作系统,可灵活地调整对各种作业/进程的偏好程度

缺点

  1. 若源源不断的高优先级进程进来,则可能导致饥饿。

多级反馈队列调度算法

算法思想

对其他算法的折中权衡


算法规则

  1. 设置多级就绪队列,各级队列的优先级从高到低,时间片从小到大
  2. 新进程到达先进入第一级队列,按FCFS原则排队等待被分配时间片,若用完时间片进程还未结束,则进程放入下一级队列队尾
  3. 如果此时已经处于最下级的队列,则重新放回该队列对尾
  4. 只有第K级队列为空时,才会为第K+1级对头的进程分配时间片

用途和模式

用于进程调度


是否可抢占

抢占式的算法,在K级队列的进程运行过程中,若更上级的队列(1~k-1级)中加入了一个新进程,则由于新进程处于优先级更高的队列中,因此新进程会抢占处理机,原来运行的进程放回K级队列对尾。


例题

在这里插入图片描述


优缺点

优点

  1. FCFS的优点:对各个进程相对公平
  2. RR的优点*:每个新到达的进程都可以很快得到响应
  3. SPF的优点:短进程很快的能够得到响应
  4. 不必实现估计进程的运行时间(避免用户作假)([[002-2-4-2-短作业优先#缺点 |短作业缺点]])
  5. 可灵活的调整对各类进程的偏好程度,如CPU密集型,I/O密集型

posted @ 2023-01-20 11:13  nliuc  阅读(214)  评论(0编辑  收藏  举报