CPU的调度

CPU调度

    • 1.1 高级调度、中级调度、低级调度
      • 1.1.1 高级调度(High Scheduling)
      • 1.1.2 低级调度(Low Level Scheduling)
      • 1.1.3 中级调度
    • 1.2 处理机调度算法的目标
      • 1.2.1 处理机调度算法的共同目标
      • 1.2.2 批处理系统的目标
      • 1.2.3 分时系统的目标
      • 1.2.4 实时系统的目标
    • 1.3 作业与作业调度
      • 1.3.1 批处理系统中的作业
      • 1.3.2 作业调度的主要任务
      • 1.3.3 先来先服务(FCFS)和短作业优先(SJF)调度算法
      • 1.3.4 优先级调度算法和高响应比优先调度算法
    • 1.4 进程调度
      • 1.4.1 进程调度的任务、机制和方式
      • 1.4.2 轮转调度算法
      • 1.4.3 优先级调度算法
      • 1.4.4 多队列调度算法
      • 1.4.5 多级反馈队列调度算法
    • 1.5 实时调度(real-time scheduling)
      • 1.5.1 实现实时调度的基本条件
      • 1.5.2 实时调度算法的分类
      • 1.5.3 常用的几种实时调度算法

调度的实质是一种资源分配,处理机调度是对处理机资源进行分配。
处理机调度算法就是根据处理机分配策略设计的处理机分配算法。
一个作业从提交到获得处理机执行,到执行完毕,可能需要经历多次调度。

1.1 高级调度、中级调度、低级调度

1.1.1 高级调度(High Scheduling)

又称为作业调度或长程调度。用于决定把后备队列中的哪些作业调入内存,为他们创建进程,分配必要的资源,并放入就绪队列中。
高级调度主要应用于多道批处理系统中,在分时和实时系统中一般不设置高级调度。
执行高级调度时,必须作出两个决定
接纳多少作业——每次接纳多少作业进入内存,取决于多道程序度,即允许多少个作业同时在内存中运行。多道程序度的确定应根据系统的规模和运行速度等情况综合考虑。
接纳哪些作业——应接纳哪些作业从外存调入内存,取决于所采用的调度算法。如先来先服务,短作业优先等。

1.1.2 低级调度(Low Level Scheduling)

通常也称为进程调度或短程调度(Short-Term Scheduling),进程调度是最基本的一种调度,在三种OS中都有。用于决定就绪队列中哪个进程应先获得处理机,并将处理机分配给选中的进程。

进程调度可采用下述两种调度方式:
非抢占方式(Non-preemptive Mode)
优点:实现简单、系统开销小,适用于大多数的批处理OS
缺点:不适合实时系统。
抢占方式(Preemptive Mode)
抢占的原则有:
优先权原则:优先权高的可以抢占优先级低的进程的处理机。
短作业(进程)优先原则:短作业(进程)可以抢占长作业(进程)的处理机。
时间片原则:各进程按时间片运行,一个时间片用完时,停止该进程执行重新进行调度。

1.1.3 中级调度

又称为交换调度或中程调度(Medium-Term Scheduling)。它按一定的算法将外存中已具备运行条件的进程换入内存,而将内存中处于阻塞状态的某些进程换出至外存。
引入中级调度的目的,是为了提高内存利用率和系统吞吐量。为此,应使那些暂时不能运行的进程不再占用宝贵的内存资源,而将它们调之外存去等待,把此时的进程状态称为静止就绪状态或挂起状态。当这些进程重又具备运行条件、且内存又稍有空闲时,由中级调度来决定把外存上的哪些又具备运行条件的就绪进程,重新调入内存,并修改其状态为就绪状态,挂在就绪队列上等待进程调度。中级调度实际上就是存储器管理中的对换功能。

1.2 处理机调度算法的目标

选择何种调度算法,很大程度上取决于操作系统的类型及其设计目标。

1.2.1 处理机调度算法的共同目标

(1)资源的利用率:
在这里插入图片描述
(2)公平性:应该使进程都能获得合理的CPU时间
(3)平衡性:协调好计算型和IO型的作业,使得系统的CPU和各种外部资源都能处于忙碌状态。
(4)策略强制执行:必要的作业,准确执行。

1.2.2 批处理系统的目标

