处理机调度 Q&A

1. 高级调度与低级调度的主要任务是什么?为什么要引入中级调度?

  1. 高级调度又称为作业调度。它是批处理系统中使用的一种调度。其主要任务是按照某种算法从外存的后备队列上选择一个或多个作业调入内存,并为其创建进程、分配必要的资源,然后再将所创建的进程控制块插入就绪队列中。

  2. 低级调度又称进程调度。它是距离硬件最近的一级调度。其主要任务是按照某种算法从就绪队列上选择一个(或多个)进程,使其获得CPU。

  3. 引入中级调度的目的是为了提高内存利用率系统吞吐量。其功能是,让那些暂时不能运行的进程不再占用宝贵的内存资源,而是调其到外存上等候。此时的进程状态为挂起状态。当这些进程重新具备运行条件且内存空闲时,由中级调度选择一部分挂起状态的进程调入内存并将其状态变为就绪状态。

2. 处理机调度算法的共同目标是什么?批处理系统的调度目标又是什么?

处理机调度算法的共同目标:资源利用率,公平性,平衡性,策略强制执行

批处理系统的共同目标:平均周转时间短,系统吞吐量高,处理机利用率高

3. 何谓作业、作业步和作业流?

作业包含通常的程序和数据,还配有作业说明书。系统根据该说明书对程序的运行进行控制。批处理系统中是以作业为基本单位从外存调入内存。

作业步是指每个作业运行期间都必须经过若干个相对独立相互关联的顺序加工的步骤。

作业流是指若干个作业进入系统后依次存放在外存上形成的输入作业流;在操作系统的控制下,逐个作业进程处理,于是形成了处理作业流。

4. 在什么情况下需要使用作业控制块 JCB,其中包含了哪些内容?

为了调度和管理作业,批处理系统中,为每个作业配置了一个JCB,它是作业存在的标志。

JCB包含的内容:作业标识,用户名称,用户账号,作业类型,作业状态,调度信息,资源需求,资源使用情况等。

5. 在作业调度中应如何确定接纳多少个作业和接纳哪些作业?

作业调度每次接纳进入内存的作业数,取决于多道程序度。应将哪些作业从外存调入内存,取决于采用的调度算法。 最简单的是先来服务调度算法, 较常用的是短作业优先调度算法和基于作业优先级的调度算法。

6. 为什么要引入高响应比优先调度算法?它有何优点?

因为“先来先服务”算法忽略了程序运行时间,“短作业”优先调度又忽略了程序又忽略了程序的等待时间。

高响应比优先算法将这两个因素结合,同时使用“等待时间”和“运行时间”计算程序优先级,让优先级高的程序先运行。

响应比 =( 等待时间+要求服务时间)/ 要求服务时间

7. 试说明低级调度的主要功能

  1. 保存处理机现场信息

  2. 按某种算法选取进程

  3. 把处理机分配给进程

8. 在抢占调度方式中,抢占的原则是什么?

为了防止一个长进程长时间占用处理机,以确保处理机能为所有进程尽可能的提供公平的服务,抢占的原则是:

  1. 优先权原则:允许优先级高的进程抢优先级低进程的
  2. 短进程优先:新到的短时间进程,可以抢占当前长进程的处理机。
  3. 时间片原则:按照时间片来分配时间来,时间结束就要停止该进程的执行,重新等待时间片分配

9. 在选择调度方式和调度算法时,应遵循的准则是什么?

  1. 面向用户准则:对于用户的紧迫性作业,系统能够及时地处理,不至于运行延误;批处理系统追求作业的周转时间短;分时系统追求作业的响应时间快;实时系统中作业的截止时间要有保证。

  2. 面向系统准则:系统的吞吐量要高,处理机的利用率要高,各类系统资源能够得到平衡利用。

