处理器调度可以分为三个级别:高级调度、中级调度和低级调度。

计算机操作系统笔记——处理器调度

   低级调度是各类操作系统必须具有的功能;在纯粹的分时或实时操作系统中,通常不需要配备高级调度;在分时系统或具有虚拟存储器的操作系统中,为了提高内存利用率和作业吞吐量,专门引进了中级调度。高级调度发生在新进程的创建中,它决定一个进程能否被创建,或者是创建后能否被置成就绪状态,以参与竞争处理器资源获得运行;中级调度反映到进程状态上就是挂起和解除挂起,它根据系统的当前负荷情况决定停留在主存中进程数;低级调度则是决定哪一个就绪进程或线程占有CPU 运行。

高级调度

高级调度(High Level Scheduling):又称作业调度、长程调度(Long-termScheduling)在多道批处理操作系统中,作业是用户要求计算机系统完成的一项相对独立的工作,新提交的作业被输入到磁盘,并保存在一个批处理后备作业队列中。高级调度将按照系统预定的调度策略决定把后备队列作业中的部分满足其资源要求的作业调入主存,为它们创建进程,分配所需资源,为作业做好运行前的准备工作并启动它们运行,当作业完成后还为它做好善后工作。在批处理操作系统中,作业首先进入系

统在辅存上的后备作业队列等候调度,因此,作业调度是必须的,它执行的频率较低,并和到达系统的作业的数量与速率有关。


中级调度

中级调度(Medium Level Scheduling):又称平衡负载调度,中程调度(Medium-term Scheduling)。它决定主存储器中所能容纳的进程数,这些进程将允许参与竞争处理器和有关资源,而有些暂时不能运行的进程被调出主存,这时这个进程处于挂起状态,当进程具备了运行条件,且主存又有空闲区域时,再由中级调度决定把一部分这样的进程重新调回主存工作。中级调度根据存储资源量和进程的当前状态来决定辅存和主存中的进程的对换,它所使用的方法是通过把一些进程换出主存,从而,使之进入“挂起”状态,不参与低级调度,起到短期平滑和调整系统负荷的作用。

低级调度

低级调度(Low Level Scheduling):又称进程调度(或线程调度)、短程调度(Short_term Scheduling)。它的主要功能是按照某种原则决定就绪队列中的哪个进程或内核级线程能获得处理器,并将处理器出让给它进行工作。低级调度中执行分配CPU 的程序称分派程序(dispatcher),它是操作系统最为核心的部分,执行十分频繁,低级调度策略优劣直接影响到整个系统的性能,因而,这部分代码要求精心设计,并常驻内存工作。有两类低级调度方式:

第一类称剥夺方式:当一个进程或线程正在处理器上执行,若有另一个更高优先级或紧迫的进程或线程产生,则立即暂停正在执行的进程或线程,把处理器分配给这个更高优先级或紧迫的进程或线程使用。第二类称非剥夺方式:一旦某个进程或线程开始执行后便不再出让处理器,除非该进程或线程运行结束或发生了某个事件不能继续执行。


批处理作业的管理与调度

作业(JOB)是用户提交给操作系统计算的一个独立任务。一般每个作业必须经过若干个相对独立又相互关联的顺序加工步骤才能得到结果,其中,每一个加工步骤称一个作业步(Job Step),例如,一个作业可分成“编译”、“连结装配”和“运行”三个作业步,往往上一个作业步的输出是下一个作业步的输入。作业由用户组织,作业步由用户指定,一个作业从提交给系统,直到运行结束获得结果,要经过提交、收容、执行和完成四个阶段。

批处理作业的管理

