4.1 分级调度
操作系统根据调度对象的不同或调度性质的差异,一般采用分级调度的方法实现处理机的有效分配
作业调度 | 高级调度或宏观调度 |
按照某种算法从后备作业队列中选择一个或多个作业装入内存 | |
在作业运行结束后做善后处理 | |
完成作业调度功能的程序称为作业调度程序 |
交换调度 | 中级调度 |
功能是在内、外存间进行信息交换 | |
实现虚拟存储管理 |
进程调度 | 低级调度或微观调度 |
它协调和控制各个进程对处理机的使用 | |
相应的进程调度程序称为分派程序或低级调度程序 |
线程调度 | 低级调度或微观调度 |
用户级线程和核心级线程的调度方式是不同的 | |
用户级线程由线程库进行管理和调度,称为进程局部调度 | |
核心级线程则由系统内核来调度,称为系统全局调度 |
4.2 作业调度和进程调度
4.2.1 作业调度
1、作业调度的功能
作业调度主要是完成作业从后备状态转换到运行状态和从运行状态转换到完成状态
作业调度完成的主要功能 | 1、记录系统中的各作业的状况 |
2、选择作业 | |
3、分配资源 | |
4、为作业创建进程 | |
5、善后处理 |
作业调度的目标 | 1、公平合理 |
2、高的利用率 | |
3、执行尽可能多的作业 | |
4、有快的响应时间 |
4.2.2 进程调度
进程调度解决的问题:
选择哪个进程占有处理机、何时进行占有、以何种方式进行占有
进程调度的功能 | 1、记录系统中所有进程的有关信息 |
2、确定处理机的分配原则 | |
3、分配处理机 | |
4、切换进程上下文 | |
5、回收处理机 |
进程调度的方式 | 1、非抢占式(也称为不可剥夺方式) |
2、抢占式(也称为可剥夺方式) |
进程调度的时机 | ||
引起进程调度的主要原因 | 正在运行的进程正常执行结束 | |
运行中的进程进行I/O操作后被阻塞 | ||
进程因执行某种原语操作将自己阻塞进入阻塞 | ||
在执行完系统调用后,选择一个用户进程进程执行 | ||
在可剥夺方式下,就绪队列中存在更高优先级的进程 |
进程调度的性能评价
一般来说从定量和定性两方面对进程调度的性能进行衡量和评价
在定量方面主要包括:
(1)CPU的利用率 | CPU的利用率=CPU的有效时间/总时间 |
(2)进程在就绪队列中的等待时间与执行时间之比
在定性衡量方面,主要考虑:
(1)可靠性
(2)简洁性
4.3 调度算法
常用的进程调度算法 | 先来先服务调度算法 |
优先级调度算法 | |
轮转调度算法 | |
分级(或多级)轮转调度算法 | |
分级反馈轮转调度算法 | |
最短作业(进程)优先算法 | |
响应比高者优先调度算法 |
4.3.1 先来先服务调度算法FCFS | 适合:作业调度和进程调度 |
对作业:先进入后备队列的作业可以优先获得调度 | |
对进程:先进入就绪队列的进程可优先被调度 |
4.3.2 优先级调度算法PS | 适合:作业调度和进程调度 |
基本思想:按照某种准则为进程(作业)确定一个优先级,以表示该进程(作业)享有优先被调度的权利,优先级高者被优先的调度 | |
算法的核心:如何确定进程(作业)的优先级 | |
算法分类:抢占式和非抢占式 | |
确定优先级的方法:静态和动态法 | |
作业的静态优先级的确定: (1)按其类型确定; (2)由用户根据自己的实际情况给定; (3)按照作业要求的资源情况确当。 | |
作业的类型一般可分为:
(1)I/O繁忙型作业;
(2)CPU繁忙型作业;
(3)I/O与CPU均衡型作业;
(4)一般型作业等。
作业一般来说没有动态优先级。
进程静态优先级的确定:
(1)按其类型确定;
(2)将进程所属作业的静态优先级直接作为进程的优先级。
进程的动态优先级的确定:
(1)根据进程占有CPU时间确定
(2)根据进程等待CPU时间确定
4.3.3 轮转调度算法RR | 适用:进程调度 |
基本思想:将CPU的处理时间分成固定大小的时间片,将CPU轮流分配给各个进程,为各进程提供服务。 如果一个进程被进程调度程序选中后用完了系统所规定的时间片而未执行结束,则它要释放CPU并把自己插入到某个就绪队列的末尾,等待下一次调度。同样位于某个阻塞队列中的进程因被唤醒而插入到就绪队列的末尾等待CPU。 | |
轮转调度算法的分类 根据每一轮的时间片是否可变分为: (1)固定周期轮转法; (2)可变周期轮转法; 轮转调度法特别适合分时系统使用 在该方法中时间片长度的选取非常重要 | |
时间片长度的选择
根据系统对响应时间的要求R和就绪队列中所允许的最大进程数N来确定的。它可表示为:q=R/N
加入到就绪队列的进程有三种情况:
(1)分给它的时间片用完,但进程还未完成。
(2)当阻塞解除之后再回到就绪队列。
(3)新创建进程进入就绪队列。
4.3.4 分级(或多级)轮转调度算法 | 基本思想:根据进程性质或优先级的不同将处于就绪状态的进程组成两个或多个就绪队列,先调度高优先级就绪队列中的进程,在调度低优先级就绪队列中的进程。 |
优缺点:实现简单,调度程序开销少,但不灵活。 |
4.3.5 分级反馈轮转调度算法 | 该算法允许进程在不同的就绪队列间移送 |
基本思想: (1)根据对处理器的需求及占有情况把进程放入不同的就绪队列。 (2)如果某个进程占用了太多的处理器时间,降低该进程的优先级,插入较低优先级队列中。 (3)将长时间等待于较低优先级队列中进程取出赋予较高的优先级,插入较高优先级队列中 | |
分级反馈轮转调度算法性能取决于下列因素: | |
(1)队列个数 | |
(2)每个队列的调度算法 | |
(3)决定何时使进程升入到更高优先级队列的方法。 | |
(4)决定何时将进程降入到更低优先级队列的方法 | |
(5)当进程需要服务时决定进程进入到哪一个队列中的方法 |
4.3.6 最短作业(进程)优先算法SJF | 基本思想:短作业或短进程优先进行调度CPU。 |
特点:系统的吞吐量大,但处理时间长的作业可能长时间得不到服务 |
4.3.7 响应比高者优先调度算法 | 该方法以响应比作为作业调度的优先级,响应比越高,作业得到调度的优先级就越高 |
响应比的定义Rp如下: | |
Rp=(等待时间+要求执行时间)/要求执行时间 | |
优点:即考虑了作业到达的先后顺序 也适当的照顾了短作业 | |
缺点:每次要调度作业时都要计算响应比 增加一定的系统开销 |
4.4 选择调度方式和评价调度算法的若干准则
评价处理机的调度算法准则包括如下几个方面:
(1)CPU的利用率
(2)系统吞吐率
(3)周转时间
(4)带权周转时间
(5)等待时间
(6)响应时间
(7)公平
(8)对资源的均衡使用
4.5 实时调度算法
4.5.1 实时系统的特点
最大的特点:实时性
实时操作系统处理的任务分类:
根据对延迟的约束要求可分为:
(1)硬实时任务:如果系统对任务的响应时间超出了给定的时限,将会引起灾难性后果
(2)软实时任务:允许系统对任务的响应具有一定的延迟
根据任务发生的时间特征实时任务分为:
(1)周期性任务
(2)非周期性任务
实时操作系统基本特征 | (1)支持多线程和可抢占式调度 |
(2)有限等待时间和响应时间 | |
(3)可靠性高,健壮性强 | |
(4)操作系统的行为应该被用户所了解和掌握 |
4.5.2 实现实时调度应具备的条件
1、提供必要的信息
(1)就绪时间
(2)开始时限和完成时限
(3)处理时间
(4)资源要求
(5)优先级
2、系统处理能力强
3、采用抢占式调度机制
4具有快速任务切换机制
对外部中断的快速响应能力
快速的任务调度能力
4.5.3 实时调度算法的分类
按实时任务性质分类 | 硬实时调度算法 |
软实时调度算法 |
按调度方式分类 | 非抢占调度算法 |
抢占调度算法 |
按因调度程序调度时间 | 静态调度算法 |
动态调度算法 |
在多处理环境下 | 集中式调度 |
分布式调度 |
按调度方式的不同对调度算法进行的分类:
非抢占式调度算法 | 轮转调度算法 |
优先调度算法 |
抢占式优先级调度算法 | 基于时钟中断 |
立即抢占
|