4.处理机调度
4.1 处理机调度概述☆
4.1.1 三种等级的调度
- 高级调度
决定把外存上哪些作业调入内存、创建进程、分配资源
作业调度、长程调度或宏观调度 - 低级调度
决定就绪队列中哪个进程应获得处理机
进程调度、短程调度或微观调度 - 中级调度
完成进程的部分或全部在内、外存间的交换
中程调度
4.1.2 共同的目标
- 资源利用率( Utilization )高
- 公平性(Fairness)
- 资源的平衡利用(Balance)
- 策略的强制执行
4.1.3 各类系统自己的目标:
1.批处理系统的目标
- 周转时间(Turnaround time)短
假定某一作业提交系统的时间为Si,它被选中执行, 运行结束时的时间为Ei 。周转时间为Ti =Ei – Si
则作业平均周转时间为:
平均带权周转时间为:
- CPU利用率( CPU Utilization )高
- 系统吞吐量(Throughput)高
吞吐量指在单位时间内系统所完成的作业数。
2.分时系统的目标
- 响应时间(Response time)快
响应时间是从用户通过键盘提交一个请求开始,直至系统首次产生响应为止的时间。 - 均衡性 系统响应时间的快慢应与用户请求服务的复杂性相适应
3.实时系统的目标
- 截止时间(Deadline)的保证
- 可预测性(Predictability)准则
4.2 作业调度及算法
4.2.1 先来先服务调度算法(FCFS: First Come First Served)
调度思想:完成选择一个或多个最先进入后备队列的作业,将它们调入内存,为它们分配资源、创建进程,并放入就绪队列。
FCFS的特点
- 有利于长作业,不利于短作业
- 有利于CPU密集/繁忙型的作业,不利于I/O 密集/繁忙型的作业
- 几乎所有进程都交替出现计算和I/O请求。
- CPU密集型作业(CPU-bound process)
作业大部分时间用于计算 - I/O密集型作业 (I/O bound process )
作业大部分时间用于等待I/O - 随着计算机运行速度加快,作业越来越趋向于I/O密 集型进程
4.2.2 短作业优先调度算法(SJF: Shortest Job First)
调度思想:完成在后备队列选择一个或多个估计运行时间最短的作业,将它们调入内存,为它们分配资源、创建进程,并放入就绪队列。
SJF的特点:
- 作业A, B, C, D的运行时间分别为a,b,c,d。
- 平均周转时间为(4a+3b+2c+d)/4。
- a 对平均周转时间影响最大,应是最短作业,次是b, c, d.
- 优点:能有效地降低作业的平均等待时间,提高系统吞吐量。
- 缺点:对长作业不利,未考虑作业紧迫程度,作业的估计运行时间不准确
4.2.3 优先级调度算法( PSA: Priority-scheduling algorithm)
调度思想:完成在后备队列选择一个或多个优先级最高的作业,将它们调入内存,为它们分配资源、创建进程,并放入就绪队列。
高响应比优先调度算法(HRRN: Highest Response Ratio Next)
响应比Rp =作业响应时间 /作业要求服务时间
=(作业要求服务时间+作业等待时间)/作业要求服务时间
= 1 +(作业等待时间 /作业要求服务时间)
特点:
- 如作业等待时间相同,则处理时间越短,响应比越高,有利于短作业。
- 对于长作业,随等待时间增加,响应比增高,最后同样可获得处理机。
- 如处理时间相同,等待时间越长,响应比越高,实现的是先来先服务。
例:分别同三种算法,计算作业的执行情况
4.3 进程调度及算法
进程调度的任务
- 保存处理机的现场信息
- 按某种调度算法选取进程
- 把处理器分配给进程
- 由分派程序把处理器分配给该进程,设置选中进程的处理机现场信息,交处理机控制权给进程运行
进程调度方式:
- 非抢占式(Non-preemptive Mode)
不允许某进程抢占已经分配出去的处理机。 - 抢占方式(Preemptive Mode)
允许调度程序根据某种原则,暂停正在执行进 程,将处理机重新分配给另一进程。
优先权原则、短进程优先原则、时间片原则
4.3.1 短进程优先调度算法(SPF: Shortest Process First)
- 是对SPF增加了抢占机制的版本
- 调度程序总是选择预期剩余时间最短的进程
- 优缺点
在周转时间上,SRT比SPF的性能要好
必须记录过去的服务时间,增加开销
作业的估计运行时间不准确
4.3.2 优先级调度算法(PSA:Priority-scheduling agorithm)
- 非抢占式优先级算法
主要用于批处理系统中,也可用于对实时性要求不高的实时系统 - 抢占式优先级算法
较好满足紧迫作业的要求,常用于要求较严格的实时系统和性能要求较高的分时和批处理系统
优先级的确定方法:
- 进程类型
系统进程高于一般用户进程的优先权 - 进程对资源的要求
对CPU和内存要求少、运行时间短的优先权高些 - 用户要求
根据用户进程的紧迫程度和用户所付费用决定
优先级分类:
1.静态优先级
- 进程创建时指定优先级,进程运行时优先级不变
- 优缺点
简单易行,系统开销小;
不够精确,可能出现优先级低的作业或进程,长期
得不到调度。
2.动态优先级
- 在进程创建时创立一个优先级,但在其生命周期内
优先级可以动态变化。 - 对于高度I/O密集型进程因为需要大部分时间等待I/O,所以无论任何时候,只要需要CPU计算,就应当马上调度它执行,以尽快开始它的下次I/O请求,实现和其它进程的并发执行。
4.3.3 基于时间片的轮转调度算法(RR—Round Robin)
RR的基本原理
- 把CPU划分成若干时间片
- 按顺序赋给FIFO就绪队列中的每一个进程
- 时间片用完时(时钟中断请求),即使进程未执行完毕,系统也剥夺该进程的CPU,将该进程排在就绪队列末尾,同时系统选择队首进程运行
RR的进程切换时机
- 时间片内进程已运行完成,立即激活进程调度程序
- 时间片用完,计时器中断处理程序被激活,送当前进程到就绪队列末尾
时间片大小的确定
- 时间片大小对系统性能影响很大
- 时间片很小,有利于短进程,但进程调度和切换频繁,增加系统开销
- 时间片过大,退化为FCFS,无法满足短作业和交互式进程的需求
- 时间片可选取略大于一次典型交互的所需时间
4.3.4 多级反馈队列调度算法(multileveled feedback queue)
调度算法思想
如果CPU正在处理第i级队列时,有新进程加入第一级队列,或者有新唤醒的进程比当前进程的队列级别高,则新进程抢占当前进程的CPU,而原来的当前进程插入第i级队列队尾。
各调度算法性能对比
4.4 实时调度
实时系统例子:实验控制、过程控制设备、机器人、空中交通管制、远程通信、军事指挥与控制系统,下一代系统还包括自动驾驶汽车、具有弹性关节的机器人控制器、智能化生产中的系统查找、空间站和海底勘探。
每种实时系统都有若干个实时进程,来反应或控制某个外部事件,它们往往带有某种程度的紧迫性,需要实时系统的调度有特殊处理,所以引入实时调度。
4.4.1 实现实时调度的基本条件
1.提供必要的信息
- 开始/完成截止时间
- 就绪时间
- 处理时间
- 资源要求
- 优先级
2.系统处理能力强
假定系统中有m个周期性的硬实时任务,处理时间为Ci,周期时间为Pi (1≤i ≤m)。
单处理机下必须满足:
为多处理机(N个)时,限制条件变为:
3.采用抢占式调度机制(硬实时系统)
4.具有快速切换机制
- 对外部中断的快速响应能力
要求快速硬件中断机构、允许中断的间隔短 - 快速的任务分派能力
系统中的每个运行功能单位适当的小
4.4.2 实时调度算法的分类
- 根据实时任务性质不同可分为硬实时调度和软实时调度;
- 根据调度方式不同可分非抢占调度和抢占调度算法;
- 根据调度时间的不同分成静态和动态调度算法;
- 在多处理机情况下可分为集中式和分布式调度算法。
4.4.3 常用的两种实时调度算法
1.最早截止时间优先算法EDF
- 根据任务的开始截止时间来确定任务的优先级;
- 可用于抢占式调度和非抢占式调度。
2.最低松弛度优先算法 LLF
- 根据任务的紧急(或松弛)程度确定任务的优先级
- 松弛度=必须完成的时间-还需运行的时间-当前时间
- 松弛度是动态变化的
- 主要用于可抢占式调度方式