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算法顺序,给每个进程分配一个时间片的执行时间 | 适用于分时系统 | 性能依赖于时间片大小 |
多级队列调度算法 | 将就绪队列分成多个独立队列,每个队列有自己的调度算法 | 集成多个调度算法 | \ |