720 likes | 921 Views
第 6 章 处理机调度. 本章知识点: 6.1 调度类型 6.2 调度算法 6.3 多处理机调度 6.4 实时调度 6.5 响应时间 6.6 系统举例(略). 6.1 调度类型. 处理机调度 问题就是 处理器的分配问题 ,它的 目的是使处理机在满足系统要求的响应时间、吞吐量和处理机利用率的前提下及时地运行进程。在许多系统中,调度被分成3种:长程、中程和短程调度。 由于调度决定了哪些进程将等待、哪些进程被执行,所以直接影响到系统的执行效率。从根本上讲,调度就是要使队列延迟最小,并优化系统的执行效率。.
E N D
第6章 处理机调度 本章知识点: • 6.1 调度类型 • 6.2 调度算法 • 6.3 多处理机调度 • 6.4 实时调度 • 6.5 响应时间 • 6.6 系统举例(略)
6.1 调度类型 处理机调度问题就是处理器的分配问题,它的目的是使处理机在满足系统要求的响应时间、吞吐量和处理机利用率的前提下及时地运行进程。在许多系统中,调度被分成3种:长程、中程和短程调度。 由于调度决定了哪些进程将等待、哪些进程被执行,所以直接影响到系统的执行效率。从根本上讲,调度就是要使队列延迟最小,并优化系统的执行效率。
6.1.1 长程调度 长程调度又称为作业调度或高级调度。长程调度决定哪些作业可参与竞争CPU和其他资源,即决定给哪个作业分配一台虚拟处理机,它是处理机的宏观调度。 长程调度的一般功能是:从后备作业中挑选一个或多个作业,为它(它们)分配基本的内存和外设资源并建立相应的进程。不同类型的操作系统关于长程调度的功能、调度时机以及工作形式是有差异的。
长程调度 (续) • 长程调度(程序)应该精选要调度的作业,即混有 I/O-约束的作业和 CPU-约束的作业。 • I/O-约束:作业花费在输入/出操作上的时间比花费在计算上的时间多。 • CPU-约束:作业很少产生 I/O 请求,在计算上的时间花费较多。 • 在 Unix 操作系统中没有长程调度程序,只是简单地将所有新进程放在内存中,以供短期调度程序使用。
6.1.2 中程调度 中程调度也称中级调度。中级调度决定哪些进程可参与竞争CPU,用以实现进程的活动状态与静止的挂起态之间的转换。引入中程调度的主要目的是为了提高内存的利用率和系统吞吐量。 中程调度实际上就是存储器管理中的(交)置换功能(包括普通的交换和修正的交换)。
6.1.3 短程调度 短程调度又称为进程调度或低级调度。短程调度决定哪个进程可获得物理CPU,它是处理机的终结调度,即微观调度。 短程调度的功能是: 从就绪进程队列中挑选一个进程并启动执行该进程。 短程调度是最基本的一种调度,它可以采用非抢占方式或抢占方式。
I/O 队列 就绪队列 I/O 请求 I/O 时间片用完 CPU 创建一个子进程 子进程执行 等待一个中断 中断发生 短程调度--进程的执行与队列
0 1 … n 调度程序 进程调度程序 • 为了调度的目的,操作系统必须从处于某种模式的队列中选择进程。 • 这个选择通过适当的进程调度程序来执行。 进程
三种调度的关系及调度时机 长程调度执行不频繁 (可能小于每分钟一次)。 中程调度较频繁。 短程调度执行最频繁 (每秒大于10 次),需要快速地执行。
6.2 调度算法 如何选择和设计调度算法是实现调度的关键。对调度算法进行评价的常用度量标准是: 平均周转时间 平均带权周转时间 平均等待时间。
6.2.1 短程调度标准 1.通常使用的标准 ①面向用户的标准与单个用户或进程关心的系统性能有关,如响应时间、周转时间等。 ②面向系统的标准是为了使系统高效地运行,如吞吐量、处理机的利用率等。 面向用户的标准对所有系统都很重要,但面向系统的标准在单用户系统中并不重要。
6.2.1 短程调度标准 2. 与性能相关的标准 根据所面向的对象是否与性能相关,可将其分为与性能有关的标准和与性能无关的标准。与性能有关的标准是可定量的,如响应时间和吞吐量。与性能无关的标准是定性的,如预测性。 调度标准有些是相互独立的,不能同时优化。
调度标准 • 标准: • CPU 利用率:使 CPU 尽可能地忙 • 吞吐量:单位时间内所完成的作业数 • 周转时间:从进程提交到进程完成的时间间隔 • 响应时间:从提交请求到到产生第一个响应的 时间 • 等待时间:在就绪队列中等待所花的时间
调度标准(续) • 优化问题 • 需要最小化的指标: • 周转时间,等待时间,响应时间 • 需要最大化的指标: • CPU 利用率,吞吐量
6.2.2 优先权的使用 调度可基于优先权。在很多系统中,每个进程都有一个优先权(或称为优先数),高优先权的进程比低优先权的进程优先运行。下图说明了优先权的使用。 抢占示例
6.2.2 优先权的使用 完全按优先权调度会出现的问题是,低优先权进程可能饥饿,当有高优先权的进程流持续到达时,就会出现这种情况。 饿死示例: 为解决这个问题,进程优先权可随其年龄或执行历史改变,一种解决方案是“老化”:即逐渐增加在系统中等待很长时间的进程的优先权。 1973 年关闭 MIT 的 IBM 7094、发现 1967年提交的作业还未运行!
P2 P4 P1 P3 0 8 11 17 24 优先权调度例子(假设优先数小优先权高) • 在时刻 0,以下进程按 P1,P2,P3,P4 顺序“同时”到达 进程CPU区间时间(ms)优先权(数) P1 6 3 P2 8 1 P3 7 3 P4 3 2 平均等待时间=?
6.2.3 调度策略 调度策略是指根据系统的资源分配策略所设计的资源分配算法。 1. 先来先服务(FCFS)策略 FCFS策略遵循先来者优先服务的原则,当 CPU 空闲时,CPU 被分配给位于就绪队列头的进程;当一个进程变为就绪态时,就被添加到队列尾部。它本质上是非抢占式的。它简单易行,但调度性能较差,有可能使短的、重要的或紧迫的作业及进程长期等待。FCFS策略的另一个问题是它有利于偏重CPU (CPU-约束)的进程,不利于偏重I/O (I/O-约束)的进程。
FCFS 例子 进程 CPU 区间时间(ms) P1 24 P2 3 P3 3 • 在时刻 0,以下进程按 P1,P2,P3顺序到达并被以先来先服务的规则服务,试求平均等待时间。 • 如果进程以顺序 P2,P3,P1 被服务 P1 P2 P3 平均等待时间: (0+24+27)/3 = 17 ms P2 P3 P1 平均等待时间:(0+3+6)/3 = 3 ms
6.2.3 调度策略 2. 时间片轮转(Round-Robin,RR)策略 RR策略是一种抢占式的进程调度法,是以就绪队列中的所有进程均以相等的速度向前进展为特征的。它对每个作业给予一个运行时间片,若一个作业在规定的时间片内未运行完,则挂起该作业并调度另一作业(继续)运行。当所有的作业都运行完分配的一个时间片后,第一个作业才再次得到运行的机会。
6.2.3 调度策略 时间片值的设置是RR算法的关键问题。时间片过大则退化为FCFS算法,时间片过小时则称为“处理机共享”。此片值的设置可以是固定的,也可以是可变的。 RR算法主要用于分时系统或事务处理系统,可保证对各终端用户的及时响应。但它对偏重CPU的进程和偏重I/O的进程有不同的处理结果,可以采用虚拟时间片轮转(VRR)策略来避免这个问题。新加入的特性是附加一个FCFS策略队列来收集从I/O等待中释放的进程。
P1 P2 P3 P1 P2 P1 4 8 11 15 16 20 0 RR 例子 (时间片 = 4 ms,求平均等待时间) 进程 CPU 区间时间 (ms) P1 12 P2 5 P3 3 平均等待时间=(0+4+8+7+7+1)/3=9ms RR算法的平均等待时间通常是相当长的
6.2.3 调度策略 3. 最短作业优先(Shortest Job First,SJF 或Shortest Process Next,SPN)策略 SPN策略是一种非抢占式的方式,它偏袒短者,对短作业或短进程最为有利,它导致最短的平均周转时间。但它忽略等待时间的长短,对长作业不利,特别是在抢占方式下,可能会使长作业无限延迟。对于抢占式SPN进程调度,还需要考虑是按最短原则还是按剩余最短原则抢占。理论上该方法在等待时间方面是最优的,但实际上无法确切知道下一CPU瞬时段(区间)的长度。
SJF 例子—求平均等待时间 进程CPU区间时间 P1 6 P2 8 P3 7 P4 3 P4 P1 P3 P2 9 24 3 16 平均等待时间: (0+3+9+16)/4 = 7 ms 用FCFS算法平均等待时间:10.25 ms
CPU 区间预测 (1) • 由于无法知道下一个 CPU 请求的长度(即 CPU 区间的长度),所以调度难以实现。 • 但是我们可以预测下一个 CPU 区间的长度。 • 下一个 CPU 区间通常可预测为以前 CPU 区间测量长度的指数平均。
CPU 区间预测 (2) • 设 tn为第 n个 CPU 区间的长度 • 设τn+1为下一个 CPU 区间的预测长度 • 因此、对于,0 ≤ ≤ 1,定义 τn+1 = tn +(1 -) τn 参数 控制了最近和过去历史在预测中的相对加权。如果 =0,那么 τn+1 = τn 近来历史没有影响(当前情形被认为是暂时的);如果 =1,那么 τn+1 = tn ,只有最近 CPU 区间才重要(历史被认为是陈旧的、无关的)。常见的是 =1/2,这样最近历史和过去历史同样重要。 • 这个公式定义了可以分配给下一个 CPU 区间的指数平均。
6.2.3 调度策略 4. 最短剩余时间优先(Shortest Remaining Time,SRT)策略 SRT策略是抢占式的SPN策略,它将较高的优先级给予具有最短剩余CPU瞬时段的作业。和SPN策略一样,根据执行时间来选择进程执行可能会引起长进程的饥饿,但SRT策略轮转时间性能比SPN策略好。
作业等待时间 + 要求执行时间 要求执行时间 6.2.3 调度策略 5.最高响应比优先(Highest Response Ratio Next,HRRN) 策略 HRRN策略是FCFS和SPN两种策略的折衷方案,它既优待了短作业,又不忽略先来者。它是非抢占式的。它在当前进程完成或挂起时,从就绪进程中选择具有最高响应比的进程。该算法的好处是考虑了进程的等待时间,有利于短作业。长作业的响应比随等待时间的增加而增大,最终获得处理。 响应比 =
6.2.3 调度策略 6. 多级反馈队列(Feedback,FB)策略 FB策略是指进程依赖于其条件的变化从一个队列移到另一队列,是抢占式调度算法。它综合考虑了多种因素,根据进程运行情况的反馈信息动态改变进程的优先级,按优先级别组织设置了规定CPU时间片的各就绪队列;对同一队列中的各就绪进程按FCFS或RR算法调度。 FB策略不必事先知道各种进程所需的执行时间,而且还可以满足各种类型进程的需要,是目前公认为较好的一种进程调度策略。
6.2.3 调度策略—示例 假如有4道作业,它们的提交时间及运行时间如下表所示: 采用单道运行,试问下述调度算法下,它们的调度顺序,并分别计算各调度算法下三个作业的平均周转时间 T 和平均带权周转时间 W。 (1)FCFS(先来先服务) (2)SJF(短作业优先) (3)HRRN(响应比高者优先) n n T=1/N(∑Ti),Ti=结束时刻-提交时刻; W=1/N(∑Wi), Wi= Ti /作业 i 实际执行时间 i=1 i=1
调度策略—示例(续) (1)FCFS:调度顺序为1 2 3 4 • T=1/4(120+120+96+78)=103.5分钟 • W=1/4(1+4+16+6.5)=6.875
调度策略—示例(续) (2)SJF(SPN):调度顺序为1 3 4 2 • T=1/4(120+66+48+138)=93分钟 • W=1/4(1+11+4+4.6)=5.15
调度策略—示例(续) • (3)HRRN • 作业1最先到达并运行,当作业 1 完成时(10:00),作业 2、3、4都到达,则计算它们的响应比: 作业2响应比=(90+30)/30=4 作业3响应比=(60+6)/6=11 作业4响应比=(30+12)/12=3.5 由于作业3的响应比最高,所以作业3先运行。 • 当作业3完成时(10:06),计算作业2、4的响应比: 作业2响应比=(96+30)/30=4.2 作业4响应比=(36+12)/12=4 由于作业2的响应比大于作业4,所以接着作业2运行;最后由作业4运行。
调度策略—示例(续) (3)HRRN:调度顺序为1 3 2 4 • T=1/4(120+66+126+78)=97.5分钟 • W=1/4(1+11+4.2+6.5)=5.675
6.2.4 性能比较 这里主要利用基本的排队公式,并假设进程到达率满足泊松分布,服务时间满足指数分布。 首先,在服务时间相互独立时,选择下一个服务对象应满足下面的关系: 其中,tq为轮转时间;ts为平均服务时间;ρ=处理机利用率。
6.2.4 性能比较 基于优先权的调度,其中每个进程被赋予了一个与估计运行时间无关的优先权,那么,它和FCFS策略有相同的平均轮转时间和平均标准化轮转时间,而且抢占或非抢占对这些平均值无影响。除了RR和FCFS策略外,其他的调度策略在选择时需要估计运行时间,只能通过与FCFS策略比较,了解基于服务时间的调度算法的性能。
6.2.5 模拟模型 模拟模型是在特定假设下,运用于特定的进程集的,有一定局限性。尽管如此,还是可以从中获得一些有用的结论。 通过模拟实验可以发现FCFS策略性能很差 ,RR策略对所有进程都比较公平,SPN策略性能比RR策略好,SRT策略性能比SPN策略优,FCFS策略较适合长进程,SPN策略适合短进程,HRRN策略执行效率介于FCFS策略和SPN策略之间,多级反馈队列调度对短进程较好。
6.2.6 公平分享调度策略 公平分享调度(Fair-Share Scheduling,FSS)策略隐含了调度的基本原理。每个用户被赋予某种权,它规定了该用户所占全部资源的份额,并且所有用户共享一个处理机。这种策略采用线性工作方式。FSS的目的是监视用户使用资源的情况,使超过其份额的用户获得较少的资源,而少于其份额的用户获得更多的资源。
6.3 多处理机调度 多处理机一般是用来提高多道程序的性能与可靠性的。多处理机可分为:松耦合多处理机,特定功能多处理机,紧耦合多处理机。本节主要讨论紧耦合多处理机的调度。紧耦合多处理机系统的操作系统除了单处理器操作系统的功能以外,还应提供处理器的负载平衡、处理其发生故障后的结构重组等。
粒度大小 描 述 同步间隔(指令条数) 细 单指令流的固有并行性 <20 中 单个应用中的并行处理或多任务处理 20~200 粗 多道程序环境中并发进程的多进程处理 200~2000 超粗 通过网络节点的分布式处理以形成一个单一计算环境 2000~1M 独立 大量无关进程 >2000 6.3.1 粒度 描述多处理机的一个好方法是考虑系统中进程的同步粒度,或同步的频率。可以把粒度分成5个层次,如下表所列
6.3.2 设计要点 1.分配进程给处理机 • 静态分配和动态分配:静态分配有可能使某个处理机长期空闲,其等待队列空,而另一个处理机却有一个很长的等待队列。动态分配指一个进程在其整个生命期内,在不同时间可以被不同的处理机执行。在一个紧耦合共享存储器系统中,所有进程的现场信息都可以被所有处理机使用,因此调度某个进程的耗费应独立于调度它的处理机。动态分配优点是消除了处理机忙闲不均的现象,但调度的开销可能较大。
6.3.2 设计要点 • 主/从结构和对称结构:在主/从结构中,OS的主要内核功能总是运行在一个特定的(主)处理机上,其他从处理机只执行用户程序。这种结构提供了一种简单的方法来管理不同的内核进程和其他进程。但是主处理机会成为性能瓶颈,发生故障会使整个系统崩溃。在对称结构中,OS可以在任何处理机上运行,并且每个处理机都从可用进程池中选择进程,进行自身的调度,这种结构使操作系统变得复杂,但它可提供一系列而不是一个处理机执行内核进程。
6.3.2 设计要点 2. 在单处理机上使用多道程序设计 在一个处理粗粒度或独立同步粒度的传统多处理机中,要想获得更高的性能,则每个单独的处理机都应该能在一些进程中选择。
6.3.2 设计要点 3. 进程的实际分派 关于多处理机调度的最后一个设计要点是选择哪一个进程运行,从多道程序单处理机系统中可看出,使用优先权或执行历史的调度策略比简单的FCFS策略的性能要好得多。在多处理机中,这些调度策略并不复杂。在传统的进程调度中,一个较简单的方法可以有较高的效率,但在线程调度中出现了一些新特点,这些特点比优先权或执行历史更重要。
6.3.3 调度策略 1. 线程调度 使用了线程这个概念之后,执行的概念就与进程分开了。一个应用程序可用一系列线程的形式完成,它们之间相互配合,并在相同的地址空间同时运行。在多处理机上调度线程和处理机分配时,较多使用以下四种方法:负载共享、群调度 、专用处理机分配 、动态调度 。
6.3.3 调度策略 2. 负载共享 线程并不分配给某一特定的处理机。系统中有一个全局就绪队列,每个处理机空闲时就从该队列中选择一个线程。这里的负载共享要与负载平衡相区别。负载共享是最简单的方法,它直接继承了单处理机系统的许多好处。
6.3.3 调度策略 负载共享的优点:对处理机平均分配负载;不需要集中调度者;对就绪队列可按单处理机所采用的各种方式加以组织,其调度算法也可沿用单处理机所用的算法。 负载共享的缺点:集中队列占据了部分内存,对它的访问要求互斥。因此,在许多处理机同时都要工作时,就会成为瓶颈; 被抢占进程不可能再在同一台处理机上运行;如果所有进程都被放入一个公共线程池,那么同一程序的所有线程不可能同时获得处理机。
6.3.3 调度策略 3. 群调度 相关联的线程集被一个处理机集一对一调用。群调度用于组成一个进程的多个线程的同时调度。群调度对于中粒度和细粒度的并行应用是必要的。它提高了紧耦合进程并发执行的效率,减少了调度耗费 。群调度的使用产生了对处理机分配的需求。研究表明,群调度策略的某些形式在总体上要比负载共享要好。
6.3.3 调度策略 4. 专用处理机分配 与自我调度相对应,其调度是隐式的,在程序执行期间,每个程序都被分配与其线程数相等的处理机,程序结束时,将所有的处理机归还,以便其他程序使用。专用处理机分配和群调度在调度时都涉及到处理机分配。多处理机系统上的处理机分配类似于单处理机系统上的请求调页式内存分配。群调度和专用处理机分配可以避免处理机抖动和处理机碎片等这些问题。
6.3.3 调度策略 5. 动态调度 程序的线程数可随程序的的执行而改变。 操作系统负责作业的处理机分配,每个作业使用处理机,将其可运行的任务集映射成线程,由应用决定运行哪个子集。这种方法中,操作系统的调度仅限于处理机分配。这种方法并不适合所有的应用。对适合于动态调度的任务来说,这种方法比群调度和专用处理机分配要好。