处理机调度算法

处理机调度概念

进程切换

保存当前进程在PCB中的执行上下文(CPU状态),恢复下一个进程的执行上下文。

处理机调度

  • 从就绪队列中挑选下一个占用CPU运行的进程
  • 从多个可用CPU中挑选就绪进程可使用的CPU资源

调度算法

先来先服务 (First Come, First Served. FCFS)

思路

依据进程进入就绪状态的先后顺序排列。

  • 进程进入等待或结束状态时,就绪队列中的下一个进程占用CPU。

特征

  • 优点是比较简单
  • 缺点:
    • 平均等待时间波动较大:短进程可能排在长进程后面
    • I/O资源和CPU资源的利用率较低

短进程优先 (SPN)

思路

选择就绪队列中执行时间最短进程占用CPU进入运行状态。

  • 就绪队列按照预期的执行时间来排序

特征

  • 该算法具有最优的平均周转时间
  • 缺点:
    • 可能导致饥饿:连续的短进程流会使长进程无法获得CPU资源
    • 需要预知未来

最高相应比优先 (HRRN)

思路

选择就绪队列中响应比R值最高的进程。

  • R = (w + s)/ s
  • w:等待时间(waiting time)
  • s:执行时间(service time)

特征

  • 在短进程优先算法的基础上改进
  • 不可抢占
  • 关注进程的等待时间
  • 防止无限期推迟

时间片轮转算法(RR, Round-Robin)

时间片

  • 分配处理机资源的基本时间单元

思路

  • 时间片结束时,按FCFS算法切换到下一个就绪进程
  • 每个(n - 1)个时间片进程执行一个时间片q

时间片的长度

  • 时间片太大

    • 等待时间过长
    • 极限情况退化成FCFS
  • 时间片太短

    • 反应迅速,但产生大量上下文切换
    • 大量上下文切换开销影响到系统吞吐量
  • 时间片长度选择目标

    维持上下文切换开销处于1%以内

多级队列调度算法(MQ)

  • 就绪队列被划分成多个独立的子队列
  • 每个队列拥有自己的调度策略
  • 队列间的调度:使用时间片轮转

多级反馈队列算法(MLFQ)

  • 进程可在不同队列间移动
  • 时间片大小随优先级级别的增加而增加
  • 如进程在当前的时间片没有完成,则降到下一个优先级
posted @ 2021-03-06 17:40  bGpi  阅读(116)  评论(0编辑  收藏  举报