操作系统-课堂笔记-实时调度(南航)

文章目录

  • 实时调度(续CPU调度)
    • 什么是实时?
    • 实时系统可调度
    • 实时调度算法
      • 非抢占式调度算法
      • 抢占式算法
    • 介绍两种常用的实时调度算法
      • 最早截止时间优先
      • 最低松弛度优先-优先级调度的一种

实时调度(续CPU调度)

什么是实时?

首先讲一下实时的定义和要求:

  • 实时系统指系统的计算正确性不仅仅取决于计算的逻辑正确性,还却决于产生结果的时间。如果未满足系统的时间约束,则认为系统失效,也可认为没有得到正确的计算结果。

以Win10为例:

  • 我们笔记本现在的CPU已经很强大了,为什么这么说呢?因为CPU利用率经常很低,最起码日常在10%以下,后台运行网易云音乐+TIM:
    在这里插入图片描述
  • 我们在日常使用win10的时候,误以为win10也是实时操作系统,但是如果这种情况呢? 某一天你在玩大型游戏(超大型的那种,笔者不玩电脑端游戏,举不出例子来),然后有人用QQ给你开视频,你就alt+tab切到QQ,这时候你会发现由于后台运行着游戏,所以用个QQ都极其卡顿。
  • 你的朋友说要一个文件,你就打开文件管理器去找文件,然后发现文件管理器无响应,等了30s,只能强行关闭了。
  • 以上场景有可能发生,那么你现在还认为Win10是实时操作系统吗?

再举个例子-汽车安全气囊:

  • 中高档汽车中有安全气囊
  • 当报告车辆碰撞的传感器中断CPU后,操作系统应该快速展开气囊
  • 此时操作系统不管有多重要的任务,也比不上展开安全气囊重要,晚一秒钟展开气囊可能就会出现生命危险
  • 这就是一个典型的必须使用实时的系统

实时系统的分类:硬实时系统、软实时系统

硬实时系统,上述安全气囊就是硬实时系统:

  • 硬实时系统指要有确保的最坏情况下的服务时间(最坏在碰撞0.1s后展开安全气囊),即对于事件的响应时间的截止期限无论如何都必须得到满足(硬性的,必须得在一定时间内展开安全气囊)
  • “硬”一字可以理解成死板的意思,硬性规定必须在截止期限内搞定
  • 其实还有很多例子,硬实时在航空航天领域很常见(笔者猜测)

软实时系统:

  • 软实时系统像是硬实时系统的阉割版本,要求不那么高
  • 举例:数字电视机顶盒,其需要处理视频流,如果丢失视频帧显然会造成视频品质变差,但是如果做下简单的抖动处理,那么丢失几个视频帧也能接受。
  • 事实上我们在用机顶盒看电视的时候,有时候会出现丢帧情况的(一卡一卡,一跳一跳的)
  • 软实时系统指:从统计的角度看,一个任务如果能够得到有确保的处理时间,那么也能在截止期限到来之前得到处理(硬实时的一面),但是违反截止期限并不会带来致命的错误(硬实时被阉割的一面)

参考博客

实时系统可调度

举个例子:
加入系统中有6个硬实时任务,他们的周期时间都是50ms(即每隔50ms必须被执行一次,否则就认为系统是失效的或系统不可调度),而每次处理时间为10ms。

  • 以单核系统来说
  • 很显然,该系统是不可调度的,6个硬实时任务,每个执行10ms,就已经60ms了,60ms/50ms>1,显然单核是不可调度的。

根据上述例子引出实时系统可调度的定义:
操作系统-课堂笔记-实时调度(南航)_第1张图片

实时调度算法

实时系统的关键还是要看调度算法。

实时调度算法的分类:

  • 按任务性质分类:硬实时调度算法、软实时调度算法
  • 按调度方式分类:非抢占式调度、抢占式调度
  • 按调度时间分类:静态调度算法、动态调度算法

非抢占式调度算法

所谓非抢占式就是等待当前任务完成再执行需要运行的程序。

下面举例说明:
操作系统-课堂笔记-实时调度(南航)_第2张图片
在执行进程1的时候收到要求:实时进程想要执行,进程1说:不好意思,领导要求(OS)我们(进程1-n)必须执行完才行,一直执行完进程n,实时进程才得到执行。

操作系统-课堂笔记-实时调度(南航)_第3张图片
这个算法比上面高级一点,当前进程执行的时候收到要求:实时进程想要执行。当前进程说:不好意思,领导要求我执行完才行。实时进程说:好的好的,我插个队,直接在你后面(优先级高)。

抢占式算法

所谓抢占式就是即使当前任务没有完成,我也要将当前任务强行终止来执行需要调度的程序。

CPU调度博客中讲到了轮转调度,其中时间片抢占是当前操作系统所采用的方式。
操作系统-课堂笔记-实时调度(南航)_第4张图片
当前进程执行中收到通知:实时进程要执行。当前进程说:稍等,领导说我可以给你让位置,但是必须把当前10ms执行完毕才行。10ms到了,时钟中断来临,实时进程得到执行。

还有一种更狠的方式:
操作系统-课堂笔记-实时调度(南航)_第5张图片
突然一把手枪顶在了当前进程头上,实时进程说,你收拾下(保护上下文)退下吧。当前进程马上怂了,收拾了一下马上溜了,实时进程很快得到执行。

介绍两种常用的实时调度算法

上面只是讲解了抢占式和非抢占式的基本原理,下面介绍两种常用算法

最早截止时间优先

Earliest Deadline First简称为EDF算法。

  • 根据任务的最迟开始时间确定优先级,该时间越早优先级越高
  • 系统中保持一个实时任务优先级就绪队列,调度程序选择队首任务分配CPU
  • 可采取抢占式和非抢占式调度

看一个示意图:
操作系统-课堂笔记-实时调度(南航)_第6张图片

最低松弛度优先-优先级调度的一种

Least Laxity First简称为LLF算法

  • 根据任务紧急(或松弛)的程序来确定任务的优先级,任务的紧急程度越高,为该任务所赋予的优先级就越高,以使之优先执行。
  • 系统中保持一个实时任务优先级就绪队列,调度程序选择队首任务分配CPU
    操作系统-课堂笔记-实时调度(南航)_第7张图片

如果觉得写的不错,对读者有帮助,可以给笔者点个赞,鼓励一下哦~

本系列博客地址
下一篇-死锁

你可能感兴趣的:(Linux,南航-操作系统-课堂笔记)