10. 在批处理系统、分时系统和实时系统中,各采用哪几个进程(作业)调度算法?

  1. 批处理系统中的作业调度算法有:先来先服务算法(FCFS)、短作业优先算法(SJF)、优先级调度算法(HPF)和高响应比优先算法(RF)。批处理系统的进程调度算法有:先进先出算法(FIFO)、短进程优先算法(SPF)、优先级调度算法(HPF)和高响应比优先算法(RF)。

  2. 分时系统中只设有进程调度(不设作业调度),其进程调度算法只有轮转法(RR)一种。

  3. 实时系统中只设有进程(不设作业调度),其进程调度算法调度有:轮转法、优先级调度算法。前者适用于时间要求不严格的实时系统;后者用于时间要求严格的实时系统。后者又可细分为:非抢占式优先级调度、抢占式优先级调度、基于时钟中断的抢占式优先级调度。注意,一个纯粹的实时系统是针对特定应用领域设计的专用系统。作业提交的数量不会超过系统规定的多道程序的道数,因而可全部进入内存。若将实时系统与批处理系统结合的话,就可以让作业量超过多道程序道数,使优先级低的作业呆在外存的后备队列上。

11. 何谓静态和动态优先级?确定静态优先级的依据是什么?

静态优先级:在创建进程时确定的,且程序的整个运行期间不变。

动态优先级:在程序运行期间可根据进程推进或随其等待时间的增加而改变。

12. 试比较FCFS和SJF两种进程调度算法

FCFS(First-come first-served)先来先服务调度算法

  • 核心思想:FCFS算法是指进程调度时是从就绪的进程队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行的一种调度算法。

  • 作用对象:既可用于作业调度,又可以用于进程调度。

  • 缺点:不利于短作业

SJF(Short Job First)短作业优先调度算法

  • 核心思想:SJF算法是指以作业的长短来计算优先级,作业越短,其优先级越高,越优先将他们调入内存运行。

  • 作用对象:该算法同FCFS算法一样,既可用于作业调度,又可以用于进程调度。

  • 缺点:必须预知作业的运行时间; 对长作业非常不利; 人机无法交互; 无法及时处理紧迫的作业;

FCFS算法和SJF算法的比较

  • 相同点
    性质相同:都是作为一种调度算法

作用对象相同:都可以用于作业调度和进程调度

-不同点

算法思想不同,FCFS算法是指进程调度时是从就绪的进程队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行的一种调度算法;SJF算法是指以作业的长短来计算优先级,作业越短,其优先级越高,越优先将他们调入内存运行。

  • 优缺点相对

FCFS有利于长作业,不利于短作业

SJF有利于短作业,不利于长作业

13. 在时间片轮转法中,应如何确定时间片的大小?

时间片应略大于一次典型的交互需要的时间。一般应考虑三个因素:系统对相应时间的要求、就绪队列中进程的数目和系统的处理能力。

14. 通过一个例子来说明通常的优先级调度算法不能适用于实时系统?

实时系统的调度算法很多,主要是基于任务的开始截止时间和任务紧急/松弛程度的任务优先级调度算法,通常的优先级调度算法不能满足实时系统的调度实时性要求而不适用。

15. 为什么说多级反馈队列调度算法能较好地满足各方面用户的需要?

终端型用户:由于终端型用户提交的作业多属于交互型作业,通常较小,系统只要能使这些作业在第一队列规定的时间片内完成,便可使终端型用户感到满意

短批处理作业用户:对于这类作业,如果可在第一队列中执行完成,便获得与终端型作业一样的响应时间。对于稍长的短作业,也只需在第二和第三队列各执行一时间片完成,其周转时间仍然较短。

长批处理作业用户:对于长作业,它将依次在第1,2,……,n个队列中运行,然后再按轮转方式运行,用户不必担心其作业长期得不到处理。

16. 为什么说传统的几种调度算法都不能算是公平调度算法?

以上介绍的几种调度算法所保证的只是优先运行,如优先级算法是优先级最高的作业优先运行,但并不保证作业占用了多少处理机时间。另外也未考虑到调度的公平性。