(1)平均周转时间短
(2)系统吞吐量高
(3)处理机利用率高

1.2.3 分时系统的目标

(1)响应时间快
(2)均衡性:系统响应时间的快慢应与用户所请求服务的复杂性相适应。

1.2.4 实时系统的目标

(1)截止时间的保证
(2)可预测性

对于不同的系统和系统目标,通常采用不同的调度算法,例如,在批处理系统中为照顾为数众多的短作业,应采用短作业优先的调度算法;又如在分时系统中,为了保证系统具有合理的响应时间,应采用轮转法进行调度。目前存在的多种调度算法中,有的算法适用于作业调度,有的算法适用于进程调度;但有些算法作业调度和进程调度都可以采用。

1.3 作业与作业调度

在多道批处理系统中,作业是用户提交给系统的一项相对独立的工作。操作员把用户提交作业通过相应的输入设备输入道磁盘设备,并保存在一个后备作业队列中,再由作业调度程序将之从外存调入内存。

1.3.1 批处理系统中的作业

作业、作业步、作业控制块

作业运行的三个阶段和三种状态:收容阶段:后备状态;运行阶段:运行状态;完成阶段:完成状态。

1.3.2 作业调度的主要任务

根据JCB中的信息,检查系统中的资源是否满足作业对资源的需求,按照一定的调度算法,从外存的后备队列中选取某些作业调入内存,并为之创建进程、分配必要的资源,然后将新创建的进程排在就绪队列上等待调度。

1.3.3 先来先服务(FCFS)和短作业优先(SJF)调度算法

先来先服务是一种最简单的调度算法,既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中,选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之运行。
FCFS算法比较有利于长作业(进程),而不利于短作业(进程)。

短作业优先(SJF)算法这是对FCFS算法的改进,顾名思义就是指对短作业或短进程优先调度的算法。也可以分别用于作业调度和进程调度。
短作业优先的调度算法,是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。而短进程优先(SPF)调度算法则是从就绪队列中选出一估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时,再重新调度。

SJF调度算法的优缺点
优点
有效降低作业的平均等待时间,提高系统吞吐量。

缺点
1.必须预知作业的运行时间;
2.对长作业不利,长作业的周转时间明显加长;
3.不能保证紧迫性作业得到及时处理;
4.在采用FCFS算法时,人机无法实现交互。

1.3.4 优先级调度算法和高响应比优先调度算法

优先级调度算法(priority-scheduling )
根据作业的紧迫程度,由外部赋予作业相应的优先级,调度算法是根据该优先级进行调度。
高响应比优先调度算法(Highest response ratio next, HRRN)
同时考虑作业的等待时间,又考虑作业运行时间的调度算法。
在这里插入图片描述

1.4 进程调度

进程调度是操作系统中必不可少的一种调度,在三种操作系统里都有进程调度。对操作系统性能影响最大,有关调度算法也多。

1.4.1 进程调度的任务、机制和方式

进程调度的任务
(1)保存处理机的现场信息。
(2)按调度算法选取进程。
(3)把处理机分配给进程。
进程调度机制
CPU的调度_第1张图片
进程调度方式
(1)非抢占方式(Nonpreemptive Mode)
(2)抢占方式(Preemptive Mode)
抢占不是乱抢占,是遵循一定的原则:优先权原则、短进程优先原则、时间片原则等

1.4.2 轮转调度算法

基本原理
其基本思路是通过时间片轮转,提高进程并发性和响应时间特性,从而提高资源利用率;
系统每隔一定时间产生一次中断,激活进程调度程序进行调度,把CPU分配给队首进程,并令其执行一个时间片。
进程切换的时机
时间片用完或者时间片内进程结束。
时间片大小确定
时间片长度变化的影响
过长:退化为FCFS算法,进程在一个时间片内都执行完,响应时间长。
过短:用户的一次请求需要多个时间片才能处理完,上下文切换次数增加,响应时间长。
对响应时间的要求
T=N(进程数目)*q(时间片长度)
时间片长度的影响因素:
就绪进程的数目:数目越多,时间片越小(当响应时间一定时)
系统的处理能力:应当使用户输入通常在一个时间片内能处理完,否则使响应时间、平均周转时间和平均带权周转时间延长。

1.4.3 优先级调度算法

