操作系统之CPU调度

基本概念

CPU调度:从就绪队列中选择进程并为之分配CPU

抢占式:进程从运行状态切换到就绪状态、等待->就绪(优先级高则抢占)

非抢占式:运行->等待,终止

process_control_with_process_state

比较调度算法的准则

  • CPU利用率
    • CPU 处于忙状态的 时间百分比
  • 吞吐量
    • 单位时间内完成的 进程数量
  • 周转时间
    • 进程从 初始化 到 结束(包括等待)的总时间
  • 等待时间
    • 进程在 就绪队列中 的总时间
  • 响应时间
    • 从提交请求到产生响应所花费的总时间

调度算法

  • 先到先服务算法(FCFS)

    非抢占的,简单,平均等待时间长

  • 短进程优先算法

    • SPN: Shortest Process Next

    • SJF: Shortest Job First(最短作业优先调度算法)

      真正困难时如何知道下一个CPU区间的长度

  • SRT: Shortest Remaining Time(短剩余时间优先算法)
  • 优先级调度:可以实抢占式和非抢占的

    可能会导致无穷阻塞或者饥饿,解决方法是老化

  • 时间片轮转算法 (各个进程轮流占用一个相等的时间片)

    进程可能只需要小于时间片的CPU 区间。对于这种情况, 进程本身会自动释放CPU 调度程序接着处理就绪队列的下一个进程。否则,如果当前运 行进程的 CPU 区间比时间片要长,定时器会中断并产生操作系统中断,然后进行上下文切
    换,将进程加入到就绪队列的尾部,接着CPU 调度程序会选择就绪队列中的下一个进程。

  • 多级队列调度:每个队列有自己的调度算法

  • 多级反馈队列算法 (将就绪队列分成不同子序列 使用不同的算法)

    多级反馈队列调度算法 (multilevel feedback queue scheduling algorithm) 允 许进程在队列之间移动。主要思想是根据不同CPU 区间的特点以区分进程。如果进程使用 过多 CPU 时间,那么它会被转移到更低优先级队列。这种方案将νo 约束和交互进程留在 更高优先级队列。此外,在较低优先级队列中等待时间过长的进程会被转移到更高优先级
    队列。这种形式的老化阻止饥饿的发生。

MLFQ

-------------本文结束有空来玩-------------
坚持原创技术分享,您的支持将鼓励我继续创作!