OS

OS 5处理器调度

Posted by lsq on November 29, 2018

1 处理器调度概念

CPU调度是多道程序操作系统的基础,通过在进程之间切换CPU,操作系统可以提高计算机的吞吐率。CPU的成功调度依赖于进程的如下属性:进程执行由CPU执行和I/O等待周期组成,进程在这两个状态之间切换。CPU在两个状态区间的频率如下图所示,通常为指数或超指数形式,具有大量短CPU区间和少量长CPU区间。

CPU调度决策可在如下4中情况下发生:

  • 当一个程程从运行状态切换到等待状态
  • 当一个进程从运行状态切换到就绪状态
  • 当一个进程从等待状态切换到就绪状态
  • 当一个进程终止时

当调度只能发生在第1和第4两种情况下时,称调度方案是非抢占的(nonpreemptive);否则,称调度方案是抢占的(preemptive)。抢占调度对访问共享数据是有代价的,对操作系统的内核设计也有影响。与CPU调度功能有关的另一个部分是分派程序,这是一个模块,用来将CPU的控制权交给由短期调度程序选择的进程,其功能包括:

  • 切换上下文
  • 切换到用户模式
  • 跳转到用户程序的合适位置,以重新启动程序。

2 调度准则

不同的CPU调度算法有不同属性,可能导致对某些进程更有利。问了比较CPU调度算法,分析员提出了许多准则,如下:

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

3 调度算法

调度算法 思路 优点 缺点
先来先服务算法 依据进程进入就绪状态的先后顺序排列 实现简单 平均等待时间较大,I/O资源和CPU资源利用率较低
段进程优先算法 选择就绪队列中执行时间最短的进程 平均周转时间最优 可能导致饥饿
最高相应比优先算法 选择就绪队列中相应比最高的进程 关注等待时间,防止无限期等待(老化技术) 不可抢占
轮转法 按FCFS算法顺序,给每个进程分配一个时间片的执行时间 适用于分时系统 性能依赖于时间片大小
多级队列调度算法 将就绪队列分成多个独立队列,每个队列有自己的调度算法 集成多个调度算法 \

Reference

操作系统概念
操作系统-清华大学
Operation system: three easy piece