多道批处理操作系统具有独立的作业管理模块,为了有效管理作业,必须像进程管理一样为每一个作业建立作业控制块JCB(Job Control Block)。JCB 通常是在批作业进入系统时,由Spooling 系统建立的,它是作业存在于系统的标志,作业撤离时,JCB 也被撤销。JCB 的主要内容从用户作业说明书中获得,包括:作业情况(用户名、作业名、语言名等),资源需求(估计CPU 运行时间、最迟截止期、主存量、设备类型/台数、文件数和数据量、函数库/实用程序等),资源使用情况(进入系统时间、开始运行时间、己运行时间等),作业控制(优先数、联机/脱机控制、操作顺序、出错

处理等),作业类型(CPU 繁忙型、I/O 繁忙型、批量型、终端型)等信息。当一个作业被操作系统接受,就必须创建一个作业控制块,并且这个作业在它的

整个生命周期中将顺序地处于以下四个状态:

???? 输入状态:此时作业的信息正在从输入设备上预输入。

???? 后备状态:此时作业预输入结束但尚未被选中执行。

???? 执行状态:作业已经被选中并构成进程去竞争处理器资源以获得运行。

???? 完成状态:作业已经运行结束,甚至己经撤离,但正在等待缓输出运算结果。

多道批处理操作系统的处理器调度至少应该包括作业调度和低级调度两个层次。作业调度属于高级调度层次,处于后备状态的作业在系统资源满足的前提下可以被选中,从而,进入主存计算。只有处于执行状态的作业才真正构成进程获得运行和计算的机会。作业调度选中了一个作业且把它装入主存储器时就为该作业创建一个用户进程。这些进程将在低级调度的控制下占有处理器运行。为充分利用处理器,往往可以把多个作业同时装入主存储器,这样就会同时有多个用户进程,这些进程都要竞争处理器。所以,进入计算机系统的作业只有经过两级调度后才能占用处理器。第一级是作业调度,使作业进入主存储器,同时生成相应于作业的进程;第二级是低级调度,使进程占用处理器。

作业调度算法

1、先来先服务算法

2、最短作业优先算法

3、响应比最高者优先(HRRF)算法

4、优先数法

5、分类调度算法

6、用磁带与不用磁带的作业搭配


低级调度

低级调度负责动态地把处理器分配给进程或内核级线程。操作系统中实现低级调度的程序称为低级调度程序,或分派程序(dispatcher)。低级调度的主要功能是:

???? 记录进程(内核级线程)的状态。这个信息一般记录在一个进程(内核级线程)的进程控制块(线程控制块)内。

???? 决定某个进程(内核级线程)什么时候获得处理器,以及占用多长时间。

???? 把处理器分配给进程(内核级线程)。即进行进程(内核级线程)上下文切换,把选中进程(内核级线程)的进程控制块(线程控制块)内有关现场的信息如程序状态字、通用寄存器等内容送入处理器相应的寄存器中,从而,让它占用处理器运行。

???? 收回处理器。将处理器有关寄存器内容送入该进程(内核级线程)的进程控制块(线程控制块)内的相应单元,从而,使该进程让出处理器。

低级调度算法

1、先来先服务算法

2、时间片轮转调度

3、优先数调度

4、多级反馈队列调度

5、保证调度算法

6、×××调度算法


实时调度

实时系统是那些时间因素非常关键的系统。例如,计算机的一个或多个外设发出信号,计算机必须在一段固定时间内做出适当的反应。一个实例是,计算机用CD-ROM放VCD 时,从驱动器中获得的二进制数据必须在很短时间内转化成视频和音频信号,如果转换的时间太长,图像显示和声音都会失真。其他的实时系统还包括监控系统、自动驾驶系统、安全控制系统等等,在这些系统中,迟到的响应即使正确,也和没有响应一样糟糕。

实时系统通常分为硬实时(hard real time)系统和软实时(soft real time)系统。前者意味着存在必须满足的时间限制;后者意味着偶尔超过时间限制是可以容忍的。这两种系统中,实时性的获得是通过将程序分成很多进程,而每个进程的行为都预先可知,这些进程处理周期通常都很短,当检测到一个外部事件时,调度程序按满足它们最后期限的方式调度这些进程。

实时调度算法

1)单比率调度算法

2)限期调度算法

3)最少裕度法