1)非抢占方式(Non-preemptive
Mode)
一旦处理机分配给某进程,该进程一直执行。决不允许其他进程抢占已分配运行进程的处理机。
2)抢占方式(Preemptive Mode)
允许调度程序根据某种原则,暂停某个正在执行的进程,将处理机重新分配给另一进程。
进程调度方式比较
3、中级调度(Intermediate-Level
Scheduling)
v 又称交换调度或中程调度(Medium-Term
Scheduling)
引入目的:提高内存利用率和系统吞吐量。根据条件将一些进程调出或再调入内存。
三种调度的频率和复杂度
进程调度:运行频率最高,算法不能太复杂,以免占用太多的CPU时间。分时系统通常10~100ms便进行一次。
作业调度:一个作业运行完毕退出系统时即触发重新调度一个新作业入内存,周期较长,大约几分钟一次。因而也允许作业调度算法花费较多的时间。
中级调度:运行频率基本上介于上述两种调度之间。
4、调度队列模型
不论高级、中级或者低级调度,都涉及到进程队列,由此形成了三类调度队列模型。从这三种方式中体验调度的过程。
① 仅有进程调度的调度队列模型
② 具有高级和低级调度的调度队列模型
③ 同时具有三级调度的调度队列模型
1)仅有进程调度的调度队列模型
2)具有高级和低级调度的调度队列模型
3)同时具有三级调度的调度队列模型
二、
调度算法
1、先来先服务调度算法FCFS
一种最简单的调度算法,按先后顺序进行调度。既可用于作业调度,也可用于进程调度。
v 按照作业提交,或进程变为就绪状态的先后次序分派CPU;
v 新作业只有当当前作业或进程执行完或阻塞才获得CPU运行
v 被唤醒的作业或进程不立即恢复执行,通常等到当前作业或进程出让CPU。
(所以,默认即是非抢占方式)
优点:
v 通过上表可见采用SJF/SPF算法,平均周转时间、平均带权周转时间都有明显改善。SJF/SPF调度算法能有效的降低作业的平均等待时间,提高系统吞吐量。
不足:
1.
对短作业有利,但同时造成了对长作业的不利。
2.由于作业(进程)的长短含主观因素,不一定能真正做到短作业优先。
3.未考虑作业的紧迫程度,因而不能保证紧迫性作业(进程)的及时处理。
- 高优先权优先调度算法HPF
- 分两种方式:
v 非抢占式优先权算法
v 抢占式优先权算法 关键点:新作业产生时
2)优先权的类型
v 静态优先权:创建进程时确定,整个运行期间保持不变。一般利用某一范围的一个整数来表示,又称为优先数。
v 动态优先权:创建进程时赋予的优先权可随进程的推进或随其等待时间的增加而改变。
3)高响应比优先调度算法HRRN
v 短作业优先算法是一种比较好的算法(相当于根据作业长度设定的静态优先权算法),适用于短作业较多的批处理系统中,其主要不足是长作业的运行得不到保证。
v HRRN为每个作业引入动态优先权,使作业的优先级随着等待时间的增加而以速率a提高:
优先权 =(等待时间+要求服务时间)/要求服务时间
= 响应时间 / 要求服务时间
v 作业A先运行20分钟,作业B由于优先级高抢占运行,(此时A中止)由于只允许两道批处理,所以直到B运行完毕后,才能调度下一个作业;
v B运行完毕后,按照短作业优先的方式,将D调入内存,由于D的优先级低于A,所以此时A继续运行,D等待;
v 待A运行完毕之后,将C调入内存,由于C的优先级高,所以C运行,D继续等待,直到C运行完毕后,D才运行,直至结束。
三、实时调度
- 实现实时调度的基本条件
1)提供必要的信息
为了实现实时调度,系统应向调度程序提供有关任务的下述信息:
v 就绪时间。该任务成为就绪状态的时间。
v 开始截止时间、完成截止时间。
v 处理时间。从开始执行到完成所需时间。
v 资源要求。任务执行时所需的一组资源。
v 优先级。根据任务性质赋予不同优先级。
2)系统处理能力足够强
处理能力不足可能会出现某些实时任务不能得到及时处理,导致难以预料的后果。
如:
系统中有M个周期性的硬实时任务,处理时间为Ci,周期时间表示为Pi,
3)采用抢占式调度机制
v 硬实时任务:广泛采用抢占机制。
v 小的实时系统:如能预知任务的开始截止时间,为简化调度程序和对任务调度时所花费的系统开销,可采用非抢占调度机制,
- 实时调度算法的分类
非抢占式轮转调度算法。常用于工业生产的群控系统中,要求不太严格。
非抢占式优先调度算法。要求相对严格,根据任务的优先级安排等待位置。可用于有一定要求的实时控制系统中。(精心设置可获得百ms级的响应时间)