操作系统精髓与设计原理,单处理器调度

概述

        在多道程序设计系统里,内存有多个进程,且或者在处理器上运行,或者在等待某种事件的发生(如I/O完成)。当处理器(或组)通过执行某个进程而保持忙状态,则其他的进程处于等待状态。

多道程序设计的关键是调度,操作系统根据进程的执行有三种类型的处理器调度方案和一种I/O调度方案:

  • 长调度方案:确定何时允许一个新进程进入系统

  • 中调度方案:负责内存的交换功能,确定何时将一个程序的部分或全部取进内存。

  • 短调度方案:确定哪个就绪进程下一次被处理器执行。

  • I/O调度方案:决定哪一个进程挂起的I/O请求将被可用的I/O设备处理

这里对处理器调度方案的进行总结,且短调度方案占主要部分,I/O调度方案将总结于下一次有关I/O问题的总结里。

考虑到执行的频繁程度,长调度程序执行的频率相对较低(仅仅粗略地决定是否接受新进程以及接受哪一个);中程度调度方案执行的略为频繁(决定进程的交换);短调度程序(分派程序)只执行的最频繁(精确地决定下一次执行哪一个进程)。长调度与中调度方案主要由系统并发度相关性能驱动,之后会给出三种调度方案的关联。由于多处理器对的使用有额外的复杂度,这里参考单处理器系统的调度情况,以更清楚地发现调度算法的区别。

调度方案的关联图

进程状态和调度转换图

调度方案的嵌套图

用于调度的队列图

长程调度

由于决定了哪个程序可以进入系统里处理,因此控制了系统并发度。

长程调度程序运行时创建相应的进程,此过程涉及两个决策:决定什么时候操作系统能接受一个或多个进程、决定接受哪个作业或哪些作业并转为进程。

对于决定什么时候操作系统接受一个或多个进程,通常由系统的并发度来驱动。进程越多则每个进程执行事件所占百分比越小(更多的进程竞争同样数量的处理器时间)。为了给当前的进程集提供适合的处理器资源,长程调度可能限制系统并发度,当一个作业终止或处理器的空闲时间片超过一定阈值后,会限制系统并发度或启动长程调度程序。

对于允许哪个作业进入的决策可以基于简单的先来先服务原则,或者基于管理系统性能的工具(包括优先级、期待执行时间、I/O需求)。

对于分时系统的交互程序,用户试图连接到系统的动作可能产生一个进程创建的请求,分时下的用户不是仅仅排队等待,直到系统接收他们。相反操作系统会接收所有的授权用户,直到系统饱和为止。此时用户再次连接会得到操作系统已经饱和并要求用户重试的消息。

中程调度

是交换功能的一部分,典型情况下换入取决于管理系统并发度需求,在不使用虚拟内存的系统里,系统管理也是一个问题。因此换入决定将考虑换出进程的存储需求。

短程调度

主要目标是按照优化系统的若干方面行为的方式来分配处理器时间,当可能导致当前进程阻塞或可能抢占当前运行进程的事件发生时,调用短程调度程序,事件包括时钟中断、I/O中断、操作系统调用、信号等。

短程调度的设计准则

设计时要对可能被评估的各种调度策略建立一系列规则。该准则按两种维度分类:一个维度是面向用户或面向系统,另一个维度是与性能直接相关或非直接相关。

面向用户与面向系统的准则

面向用户的准则:与的那个用户或进程感知到的系统行为相关,如交互式系统的响应时间,此时间数量对用户是可见的。对于响应时间可以定义一个阈值,则调度机制的目标是使平均响应时间小于等于此阈值的用户数量最大。

面向系统的准则:重点是处理器的使用的效果和效率,如吞吐量,即进程完成的速度。该准则是系统管理员所关注的。

面向用户的准则在所有系统中都非常重要,而面向系统的原则在单用户系统的重要性较低。在单用户系统里,只要系统对用户应用程序的响应时间可以接受,则实现处理器的高利用率或高吞吐量可能并不重要。

与性能直接或非直接相关

与性能直接相关的准则是定量且通常易于度量的,如响应时间和吞吐量。

与性能非直接相关的准则是定性的且不易于测量与分析,如可预测性,即服务随时间改变时表现出一贯相同的特性,且与系统执行的其他工作无关(可以通过计算负载函数的变化量来度量,但不像吞吐率或相应时间关于工作量的函数一样直接)。

操作系统精髓与设计原理,单处理器调度