cpu调度概述
- 长程和短程调度
- 调度队列
- 中程调度
- cpu脉冲周期
- cpu调度过程
- cpu调度方式和时机
- cpu调度准度
1长程调度
- 又称作业调度,高级调度
- 新建状态转换到就绪状态
- 由调度程序选择
- 控制多道程序的“道/度”
2短程调度
又称cpu调度,低级调度。
调度程序选择下一个执行进程。
(将一个就绪的进程投入到运行)
对两者进行比较
3中程调度-交换
中程调度又称:交换
将进程在内存和外存间换进换出
目的:节省内存空间
进程调度队列
就绪队列-在主内存中处于就绪状态并等待执行的所有进程集合
设备队列-等待某一I/O设备的进程队列
进程的执行过程实际上就是进程在各种队列之间的迁移
4cpu调度过程
- 调度程序(scheduler)
(根据某种策略选择一个就绪进程,一个cpu同时只能运行一个进程) - 分派程序(Dispatcher)
(负责把CPU的控制权转交给CPU调度程序)
(切换上下文)
(切换到用户态)
(跳转到用户程序的适当位置并重新运行之)
-分派延迟:分派程序终止一个进程的运行并启动另一个进程运行所花的时间。
5调度方式
-
非抢占调度
一旦把cpu分给某进程后,系统不可以抢占已分配的cpu并分配给其他进程。
只有进程自愿释放CPU,才可以把cpu分配给其他进程。
优点:易实现,调度开销小,适合批处理系统。
缺点:响应时间长,不适合交互式系统。 -
抢占式调度
调度程序可根据某种原则暂停某个正在执行的进程,将已分配给它的cpu重新分配给另一个进程。
可防治单一进程长时间独占cpu
系统开销大
6cpu调度时机
cpu调度可能发生在当一个进程:
从运行转到等待(非抢占式)
从运行转到就绪(抢占)
从等待转到就绪(抢占)
从新建转到就绪(抢占)
终止运行(非抢占式)
7调度准则-优化方法
- 最大的cpu利用率
- 最大的吞吐量
- 最短的周转时间
- 最短的等待时间
- 最短的响应时间
8其他
进程从提交到运行结束的全部时间称为周转时间。
分配程序的工作包括3点
1上下文切换
2负责把cpu的控制权转交cpu调度程序
3切换到用户态,跳转到用户程序的适当位置并重新运行。
Q:抢占式调度和非抢占式调度各适用在什么场景下?
A:抢占式适用于交互式系统,非抢占式适用于批处理系统。
Q:响应时间和等待时间之间存在什么关系?
A:响应时间:从进程提交到首次运行的时间段。 等待时间:进程等待调度(不运行)的时间片总和。响应时间小于等于等待时间。
调度算法-批处理系统调度
1⃣️先来先服务调度算法
该算法的就绪队列是按照进程的到达时间排列
优缺点:
特点:实现简单,可以使用FIFO队列实现
非抢占,公平。
当一个长进程后面的多个短进程,让长进程先执行,会让后面的短进程等待较长时间,从而导致cpu和设备利用率降低,护航效果。
2⃣️短作业优先调度算法
算法介绍
该算法的就绪队列是按照进程的下一个cpu的脉冲时间排列
算法举例
下一个cpu区间长度的预测
其他
FCFS:
优点: 1.实现简单,可以用FIFO队列实现 2.非抢占式 3.公平
缺点:当一个长进程的后面有多个短进程时,让长进程先执行会让后面的短进程等待很长时间,从而导致CPU和设备利用率低
SJF:
优点:对一个组指定的进程而言,SJF给出最短的平均等待时间
缺点:由于优先级算法,当就绪队列不断有短进程进入,从而导致长进程无法获得CPU时间,也就是饥饿问题。
SJF算法中下一个时间脉冲预测方法。
指数估算法:通过先前的CPU区间长度及其指数平均进行预测。
调度算法-进程调度
1⃣️优先级调度算法
-
调度策略:基于进程的紧迫程度,由外部赋予每个进程相应的优先级,cpu分配给最高优先级的进程
(每个进程都有一个优先数,优先数为整数)
(默认:小数具有高优先级)
(目前主流的操作系统调度算法)
分为抢占式和非抢占式 -
算法举例
非抢占式:
-
优先级讨论
优先级可静态不变,也可动态调整
优先级类型:
1⃣️静态优先级:
创建进程时确定,在运行期间不变
简单易行,系统开销小
不够精确,可能会出现饥饿问题
2⃣️动态优先级:
进程创建时的优先级随进程推进或等待时间增加而改变。
高响应比优先调度算法(重点)
-
算法优缺点
优点:实现简单,考虑了进程的紧迫程度
灵活,可模拟其他算法
缺点:**饥饿问题—**低优先级的进程可能永远得不到运行
解决:老化—视进程等待时间的延长提高它的优先数。
2⃣️时间片轮转调度算法——PR算法(能够获得最短响应时间的调度算法)
-
算法介绍
-
算法举例
-
时间片讨论
【其他】
存在饥饿问题的调度算法有
- 短作业优先调度算法
- 优先数调度算法
补充:
1:时间片越小,RR算法的平均响应时间就越小。
Q:什么调度算法的平均周转时间最短?
Q:为什么说优先数算法是最灵活的调度算法?
A:优先数是自己分配的,如果按照就绪时间分配优先级那么就是FCFS算法,如果按照时间长度来分配就是SJF算法,依据其他的成分来分配优先数,也可以模拟其他的算法。
Q:时间片大小对RR算法性能的影响。
A:时间片太大,就变成了FCFS算法,时间片太小,就会增加系统开销,所以要选择适当的时间片大小。
调度算法
1⃣️多级队列调度
原因:因为以上提及算法有局限性,如
SJF有利于短进程不利于长进程
RR系统开销大
所有进程采用同一策略,不合理
【交互进程需要短的响应时间,批处理进程需要短的等待时间】
介绍多级队列调度:(MLQ)
2⃣️多级反馈队列调度(MLFQ)
很好的解决了cpu调度问题
3⃣️多处理器调度
具有亲和性:不会频繁迁移
【其他】
系统开销最小的调度算法:先来先服务调度算法
在多级队列调度算法中,多个不同队列能采用不相同的调度算法。
Q:多处理器调度中单队列和多队列调度方法的比较。
A:单队列:
优点:容易从单核调度算法推广到多核/多处理器,实现简单,负载均衡;
缺点:不具有亲和性,加锁问题;多队列:优:亲和性好,不需要加锁;缺:负载不均衡
Q:某个进程一旦被唤醒就能投入运行,系统可能为:抢占调度方式,P的优先级高于当前运行的进程。
【进程被唤醒后,该进程的状态就变为就绪态】
Q:
Q:
【时间片轮转算法不适合作业调度,在分时操作系统中经常使用】