操作系统-CPU调度

概念、调度准则、先来先服务,短进程优先和最高响应比优先调度算法、时间片轮转,多级反馈队列,公平共享调度算法和ucore调度框架、实时调度和多处理器调度、优先级反置
在这里插入图片描述

背景

  • 上下文切换
    • 切换任务,保存当前进程的PCB,读取下一个进程的PCB。
调度原则
  • 调度策略
    • 抢占式
      • 调度程序在中断被相应后执行。
      • 运行进程可以被打断,CPU执行其他进程。
    • 非抢占式
      • 调度程序必须等待事件结束。
      • 不能被切换,类似串行,必须等待运行进程结束才能执行。
  • 程序执行模型
    • 程序在CPU突发和IO操作
    • IO操作的时候,不占用CPU资源,所以此时CPU占用率很低。此时应该调度CPU,使其一直处于利用率较高状态,吞吐率高。
  • 比较调度算法准则
    • CPU使用率
    • 吞吐量:在单位时间内完成的进程数量。
    • 等待时间:进程在就绪队列中的总时间
    • 周转时间:进程从初始化到结束,包括等待时间,所花费的时间。
    • 响应时间
      例子:1水龙头出水和2水井灌溉,1响应时间短,2吞吐率高,但有延时。响应时间和吞吐量是矛盾的。
  • 原则
    在这里插入图片描述
  • 吞吐量 vs 延迟
    • 服务器和桌面系统,linux采用不同的策略,前者更看重吞吐量,后者看重响应速度。
  • 公平性
    • 每个进程都能分到大致相同的时间片。

调度算法

实时调度

在这里插入图片描述

  • 先来先服务

    • 优点简单
    • 缺点: 平均等待时间波动大{非抢占式},花费少的任务可能排在后面。
  • 短任务优先
    在这里插入图片描述

    • 可以是抢占式或者不可抢占式
      • 比如w进程执行了1s,剩余8s,这时候来了一个进程a,执行时间是5s,剩余时间小于w,不抢占式是将a插入阻塞队列,等w执行完再执行a,抢占式是将w由运行态转为就绪态,挂起到就绪队列,执行a。
      • SRT:(最短剩余时间 short remaining time) 可抢占。
      • SPN:不可抢占
    • 优点:最优平均等待时间要好于先来先服务算法。因为长执行时间在前面,后面的短执行时间等待时间就变长了。所以平均等待时间短。
      在这里插入图片描述
    • 缺点:1. 可能导致饥饿(如果操作系统执行过程中不断有短任务插入,插在长任务前,长任务就一直得不到执行,违反了公平性。2.需要预知程序执行时间(一般情况不知道程序执行时间)
    • 时间预估在这里插入图片描述
      根据以往单位时间内进程的执行时间,推断将来执行时间。然后根据执行时间进行排序。 在这里插入图片描述
  • 最高响应比优先
    R = w+s / s(w:waiting time 等待时间;s:service time 执行时间),选择R值最高的进程执行。

    • 关注等待时间长的进程,防止无限期推迟
    • 短任务只考虑执行时间,最高响应比既考虑了执行时间,又考虑了等待时间。
    • 缺点:1.仍旧需要预估执行时间。2.不支持抢占,同样来了一个更高响应比,造成低响应比饥饿,但相对于短任务优先更多的考虑了等待时间。
  • 轮询调度算法
    各个进程轮流调用CPU,获取时间片执行。

    • 好处:公平性提升
    • 花销:额外的上下文切换
    • 时间片设置过大或者过小都会有问题
      • 依据经验,linux系统0.001s,目标是使上下文切换时间占1%,其余99%用于进程执行。
  • 多级反馈队列

    • 多级队列:根据进程优先级进行排队,前台进程优先级高,后台进程优先级低
    • 多级反馈队列:
      • 有些任务随着执行时间延长,优先级降低-CPU密集型
      • 有些任务随着执行时间延长,优先级增加-IO密集型(交互型操作)
      • 比如交互进程,先开始优先级高,随着时间,开始IO阻塞,这时候提高他的优先级,然后进行CPU密集型操作,再去降低它的优先级。
        在这里插入图片描述
  • FFS公平共享调度算法
    用户级别对进程公平性进行提升(对于用户群组为了保证每个用户的进程都能得到执行)

在这里插入图片描述

实时调度

上面讲的是通用的调度算法,本节讲的针对的具体对象不同。

  • 硬实时系统:特定时间内,必须完成重要的任务。(控制水坝)
  • 软实时系统:重要的进程尽量完成,非必须。(观看视频掉帧)
    在这里插入图片描述
    工作单元:Released相当于进程就绪态,execution time相当于进程的执行时间,相对截止,因为工作是一个单元+一个单元,所以这是单元或者阶段任务结束时间。绝对终止,就是任务彻底执行完的时间。
    在这里插入图片描述
    如图:周期p=5,执行时间应该0<t<5,U=e/p
  • 硬时限:保证必需在最后时限完成,即在执行周期内必需完成。
  • 软时限:尽最大努力保证,尽量在最后时限完成。
  • 静态优先级调度:根据优先级选择任务去执行,在执行前任务优先级就确定了。
  • 动态优先级调度:任务优先级随着任务执行过程中,优先级动态变化,在不同时刻。
    在这里插入图片描述
    如图两种实时调度算法。

多处理器调度

通用调度和实时调度都是针对一个cpu,本节讨论多CPU情况。须解决问题:1.进程分配给哪个CPU。2.多个CPU如何做到负载均衡。
在这里插入图片描述

优先级反转

在这里插入图片描述
如图:由于共享资源,导致T1(优先级高)需要等待T3执行,但是T2,优先级高于T3,所以T2先于T3执行,所以T2先于T1执行,优先级进行了反转。

  • 解决办法:低优先级任务继承高优先级任务的优先级
    在这里插入图片描述
    导致T2无法抢占T3执行,也就无法先于T1执行了。
    在这里插入图片描述
    优先级天花板,使得占有资源的进程优先级最高,能较快的执行完成,从而使得其他进程不会等待更多时间。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值