静态优先级:创建进程时就确定的,在运行期间保持不变。
动态优先级:在运行期间会发生变化,如随着等待时间,优先级不断提高。

1.4.4 多队列调度算法

将系统中不同类型或者性质的进程固定分配在不同的就绪队列,不同的队列采用不同的调度算法,对不同用户进程的需求,很容易提供多种调度策略,针对多处理机系统,可以方便地为每个处理机设置一个单独的就绪队列。(如看着不好理解,请参考教材里对应部分)

1.4.5 多级反馈队列调度算法

实施过程
(1)设置多个队列并为各个队列赋予不同的优先级。第一个最高,依次降低。该算法赋予各个队列中进程执行时间片的大小也不相同,优先权越高,时间片越短。
(2)当一个新进程进入内存后,首先将它放入第一队列的末尾,按FCFS原则排队等待调度。如它在一个时间片结束时尚未完成,调度程序便将该进程转入第二队列的末尾。
(3)仅当第1~(i-1)队列空闲时,才会调度第i队列中的进程运行。
CPU的调度_第2张图片

多级反馈队列调度算法的性能
多级反馈队列调度算法具有较好的性能,能较好的满足各种类型用户的需要。
终端型作业用户、短批处理作业用户、长批处理作业用户。

1.5 实时调度(real-time scheduling)

实时任务:具有明确时间约束的计算任务。例如:某时刻前必须开始处理;某时刻前必须处理完毕;
实时调度:合理安排就绪实时任务的执行次序,满足每个实时任务时间约束条件的调度。
实时任务分类:硬实时、软实时

1.5.1 实现实时调度的基本条件

提供必要的信息、系统处理能力强、抢占式调度机制、具有快速切换机制
提供必要的信息
就绪时间:该任务成为就绪状态的时间。
开始截止时间和完成截止时间:只需知道一个。
处理时间:从开始执行到完成所需时间。
资源要求:任务执行时所需的一组资源。
优先级:根据任务性质赋予不同优先级。
系统处理能力强
假如系统中有M个周期性的硬实时任务,处理时间为Ci,周期时间表示为Pi
则单机系统中必须满足条件
∑( Ci / Pi )≤1
多处理机系统
∑( Ci / Pi )≤N
采用抢占式调度机制
硬实时任务: 广泛采用抢占机制。
小的实时系统: 可采用非抢占调度机制(简化调度程序和对任务调度时所花费的系统开销)。
具有快速切换机制
对外部中断的快速响应能力。
快速的任务分派能力。

1.5.2 实时调度算法的分类

可以按照不同方式对实时调度算法加以分类:
根据实时任务性质的不同可分为硬实时调度算法和软实时调度算法;
按调度方式的不同可分为非抢占调度算法和抢占调度算法;
非抢占调度算法
非抢占式轮转调度算法:适用于要求不太严格的场合!
非抢占式优先调度算法:适用于要求较为严格的场合!
抢占式调度算法
基于时钟的抢占式优先权调度算法:某高优先级任务到达后并不立即抢占,而等下一个时钟中断时抢占。
立即抢占的优先权调度算法
一旦出现外部中断,只要当前任务未处于临界区,就立即抢占处理机。

CPU的调度_第3张图片

1.5.3 常用的几种实时调度算法

最早截止时间优先EDF(Earliest Deadline First)算法
该算法是根据任务的开始截止时间来确定任务的优先级。截止时间越早,其优先级越高。该算法要求在系统中保持一个实时任务就绪队列,该队列按各任务截止时间的早晚排序,调度程序在选择任务时总是选择就绪队列中的第一个任务,为之分配处理机,使之投入运行。
EDF算法既可以用于抢占式调度,也可用于非抢占式调度,如下例:
CPU的调度_第4张图片
CPU的调度_第5张图片

最低松弛度优先LLF(Least Laxity First)算法
松弛度=任务紧急程度
松弛度=完成截止时间-运行时间-当前时间
例如,任务A在200ms时必须完成,本身运行时间100ms,则必须在100ms之前调度执行,A任务的紧急(松弛)程度为100ms;又如任务B在400ms时必须完成,需运行150ms,其松弛程度为250ms.
该算法主要用于可抢占调度方式中。

未防止笔记失踪,借此放置,有需要的小伙伴时常回来看看!!!

你可能感兴趣的:(笔记)