处理机调度

  • 一、基本概念
  • 1、何为处理机调度?
  • 2、调度的分级
  • 2.1、作业调度
  • 2.2、中级调度
  • 2.3、进程调度
  • 3、不同级别的调度之间的联系
  • 二、何时与如何调度
  • 1、不能马上进行调度与切换的情况
  • 1)正在处理中断
  • 2)进程在临界区
  • 3)其他完全屏蔽中断地原子操作过程中
  • 2、可以进行调度和切换的情况
  • 1)非剥夺式调度
  • 2)剥夺式调度
  • 3、调度方式
  • 1)非剥夺
  • 2)剥夺
  • 三、调度的准则
  • 1、CPU 利用率
  • 2、系统吞吐量
  • 3、周转时间
  • 4、等待时间
  • 5、响应时间


一、基本概念

1、何为处理机调度?

  • 在多道程序系统中,处理机个数有限而进程数量多,因而往往出现进程竞争处理机,为了避免因为进程 的竞争导致计算机系统瘫痪,计算机系统提供了专门的处理程序——处理机调度程序对处理机进行分配,按照相关的公平、高效的算法选择就绪队列的进程占用处理机去运行
  • 处理机调度是多道程序操作系统的基础,是操作系统设计的核心问题。

2、调度的分级

  • 计算机中,一个作业的提交到完成,需要经历三个级别的调度:作业调度、中级调度和进程调度

2.1、作业调度

  • 又称为高级调度主要任务是按一定原则从外存上处于后备状态的作业中挑选一个或多个作业,并为其分配相关的系统资源,建立相应的进程,进而获得竞争处理机的权利;也就是,作业调度是内存和辅存之间的调度。
  • 注意:每个作业只调入一次、调出一次;作业调度执行频率低,几分钟一次

2.2、中级调度

  • 又称内存调度用于提高内存利用率和系统吞吐量;通常,那些暂时不能运行的进程会被调至外存,此时进程称为挂起态;当某一个或某些挂起态的进程具备运行条件并且内存有空闲时,中级调度程序就会将其调入内存,此时进程变为就绪态。

2.3、进程调度

  • 又称低级调度主要任务是按照相关方法和策略从就绪队列中选择一个进程进行运行,是操作系统中最基本的一种调度,大多数操作系统都必须配置进程调度;进程调度执行频率很高,一般几十毫秒一次

3、不同级别的调度之间的联系

  • 三个级别的调度,是一种分工合作的关系,所处的位置就好比一条河流的上游、中游和下游,作业调度从外存的后备队列中选择作业进入内存,并建立相关进程送入就绪队列,中级调度为了提高内存利用率和系统吞吐量,对就绪态的进程做一个条件筛选,将暂时不能运行的进程挂起,直到其具备条件兵器内存空间有空闲再再次调入就绪队列,进程调度直接在中级调度处理过的就绪队列中选择一个进程,占用 处理机进行运行。
1)作业调度为进程活动做准备,进程调度使进程正常活动起来,中级调度将暂时不能运行的进程挂起。
2)作业调度次数少,中级调度次数略多,进程调度频率最高。
3)进程调度最基本,不可或缺。

二、何时与如何调度

  • 指的是调度的时机、切换如何安排调度的过程又是怎么样进行的
  • 负责进程调度、进程切换的程序都是系统内核程序,只有当请求调度的事件发生后,才会运行进程调度程序,调度了新的进程后,才会进行进程切换。理论上这三件事是顺序执行,但实际上操作系统不一定能够马上进行调度与切换。

1、不能马上进行调度与切换的情况

  • 现代操作系统中,不能进行进程的调度与切换的情况有:

1)正在处理中断

  • 中断过程处理复杂,很难做到进程切换,而且中断处理是系统工作的一部分,逻辑上不属于某一进程,不应被剥夺处理机资源。