17. 保证调度算法是如何做到调度的公平性的?

保证调度算法是另外一种类型的调度算法,它向用户所做出的保证并不是优先运行,而是明确的性能保证,该算法可以做到调度的公平性。

一种比较容易实现的性能保证是处理机分配的公平性。如果在系统中有n个相同类型的进程同时运行,为公平起见,须保证每个进程都获得相同的处理机时间1/n。

18. 公平分享调度算法又是如何做到调度的公平性的?

在公平分享调度算法中,调度的公平性主要是针对用户而言,使所有用户能获得相同的处理机时间,或所要求的时间比例。

19. 为什么在实时系统中,要求系统(尤其是 CPU)具有较强的处理能力?

在实时系统中,最重要的就是对时间的概念,如果处理机的处理能力不够强,则有可能因处理机忙不过来,导致某些实时任务不能拿得到及时处理,这在实时系统中,这是重大事故,会造成难以估量的后果。

在实时系统中,不但包括周期任务、偶发任务、非周期任务,还包括非实时任务。实时任务要求要满足时限,而非实时任务要求要使其响应时间尽可能的短。

多种类型任务的混合,使系统的可调度性分析更加困难。实际上有些实时系统CPU处理能力并不强,比如一些嵌入式实时系统,这就要求系统尽量少做一些并发计算任务,留出足够冗余处理实时任务。

20. 按调度方式可将实时调度算法分为哪几种?

抢占调度算法和非抢占调度算法

21. 什么是最早截止时间优先调度算法(Earliest Deadline First,EDF),请举例说明之。

EDF算法是指根据任务的截止时间来确定任务的优先级的算法,任务截止时间越早,其优先级愈高。该算法要求在系统中保持一个实时任务就绪队列,该队列按各任务截止时间的先后排序。既可用于抢占式调度方式中,也可以用于非抢占式调度方式中。

22. 什么是最低松弛度优先调度算法(Least Laxity First,LLF),请举例说明之。

LLF算法是指根据任务的紧急(或松弛)程度来确定任务的优先级的算法,任务紧急程度愈高,其优先级就愈高。主要用于可抢占式调度方式中。

任务的松弛度 = 必须完成时间 - 其本身的运行时间 - 当前时间

例如,一个任务在200ms时必须完成,而它本身所需的运行时间就有100ms,因此,调度程序必须在100ms之前调度执行,该任务的紧急程度(松弛程度)为100ms。

又如,另一任务在400ms时必须完成,它本身需要运行150ms,则其松弛程度为250ms。

  • 最早截止时间优先调度算法:任务要求的截止时间越早,其优先级就越高。

  • 最低松弛度优先调度算法:任务的紧急程度越高,其优先级就越高。

23. 何谓“优先级倒置”现象,可采取什么方法来解决?

当前0S广泛采用优先级调度算法和抢占方式,然而在系统中存在着影响进程运行的资源而可能产生“优先级倒置”的现象,即高优先级进程(或线程)被低优先级进程(或线程)延迟或阻塞。

24. 试分别说明可重用资源和可消耗资源的性质。

可重用性资源:每一个可重用性资源中的单元只能分配给一个进程使用,不允许多个进程共享。进程在使用可重用性资源时,须按照这样的顺序:请求资源、使用资源、释放资源。系统中每一类可重用性资源中的单元数目是相对固定的,进程在运行期间既不能创建也不能删除它。

可消耗性资源:每一类可消耗性资源的单元数目在进程运行期间是可以不断变化的,有时它可以有许多,有时可能为0。进程在运行过程中,可以不断创造可消耗性资源的单元,将它们放入该资源类的缓冲区中,以增加该资源类的单元数目。进程在运行过程中,可以请求若干个可消耗性资源单元,用于进程自己的消耗,不再将它们返回给该资源类中。