不同的 CPU 调度算法具有不同属性,选择一个特定算法会对某些进程更为有利。为了选择算法以便用于特定情景,我们必须考虑各个算法的属性。
为了比较 CPU 调度算法,可以采用许多比较准则。选择哪些特征来比较,对于确定哪种算法是最好的有本质上的区别。这些准则包括:
- CPU 使用率:应使 CPU 尽可能地忙碌。从概念上讲,CPU 使用率从 0% 到 100%。对于一个实际系统,它的范围应从 40%(轻负荷系统)到 90%(重负荷系统)。
- 吞吐量:如果 CPU 忙于执行进程,那么工作就在完成。一种测量工作的方法称为吞吐量,它是在一个时间单元内进程完成的数量。对于长进程,吞吐量可能为每小时一个进程;对于短进程,吞吐量可能为每秒十个进程。
- 周转时间:从一个特定进程的角度来看,一个重要准则是运行这个进程需要多长时间。从进程提交到进程完成的时间段称为周转时间。周转时间为所有时间段之和,包括等待进入内存、在就绪队列中等待、在 CPU 上执行和 I/O 执行。
- 等待时间:CPU 调度算法并不影响进程运行和执行 I/O 的时间,它只影响进程在就绪队列中因等待所需的时间。等待时间为在就绪队列中等待所花时间之和。
- 响应时间:对于交互系统,周转时间不是最佳准则。通常,进程可以相当早地产生输出,并且继续计算新的结果同时输出以前的结果给用户。因此,另一时间是从提交请求到产生第一响应的时间。这种时间称为响应时间,是开始响应所需的时间,而非输出响应所需的时间。周转时间通常受输出设备速度的限制。
最大化 CPU 使用率和吞吐量,并且最小化周转时间、等待时间和响应时间,这是可取的。在大多数情况下,优化的是平均值。然而,在有些情况下,优化的是最小值或最大值,而不是平均值。例如,为了保证所有用户都能得到好的服务,可能要使最大响应时间最小。
对于交互系统(如桌面操作系统),研究人员曾经建议最小化响应时间的方差比最小化平均响应时间更为重要。具有合理的、可预见的响应时间的系统比平均值更小但变化大的系统更为可取。不过,在 CPU 调度算法如何使得方差最小化的方面,所做的工作并不多。