处理机调度的层次和调度算法的目标
调度的实质就是资源分配,处理剂调度就是对处理机资源进行分配
- 处理机调度的层次
- 1、高级调度:调度对象是作业,决定外存上处于后备队列中的哪几个作业调入内存
- 2、低级调度:又称进程调度,调度对象是进程(或内核级线程),决定就绪队列中哪个进程应获得处理机
- 3、中级调度:又称内存调度,目的是提高内存利用率和系统吞吐量
进程调度运行频率最高,作业调度周期较长
- 处理机调度算法的目标
- 1、处理机调度算法共同目标:
- (1)提高资源利用率
- (2)公平性,指诸进程都获得合理的CPU时间,不会发生进程饥饿现象
- (3)平衡性
- (4)策略强制执行
- 2、批处理系统的目标:
- (1)平均周转时间短
- (2)系统吞吐量高:吞吐量是指单位时间内系统所完成的作业数,因而它与批处理作业的平均长度有关,就应尽量多选择短作业运行
- (3)处理机利用率高
- 3、分时系统的目标
- (1)响应时间快
- (2)均衡性:系统响应时间的快慢
- 4、实时系统的目标
- (1)截止时间的保证
- (2)可预测性
- 1、处理机调度算法共同目标:
作业与作业调度
- 批处理系统中的作业
- 1、作业和作业步
(1)作业Job:不仅包含通常的程序和数据,还配有一份作业说明书,在批处理系统中,以作业为基本单位从外存调入内存
(2)作业步:作业运行期间每一个加工步骤称为一个作业步,上一个作业步的输出是下一个作业步的输入 - 2、作业控制块JCB类似进程控制块PCB
- 3、作业运行的三个阶段和三种状态
- (1)收容阶段:为作业建立JCB,并将它放入作业后备队列中,此时为后备状态
- (2)运行阶段:为它分配必要的资源和建立进程,并将它放入就绪队列,从就绪状态开始到运行结束前处于运行状态
- (3)完成阶段:作业运行完成或发生异常提前结束,作业处于完成状态,系统回收JCB和相应资源
- 1、作业和作业步
- 作业调度的主要任务:根据JCB信息,检查系统中的资源是否能满足作业对资源的需求,以及按照一定的调度算法,从外存的后备队列中选取某些作业调入内存,并为它们创建进程、分配必要的资源。然后将新创建的进程排在就绪队列上等待调度,因此也把作业调度称为接纳调度。每次执行作业调度时都需要做出两个决定:
- i)接纳多少个作业
- ii)接纳哪些作业,取决于所采用的调度算法。
在批处理系统中存在作业调度,但在分时系统中,为了做到及时相应,因而无需配置作业调度机制,但也需要某种接纳控制措施来限制进入系统的用户数目
- 先来先服务FCFS和短作业优先SJF调度算法
- 1、先来先服务FCFS调度算法,按照作业到达的先后次序进行调度
- 2、短作业优先SJF调度算法:作业越短(要求的运行时间越短),其优先级越高
- 缺点:
(1)无法预知作业的运行时间
(2)对长作业非常不利
(3)无法人机交互
(4)未考虑作业的紧迫程度
- 缺点:
- 优先级调度算法和高响应比优先调度算法
- 1、优先级调度算法PSA:基于作业的紧迫程度
- 2、高响应比优先调度算法:为作业引入动态优先级,是FCFS与SJF的折中
进程调度
-
进程调度的任务、机制和方式
- 1、进程调度的任务:保存处理机的现场信息、按某种算法选取进程、把处理机分配给进程(选中PCB)
- 2、进程调度机制:排队器、分派器、上下文切换器
- 3、进程调度方式:
- 1)非抢占方式:让进程一直运行下去,绝不因时钟中断或任何其它原因去抢占当前正在运行进程的处理机
- 2)抢占方式:根据某种原则暂停某个正在运行的进程,将该进程的处理机重新分配给另一个进程
- 原则:优先权原则、短进程优先原则、时间片原则
-
轮转RR(Round Robin)调度算法(抢占式调度):让就绪队列上每个进程每次仅运行一个时间片
- 1、轮转RR法的基本原理:根据FCFS策略,保证就绪队列中所有进程在一个确定的时间段内都能获得一次CPU执行
- 2、进程切换时机:
- (1)一个时间片未用完而进程已完成
- (2)一个时间片已用完而进程未完成
- 3、时间片大小的确定:较可取的时间片大小是略大于一次典型的交互所需要的时间,使大多数交互式进程能在一个时间片内完成,从而可以获得很小的响应时间
这里出示了时间片分别为q = 1 和q = 4时对平均周转时间的影响
q = 1的情况
q = 2的情况
其中带权周转时间 = 周转时间 / 服务时间
大家可能对于完成时间、周转时间这些数字比较疑惑,这里我画个图解释一下
这个是根据p = 1 分析的,以此类推,p = 4你们同样可以推导出来。注:很明显,白色的图中p = 1的E情况的带权周转时间应该是3.25
-
优先级调度算法:由于在时间片轮转调度算法中做了一个隐含的假设,即系统中所有进程的紧迫性都是相同的,但实际上并非如此,所以要引入优先级,把处理机分配给就绪队列中优先级最高的进程
- 1、优先级调度算法的类型:
- (1)非抢占式优先级调度算法
- (2)抢占式优先级调度算法
- 2、优先级的类型:
- 1)静态优先级
确定进程优先级大小的依据:- (1)进程类型:系统进程优先级高于一般用户进程
- (2)进程对资源的需求:对资源需求少的优先级越高
- (3)用户要求:根据进程紧迫程度以及用户所付费用多少确定优先级
特点:简单易行,开销小,但不够精确
- 2)动态优先级:优先级随进程的推进或等待时间的增加而改变
防止一个长作业长期垄断处理机
- 1)静态优先级
- 1、优先级调度算法的类型:
-
多队列调度算法:将不同类型或性质的进程固定分配在不同的就绪队列中,不同的就绪队列采用不同的调度算法
-
多级反馈队列调度算法
- 1、调度机制
- (1)设置多个就绪队列:优先级越高的队列,其时间片越小
- (2)每个队列都采用FCFS算法
- (3)按队列优先级调度:首先调度最高优先级队列中的诸进程
- 2、调度算法的性能
- 1、调度机制
-
基于公平原则的调度算法
- 1、保证调度算法
- 2、公平分享调度算法:主要针对用户而言,是所有用户获得相同的处理机时间
实时调度:实时系统中,存在两类性质不同的实时任务:HRT硬实时任务和SRT软实时任务
- 实现实时调度的基本条件
- 1、提供必要信息
- (1)就绪时间
- (2)开始截止时间和完成截止时间
- (3)处理时间
- (4)资源要求
- (5)优先级:绝对优先级和相对优先级
- 2、系统处理能力强
- 3、采用抢占式调度机制
- 4、具有快速切换机制:对中断的快速响应能力、快速的任务分派能力
- 1、提供必要信息
- 实时调度算法的分类:按调度方式分为非抢占式调度算法和抢占式调度算法
- 1、非抢占式调度算法
- 2、抢占式调度算法
- 最早截止时间优先EDF算法