cpu调度

cpu调度概述
  1. 长程和短程调度
  2. 调度队列
  3. 中程调度
  4. cpu脉冲周期
  5. cpu调度过程
  6. cpu调度方式和时机
  7. cpu调度准度

1长程调度

  • 又称作业调度,高级调度
  • 新建状态转换到就绪状态
  • 由调度程序选择
  • 控制多道程序的“道/度”
  • 在这里插入图片描述

2短程调度
又称cpu调度,低级调度。
调度程序选择下一个执行进程。
(将一个就绪的进程投入到运行)
在这里插入图片描述

对两者进行比较
在这里插入图片描述

3中程调度-交换
中程调度又称:交换
将进程在内存和外存间换进换出
目的:节省内存空间

进程调度队列
就绪队列-在主内存中处于就绪状态并等待执行的所有进程集合
设备队列-等待某一I/O设备的进程队列
进程的执行过程实际上就是进程在各种队列之间的迁移

在这里插入图片描述

4cpu调度过程

  • 调度程序(scheduler)
    (根据某种策略选择一个就绪进程,一个cpu同时只能运行一个进程)
  • 分派程序(Dispatcher)
    (负责把CPU的控制权转交给CPU调度程序)
    (切换上下文)
    (切换到用户态)
    (跳转到用户程序的适当位置并重新运行之)
    -分派延迟:分派程序终止一个进程的运行并启动另一个进程运行所花的时间。

5调度方式

  1. 非抢占调度
    一旦把cpu分给某进程后,系统不可以抢占已分配的cpu并分配给其他进程。
    只有进程自愿释放CPU,才可以把cpu分配给其他进程。
    优点:易实现,调度开销小,适合批处理系统。
    缺点:响应时间长,不适合交互式系统。

  2. 抢占式调度
    调度程序可根据某种原则暂停某个正在执行的进程,将已分配给它的cpu重新分配给另一个进程。
    可防治单一进程长时间独占cpu
    系统开销大

在这里插入图片描述

6cpu调度时机
cpu调度可能发生在当一个进程:
从运行转到等待(非抢占式)
从运行转到就绪(抢占)
从等待转到就绪(抢占)
从新建转到就绪(抢占)
终止运行(非抢占式)

7调度准则-优化方法

  1. 最大的cpu利用率
  2. 最大的吞吐量
  3. 最短的周转时间
  4. 最短的等待时间
  5. 最短的响应时间

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⃣️优先级调度算法

  1. 调度策略:基于进程的紧迫程度,由外部赋予每个进程相应的优先级,cpu分配给最高优先级的进程
    (每个进程都有一个优先数,优先数为整数)
    (默认:小数具有高优先级)
    (目前主流的操作系统调度算法)
    分为抢占式和非抢占式

  2. 算法举例
    非抢占式:
    在这里插入图片描述

  3. 优先级讨论
    优先级可静态不变,也可动态调整
    优先级类型:
    1⃣️静态优先级:
    创建进程时确定,在运行期间不变
    简单易行,系统开销小
    不够精确,可能会出现饥饿问题
    2⃣️动态优先级:
    进程创建时的优先级随进程推进或等待时间增加而改变。
    在这里插入图片描述
    高响应比优先调度算法(重点)
    在这里插入图片描述

  4. 算法优缺点
    优点:实现简单,考虑了进程的紧迫程度
    灵活,可模拟其他算法
    缺点:**饥饿问题—**低优先级的进程可能永远得不到运行
    解决:老化—视进程等待时间的延长提高它的优先数。

2⃣️时间片轮转调度算法——PR算法(能够获得最短响应时间的调度算法)

  1. 算法介绍
    在这里插入图片描述

  2. 算法举例
    在这里插入图片描述

  3. 时间片讨论
    在这里插入图片描述

【其他】
存在饥饿问题的调度算法有

  1. 短作业优先调度算法
  2. 优先数调度算法

补充:
1:时间片越小,RR算法的平均响应时间就越小。
Q:什么调度算法的平均周转时间最短?

Q:为什么说优先数算法是最灵活的调度算法?
A:优先数是自己分配的,如果按照就绪时间分配优先级那么就是FCFS算法,如果按照时间长度来分配就是SJF算法,依据其他的成分来分配优先数,也可以模拟其他的算法。

Q:时间片大小对RR算法性能的影响。
A:时间片太大,就变成了FCFS算法,时间片太小,就会增加系统开销,所以要选择适当的时间片大小。

调度算法

1⃣️多级队列调度
原因:因为以上提及算法有局限性,如
SJF有利于短进程不利于长进程
RR系统开销大
所有进程采用同一策略,不合理
【交互进程需要短的响应时间,批处理进程需要短的等待时间

介绍多级队列调度:(MLQ)
在这里插入图片描述
在这里插入图片描述

2⃣️多级反馈队列调度(MLFQ)
在这里插入图片描述
很好的解决了cpu调度问题
在这里插入图片描述

3⃣️多处理器调度
在这里插入图片描述
具有亲和性:不会频繁迁移
在这里插入图片描述
MQMP

【其他】
系统开销最小的调度算法:先来先服务调度算法

在多级队列调度算法中,多个不同队列能采用不相同的调度算法。

Q:多处理器调度中单队列和多队列调度方法的比较。
A:单队列:
优点:容易从单核调度算法推广到多核/多处理器,实现简单,负载均衡;
缺点:不具有亲和性,加锁问题;多队列:优:亲和性好,不需要加锁;缺:负载不均衡

Q:某个进程一旦被唤醒就能投入运行,系统可能为:抢占调度方式,P的优先级高于当前运行的进程。
【进程被唤醒后,该进程的状态就变为就绪态

Q:
Q:
【时间片轮转算法不适合作业调度,在分时操作系统中经常使用】

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值