2)进程在临界区

  • 指进程在操作系统内核程序临界区进入临界区后,需要独占式地访问共享数据,理论上必须加锁,以防止其他并行进程进入,在解锁前不应切换到其他进程运行,以加快该共享数据地释放

3)其他完全屏蔽中断地原子操作过程中

  • 在如加锁、解锁、中断现场保护、恢复等原子操作,在这些原子操作过程中,连中断都频闭,更不应该进行进程调度与切换
  • 若上述过程中发生了引起调度的条件,则不能马上进行调度和切换,应置系统的请求调度标志,直到上述过程结束才进行调度与切换。

2、可以进行调度和切换的情况

  • 应该进行进程调度与切换的情况如下:

1)非剥夺式调度

  • 发生引起进程调度条件且当前进程无法继续运行,可以马上进行进程调度;此种情况进行的调度,称为非剥夺调度。

2)剥夺式调度

  • 中断处理结束或自陷处理结束后,返回被中断的用户态程序执行现场前,若置上请求调度标志,即可马上进行进程调度与切换;此种方式的调度,称为剥夺式调度。

3、调度方式

  • 调度方式主要就是上面提到的非剥夺式调度和剥夺式调度

1)非剥夺

  • 又称为非抢占式指的是若有进程正在执行,即便有优先级更高(更为重要或紧迫)的进程进入就绪队列,也仍然让当前进程继续执行,直到进程完成任务或进入阻塞态、等待态,才让更为紧迫的进程进行运行
  • 优点是实现简单、系统开销小,适用于大多数的批处理系统;但不适合分时系统或大多数实时系统

2)剥夺

  • 又称为抢占式,指的是当一个进程正在执行时,有优先级更高的进程进入就绪队列,则立即停止当前进程的执行,让优先级更高的进程执行
  • 优点是提高系统吞吐率和响应效率;且“剥夺”也不是任意的,而是按照一定的原则(优先级、短进程优先和时间片原则)进行的

三、调度的准则

  • 不同的调度算法其特性往往不同,在选择时需要加以考虑,为了比较处理机调度算法的性能,主要用以下主要的指标来来衡量。

1、CPU 利用率

  • CPU 作为计算机系统中最昂贵和最重要的资源之一,引进可能地充分利用,也就是尽可能让 CPU 忙起来而不是空闲。

2、系统吞吐量

  • 指单位时间内 CPU 完成的作业数量。通常,长作业需要较长的 CPU 占用时间,而短作业则不需要很长的占用 CPU 时间,因此为了提高系统吞吐量,则是短作业优先。

3、周转时间

  • 指从作业提交到作业完成所经历的时间,是作业等待、在就绪队列中排队、在处理机上运行及进行输入/输出操作所花费的时间的总和。可用如下公式表示:
    周转时间 = 作业完成时间 - 作业提交时间
  • 平均周转时间指多个作业周转时间的平均值:
    平均周转时间 = (作业 1 的周转时间 + … + 作业 n 的周转时间)/n
  • 带权周转时间指作业周转时间与作业实际运行时间的比值:
    带权周转时间 = 作业周转时间 / 作业实际运行时间
  • 平均带权周转时间是指多个作业带权周转时间的平均值:
    平均带权周转时间 = (作业 1 的带权周转时间 + … + 作业 n 的带权周转时间)/n

4、等待时间

  • 指进程处于等处理机状态的时间之和,等待时间越长,用户满意度越低。处理机调度算法实际上并不影响作业执行或输入/输出操作时间,只影响作业在就绪队列中等待所花费的时间;因此,衡量一个调度算法的优劣,常常只需简单地考察等待时间。

5、响应时间

  • 指从用户发出请求到系统首次产生响应所用的时间。在交互系统上,周转时间不可能是最好的评价标准,一百采用响应时间作为衡量调度算法的重要准则之一。
  • 设计调度程序,一方面要满足特定系统用户的要求,另一方面要考虑整体效率