您的位置:首页 > 其它

操作系统精髓与设计原理学习笔记八:单处理器调度

2014-11-15 19:13 525 查看
在多道程序设计系统中,内存中有多个进程。每个进程或者正在处理器上运行,或者正在等待某些事件的发生,比如IO完成。处理器通过执行某个进程而保持忙状态,而此时其他进程处于等待状态。

一、处理器调度的类型

处理器调度的目标是以满足系统目标(如响应时间、吞吐率、处理器小雷)的方式,把进程分配到一个或多个处理器中执行。在许多系统中,这个调度活动分成三个独立功能:长程、中程和短程调度。他们的名字表明在执行这些功能时的相对时间比例。

创建新进程时,执行长程调度,它决定是否把进程添加到当前活跃的进程集合中。

中程调度是交换功能的一部分,它决定是否把进程加到那些至少部分在内存中并且可以被执行的进程集合中。

短程调度真正决定下一次执行哪一个就绪进程。

从根本上说,调度属于队列管理方面的问题,用来在排队环境中减少延迟和优化性能。

1 长程调度

长程调度决定哪一个程序可以进入系统中处理,因此,它控制着系统的并发度。一旦允许进入,一个作业或用户程序就成为一个进程,并被添加到供短程调度程序使用的队列中等待调度。在某些系统中,一个新创建的进程开始处于被换出状态,在这种情况下,它被添加到供中程调度程序使用的队列中等待调度。

在批处理系统或者操作系统的批处理部分中,新提交的作业被发送到磁盘,并保存在一个批处理队列中。在长程调度程序运行的时候,从队列中创建相应的进程。这里涉及两个决策:调度程序必须决定什么时候操作系统能够接纳一个进程或者多个进程;同时,调度程序必须决定接受哪个作业或哪些作业,并将其转变成进程。

2 中程调度

中程调度时交换功能的一部分。在典型情况下,换入决定取决于管理系统并发度的需求。

3 短程调度

考虑执行的频繁程度,长程调度程序执行的频率相对较低,并且仅仅是粗略地决定是否接受新进程及接受哪一个。为进行交换决定,中程调度程序执行得略微频繁一些。

短程调度程序,也称为分派(dispatcher)程序,执行的最频繁,并且精确地决定下一次执行哪一个进程。

二、调度算法

1 短程调度准则

短程调度的主要目标是按照优化系统一个或多个方面行为的方式来分配处理器时间。通常使用的准则可以按两个维度来分类:面向用户的准则与单个用户或进程感知到的系统行为相关;面向系统的准则的重点是处理器使用效果和效率(比如吞吐量,也就是进程的完成的速度)。

设计一个调度策略涉及在互相竞争的各种要求之间进行折中,根据系统的本质和使用情况,给各种要求设定相应的权值。

2 优先级的使用

在许多系统中,每个进程都被指定一个优先级,调度程序总是有些选择具有较高优先级的进程。

3 选择调度策略

选择函数确定在就绪进程中选择哪一个进程在下一次执行。

决策模式说明选择函数在被执行的瞬间的处理方式,通常可分为以下两类:

非抢占。在这种情况下,一旦进程出于运行状态,它就不断执行直到终止,或者因为等待IO,或者因为请求某些操作系统服务,而阻塞自己。

抢占。当前正中运行的进程可能被操作系统中断,并转移到就绪态。关于抢占的决策可能是在一个新进程到达时,或者在一个中断发生后,把一个被阻塞的进程职位就绪态时,或者出现基于周期性的时间中断时。

与非抢占策略相比,抢占策略可能会导致较大的开销,但是可能会对所有进程提供较好的服务,因为它们避免了任何一个进程独占处理器太长时间。此外,通过使用有效的进程切换机制,以及提供较大的内存,使得大部分程序都在内存中,可使抢占的代价相对比较低。

周转时间:就是驻留时间,或者这一项在系统中花费的总时间。

归一化周转时间:周转时间与服务时间的比率,该值表示一个进程的相对延迟。

1)先来先服务(FCFS):当美国进程就绪后,它就入就绪队列。当前正在运行的进程停止执行时,选择在就绪队列中存在时间最长的进程运行。

2)轮转:一种简单的方法是采用使用基于时钟的抢占策略,在这类方法中,最简单的是轮转算法。以一个周期性间隔产生时钟中断,当中断发送时,当前正在运行的进程被置于就绪队列中,然后基于FCFS策略选择下一个就绪作业运行。这种技术也称为时间片,因为每个进程在被抢占前都给定一片时间。

3)最短进程优先:这是一个非抢占的策略,其原则是下一次选择预计处理时间最短的进程。因此,短进程将会越过长进程,跳到队列头。

4)最短剩余时间:调度程序总是选择预期剩余时间最短的进程。当一个新进程加入就绪队列时,它可能比当前运行的进程具有更短的剩余时间,因此,只要新进程就绪,调度程序就可能抢占当前正在运行的进程。

5)最高响应比优先。响应比=(等待处理器的时间+预计的服务时间)/预计的服务时间

6)反馈法:建立一组调度队列,基于每个进程的执行历史和其他一些准则,把他们分配到各个队列中。

4 公平共享调度

如果当用户的应用程序或作业可以组成多个进程(或线程),就会出现传统的调度程序不认识的进程集合结构。从用户的角度看,他所关心的不是某个特定的进程如何执行,而是构成应用程序的一组进程如何执行。因此,基于进程组的调度策略是非常具有吸引力的,该方法通常称为公平共享调度。

术语“公平共享”表明了这类调度程序的基本原则。每个用户被指定了某种类型的权值,该权值定义了该用户对系统资源的共享,而且是作为在所有使用的资源中所占的比例来体现的。

三、传统的UNIX调度

传统的UNIX调度程序采用了多级反馈,而在每个优先级队列中采用了轮转的方法。该系统使用1秒抢占方式,也就是说,如果一个正在运行的进程在1秒内未被阻塞或者完成,它将被抢占。优先级基于进程类型和执行历史。

四 、小结

操作系统根据进程的执行对三种类型的调度方案作出选择。长程调度决定何时允许一个新进程进入系统。中程调度是交换功能的一部分,它决定何时把一个程序的部分或全部取进内存,使得该程序能够被执行。短程调度决定哪一个就绪进程下一次被处理器执行。本章集中讨论与短程调度相关的问题。

在设计短程调度程序时使用了各种各样的准则。一些准则与单个用户察觉到的系统行为有关(面向用户),而其他准则查看系统在满足所有用户的需求时的总效率(面向系统)。一些准则与性能的定量度量有关,另一些在本质上是定性的。从用户角度看,相应时间通常是系统最重要的一个特性;从系统的角度看,吞吐量处理器利用率是最重要的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: