调度分类

一般来说,作业从进入系统到最后完成,可能要经历三级调度:高级调度、中级调度和低级调度。
这是按调度层次进行分类的。
image.png

1)高级调度

又称作业调度或长期调度。其主要功能是根据一定的算法,从输入的一批作业中选出若干作业,分配必要的资源,如内存、外设等,为它建立相应的用户作业进程和为其服务的系统进程(如输入/输出进程),最后把它们的程序和数据调入内存,等待进程调度程序对其执行调度,并在作业完成后做善后处理工作。

2)中级调度

又称中期调度。为使内存中同时荐放的进程数自不致太多,有时需要把某些进程从内存中移到外存上,以减少多道程序的数目,为此设立了中级调度。
特别在采用虚拟存储技术的系统或分时系统中,往往增加中级调度这一级。
所以中级调度的功能是在内存使用情况紧张时,将一些暂时不能运行的进程从内存对换到外存上等待;以后,当内存有足够的空闲空间时,再将合适的进程重新换入内存,等待进程调度。
引入中级调度的主要目的是为了提高内存的利用率和系统吞吐量。它实际上就是存储管理中的对换功能,这部分内容将在第5章中介绍。

(3)低级调度

又称进程调度或短期调度。其主要功能是根据一定的算法,将 CPU分派给就绪队列中的一个进程。执行低级调度功能的程序称作进程调度程序,由它实现CPU 在进程间的切换。
讲程调度的运行频率很高,在分时系统中往往几十毫秒就要运行一次。进程调度是操作系统中最基本的一种调度。在一般类型的操作系统中都必须有进程调度,而且它的策略的优劣直接影响整个系统的性能。

作业状态

在批处理系统中,用户的计算任务是按作业方式进行管理的。作业从提交给系统,直到它完成任务后退出系统前,在整个活动过程中它会处于不同的状态。通常,作业状态分为提交、后备、执行和完成4种。

①提交状态

用户向系统提交一个作业时,该作业所处的状况。如将一套作业卡片交给机房管理员,由管理员将它们放到读卡机上读入;或者用户通过键盘向机器输入其作业。

②后备状态

用户作业经输入设备(如读卡机)送入输入井(磁盘)中存放,等待进入内有时所处的状况。此时,该作业的数据已经转换成内部的机器可读的形式,并且作业请求资源等信息也交给了操作系统。

③执行状态

作业分配到所需的资源,被调入内存,且在处理机(CPU)上执行相应的程序时所处的状况。此时,该作业真正处于活动状况。

④完成状态

作业完成计算任务,结果由打印机输出,最后由系统回收分配给它的全部资源,准备退出系统时的作业状况。

进程调度的功能

(1)保存现场

