实时系统中的MCS模式和Sporadic Server算法

在实时系统中,所有的任务分成了两类:

  • 周期任务: 有固定的到达时间
  • 非周期任务:没有固定的到达时间

这两类任务再根据deadline的类型又可以分成两类,不过,这篇论文里周期任务全部假设为 hard deadline,所以一共可以分成三类任务。

deadline的分类:
  • hard deadline:如果达到该deadline对整个系统接下来的操作有关键影响,则被认为是hard deadline。
  • soft deadline:最好能满足,不满足的时候对系统没有关键影响。
periodic task假设条件:
  • 每一个任务都有已知的最差执行时间
  • 所有的周期任务都是 hard deadline
  • 每一个周期任务的执行时间都是固定的
  • 每一个周期任务的 deadline = 当前周期的终止时刻

Schedulable utilization:调度利用率,低于或等于该指标时,所有的hard deadline 都可以被满足。该指标越高,说明算法的适用性更强

调度稳定性:在过载的情况下,依然能满足关键任务(periodic task和 sporadic task)的deadline,其他任务的deadline可以不被满足

评价一个实时系统中调度算法优劣的两个指标:
  1. 能否保证hard deadline被满足
  2. 给soft deadline任务提供的平均响应时间

Scheduling periodic tasks

rate monotonic
  • 该算法是基于一种固定优先级的调度算法,优先级根据 periodic task 的周期来设定。 周期较短的 优先级就会相应高一些。
  • 该算法是 real-time system 整个调度算法的基础,后续的算法都是以它为基石,再做优化。
  • 允许抢占

Scheduling aperiodic tasks

scheduling soft deadline aperiodic tasks

background processing
  • 处理机是 idle 状态时(没有正在处理的periodic task,也没有待办的 periodic task),才会去处理aperiodic task
  • 如果periodic task很多,那么用该算法频率就会降低缺点:对待 aperiodic task 的响应时间会比较久。

总结: 先处理完 periodic task 再处理 aperiodic task,非周期任务可以被任意地延误

在这里插入图片描述

polling task
  • polling tasks 会创建一个 periodic task(server)专门用来处理 aperiodic tasks。因此该 task 会循环地启动,来处理待办的 aperiodic task。
  • 该server地优先级取决于它本身的周期
  • 如果启动这个server时,没有待处理的aperiodic任务,那么该task 被挂起,直到下一个周期再次被启动。
  • 没有处理aperiodic task时,这部分时间就会被用于处理periodic task
  • server中剩余的时间都会被丢弃

总结:和 background processing相比,periodic task 没有了绝对的优先权。不会无限延迟aperiodic task。
缺点:时间要求比较严格

后面迭代出的新的算法针对polling tasks算法无法保留带宽的特性,而做出了改进。所以后面的算法都属于bandwidth preserving algorithm

deferrable server
  • DS中创建的server一般为高优先级
  • DS会为aperiodic task保留一个周期的响应时间,即使aperiodic task出现晚于server,但是只要还在这个周期内,该aperiodic task请求都可以被响应。
  • 如果处理aperiodic task后还有剩余处理时间,会为其保留至周期末。
  • 每一个新周期开始时填满server的容量。
  • DS引入了capacity的概念,表示一个周期内server剩余的可处理aperiodic task的时间
  • DS对aperiodic task的提交时间有了更宽的包容,不需要和server在同一时间点出现。

在这里插入图片描述

sporadic server

  • SS算法是对PE算法的一种简化,和DS算法更相似。
  • SS算法不会固定在server的每个周期开始时补满时间,而是基于 aperiodic task被响应的时间 + server period 时确定填充时间。
  • 在一个周期内为其保留和server相同优先级的执行时间。
  • 减少了运行的开销。因为DS算法都会固定每个周期为 server 填充时间,不管这个周期内有没有服务。但是SS只会在aperiodic task被服务后才会填充。也就是说,这部分填充时间的开销不是每个周期都会发生。
  • 补充的时间额度也不是每个周期都补满,而是取决于上一个处于active状态时消耗的时间。
相关参数
  • Ps:当前系统处于的优先级
  • Pi:优先级的表示方式。P1最高
  • Active:Ps >= Pi,则Pi优先级为Active状态
  • Idle:Ps < Pi,则优先级Pi为Idle状态
  • RTi:何时给Pi优先级的server补充时间
  • replenishment:补充多少时间
  1. RTi发生的条件:Pi从idle状态变成active状态时,先检查此时server中是否还剩时间,若剩时间则RTi可生成,否则不生成。
  2. replenishment:在sporadic server变为idle状态时,去检查上个active状态里消耗的时间
sporadic server算法应用于soft deadline aperiodic tasks
<1> high priority

在这里插入图片描述

<2> equal high priority

在这里插入图片描述

<3> medium priority

在这里插入图片描述

server被更高优先级的任务抢占,导致不连续的消耗,但是这并没有让server的优先级变为idle状态,所以可以让不连续的消耗变为连续的补充。

新的问题

一个周期任务如果当下可以执行,就必须执行,如果延迟了执行,可能就会导致该任务最后没有办法满足其deadline,这也是rate monotonic算法的一种规定。DS和SS本身就类似一个周期任务,但是却违反了这项约束:都保留了带宽,并没有在第一时间执行。后面的证明表明SS的补充算法是可以继续保持满足deadeline,所以SS仍然可以被当作一个周期任务处理,而DS则不行。

实例
  • 正常三个周期任务
    在这里插入图片描述

  • DS替换B任务

在这里插入图片描述

  • SS替换B任务

在这里插入图片描述

证明SS = 周期任务

  1. SS可以和周期任务有一样的属性:周期和执行时间
  2. SS在active状态里消耗的时间:
    • 消耗为0
    • 消耗所有
    • 消耗部分

Scheduling sporadic tasks

sporadic task假设条件
  • sporadic task必须有一个最小的 interarrival time——minimum,若没有该限制,任务的hard deadline 无法保证总是被满足
  • minimum等于或大于服务该sporadic task的server的周期
  • sporadic task的deadline等于或大于minimum

server period <= minimum <= hard deadline

如果deadline < minimum,此时再基于rate monotonic算法就不能保证总是满足其deadline

在这里插入图片描述

如果这是把该SS简单看成一个周期为10的周期任务,那么他的优先级就变成最高了,虽然可以避免逾期,但是对资源的要求很高,因为8/10=80%,这是一种很浪费的策略。

这种情况下就要利用 deadline monotonic priority assignment算法重新定义优先级

deadline monotonic priority assignment
  • server的优先级取决于它服务的task的deadline的优先级,而不是server的周期了
  • 其他的周期任务的优先级依然按照其周期排序,不过也可以理解为按deadline排序,因为周期任务的deadline默认等于周期

在这里插入图片描述

总结

在这里插入图片描述


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值