当前运行的进程调用进程调度程序时,表示该进程要求放弃CPU (因时间片用完或等待IO等原因)。这时,进程调度程序把它的现场信息(如程序计数器及通用寄存器的内容等〕保留在该进程PCB的现场信息区中。

(2)挑选进程

根据一定的调度算法(如优先级算法),从就绪队列中选出一个进程,把它的状态改为运行状态,准备把 CPU分配给它。

(3)恢复现场

为选中的进程恢复现场信息,把CPU的控制权交给该进程,使它接着上次间断的地方继续运行。

进程调度的时机

在系统中发生的某些事件会导致当前进程挂起,或者为另外的进程提供抢占在 CPU上运行的机会。每当出现此类事件时就要执行进程调度。具体地说,一般在以下事件发生后要执行进程调度;

①创建进程

当创建新讲程时,要决定运行父讲程还是子进程。

②进程终止

当一个进程终止时,必须进行调度。因为终止的进程再也不会运行(即不再存在),所以必须从一组就绪进程中选择一个进程投入运行。
如果没有就绪进程,通常运行系统提供空转进程。

③等待事件

运行进程由于等待I/O、信号量或其他某个原因而不得不放弃CPU,就必须选择另一个进程运行。

④中断发生

当1/O设备完成其工作后会发出IO中断,原先等待该IO的那个进程就从阻塞状态变为就绪状态。
进程调度要决定:是马上让这个新就绪的进程投入运行,还是让正运行的进程继续运行,或者让另外的进程运行。

⑤运行到时

在分时系统中,当前进程用完规定的时间片,时钟中断使该进程让出 CPU,调度程序选择另一个就绪进程运行。

进程调度的基本方式

抢占方式 & 非抢占方式

1.非抢占方式(Nonpreemptive)

在这种调度方式下,一旦一个进程被选中运行,它就一直运行下去,直至它完成工作、自愿释放CPU,或者因等待某一个事件而被阻塞时为止,才把 CPU出让给其他进程。即得到CPU的进程不管要运行多长时间,都一直运行下去,决不会因时钟中断等原因而被迫让出 CPU。

2.抢占方式(Preemptive)

与非抢占方式相反,抢占方式允许调度程序根据某种策略中止当前运行进程的执行,将其移入就绪队列,并选择另一个进程投入运行。
出现抢占调度的情况有:新进程到达,出现中断且将阻塞进程转变为就绪状态,以及用完规定的时间片等。
抢占式调度比非抢占式调度的开销大,其好处是可以为全体进程提供更好的服务,防止一个进程长期占用处理机。
此外,通过采用有效的进程切换机制(尽可能获得硬件支持)和使用大容量内存来存放更多的程序,可以相对降低抢占式调度的代价

调度性能

CPU利用率

CPU的利用率可从0%到100%。
在实际的系统中,一般 CPU的利用率从40%(轻负载系统)至90%(重负载系统)。
通常,在一定的I/O等待时间的百分比之下,运行程序道数越多,CPU空闲时间的百分比越低。

吞吐量

单位时间内CPU 完成作业的数量称作吞吐量
对长作业来说,吞吐量可能是每小时一个作业;而对于短作业处理,它可达到每秒钟10个作业。

周转时间

从一个特定作业的观点出发,最重要的准则就是完成这个作业要花费多长时间。从作业提交作业完成的时间间隔称作周转时间
周转时间是用于作业等待进入内存、进程在就绪队列中等待、进程在 CPU上执行和完成I/O操作所花费时间的总和。
image.png
利用平均周转时间可以衡量不同调度算法对相同作业流的调度性能。
作业周转时间没有区分作业实际运行时间长短的特性,因为长作业不可能具有比运行时间还短的周转时间。为了合理地反映长短作业的差别,人们定义了另一个衡量标准——带权周转时间W,即·image.png(R为实际运行时间)
image.png

就绪等待时间

CPU调度算法并不真正影响作业执行或I/O操作的时间数量。
各种 CPU调度算法仅影响作业(进程)在就绪队列中所花费的时间数量。
因此,可简单地考虑每个作业在就绪队列中的等待时间。

响应时间

在交互系统中,周转时间不可能是最好的评价准则。往往一个进程很早就产生某些输出,当前面的结果在终端上输出时,它可以继续计算新的结果。另一个评价准则是从提交第1个请求到108/325 响应所用的时间,即响应时间。它是刚开始响应的时间,而不是用于输出响应的时间。周转时间通常受到输出设备速度的限制。

调度准则

在实际系统中,往往采取“统筹兼顾”的办法,既保证主要目标的实现,又不使相关指标变得太差。下面列举一些在确定调度策略时应考虑的主要因素。
①设计目标。所用算法应保证实现系统的设计目标,这是主要矛盾。目标不同,系统设计的要求自然不同。对批处理系统应尽量提高各种资源的利用率和增加系统的平均吞吐量(即在单位时间内得到服务的平均作业数);分时系统应保证对用户的均衡响应时间;实时系统必须实现对事件的及时可靠的处理;网络系统应使用户和程序方便、有效地利用网络中的分布式资源。
②公平性。对所有作业或进程应公平对待,使每个进程公平地共享CPU.
③均衡性。均衡使用资源,尽量使系统中各种资源都同时得到利用,提高资源的利用率。
④统筹兼顾。兼顾响应时间和资源利用率。各用户由键盘输入命令后,应在很短的时间内得到响应。这一点对分时系统尤为重要。
⑤优先级。基于相对优先级,但应避免无限期地推迟运行某些进程。随着等待时间的延长,低优先级进程的优先级应得到提升。
开销。系统开销不应太大。
应该指出,在实际系统中,往往采用较简单的算法,以避免复杂算法所带来的额外负担。