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

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

这两类任务再根据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默认等于周期

总结


实时系统中的MCS模式和Sporadic Server算法相关推荐

  1. SQL Server 2019中的行模式内存授予反馈

    In this article, I'll be exploring another new feature with SQL Server 2019, row mode memory grant f ...

  2. SQL Server Management Studio 查询中使用 SQLCMD 模式

    从 SQL Server 2005 开始,可以在 SQL Server Management Studio 查询编辑器中使用 SQLCMD 模式执行 TSQL.要在查询编辑器中编写或编辑 SQLCMD ...

  3. 在ASP.NET中使用WINDOWS模式登录SQL数据库

    作者:未知   请作者速与本人联系 经常发现有用户使用WINDOWS模式登录SQL SERVER,结果失败,提示: 用户 'KEKC/ASPNET' 登录失败. 说明: 执行当前 Web 请求期间,出 ...

  4. python中引入sql的优点_SQL Server 2017中的Python:增强的数据库内机器学习

    Microsoft SQL Server是一款优秀的关系型数据库管理系统,Python是目前流行的数据科学语言之一,拥有丰富的库生态系统.从SQL Server 2017的CTP 2.0版本开始,可以 ...

  5. ASP.NET Core 中的规约模式(Specification Pattern )——增强泛型仓储模式

    原文链接:https://codewithmukesh.com/blog/specification-pattern-in-aspnet-core/ 在本文中,我们将讨论在 ASP.NET Core ...

  6. python flask api部署_使用flask开发api——部署flask,使用gunicorn+gevent模式的http server...

    使用flask开发api--部署flask,使用gunicorn+gevent模式的http server 用flask开发了服务端的api,记录部署上服务器的过程,以供后续使用. 安装python3 ...

  7. 前端开发中的MCRV模式

    针对前端开发中基于ajax的复杂页面开发所面临的代码规模大,难以组织和维护,代码复用性.扩展性和适应性差等问题,本文尝试以MVC思想为基础,结合Web前端开发中内容-结构-表现-行为相分离的开发标准, ...

  8. C++程序运行在S7 1500MFP的实时系统中

    文章目录 0 概述 1 环境 2 实现过程 2.1 新建一个portal项目 2.2 新建一个ODK项目 2.3 在ODK中编写C++代码 2.4 打包 3 测试 4 特别声明 0 概述 1518MF ...

  9. 数据库中Schema(模式)概念相关

    数据库中Schema有两种含义,一种是概念上的Schema,指的是一组DDL语句集,该语句集完整地描述了数据库的结构.还有一种是物理上的 Schema,指的是数据库中的一个名字空间,它包含一组表.视图 ...

最新文章

  1. 【C++】C++11新增关键字详解
  2. excel转kml工具_CAD+Excel还能这样玩?你用对了嘛!
  3. HTML布局篇之双飞翼(圣杯)布局
  4. Quartz.NET和Log4Net三种输出[转]
  5. XMLJavaXMLBeans结合应用的价值
  6. swagger2 注解说明 ( @ApiImplicitParams )
  7. php分布式cache,thinkPHP实现MemCache分布式缓存功能
  8. 《系统集成项目管理工程师》必背100个知识点-91机房防静电的方式
  9. todo已完成任务_uTools 插件介绍 | 「todo」!打工人必备
  10. 全球大学生超级计算机竞赛排名,清华团队蝉联世界大学生超级计算机竞赛总冠军...
  11. Kubernetes pod滚动升级rolling update的一些例子,截图和命令
  12. LNMP架构 源码安装nginx+mysql+php+memcache+论坛
  13. python基础: 选择语句
  14. 让“王码五笔输入法”成为你的专用输入法!
  15. hadoop版本和java版本不一致的问题
  16. Chrome书签同步方法
  17. java word 分页显示_java使用freemaker 导出word 包含分页,表格循环,word改xml格式化...
  18. 2020计算机专硕考数二的学校,2020考研备考:考研数一、数二、数三哪个最难?...
  19. python中运行代码时没有报错但是也没有输出而且还有exit code 0的结束标志
  20. android 手势识别 (缩放 单指滑动 多指滑动)

热门文章

  1. 2022电大国家开放大学网上形考任务-企业集团财务管理非免费(非答案)
  2. python for循环加速_干货总结,24招加速你的Python代码,值得收藏
  3. 计算机视觉入门知识一:数据分类基础 (李飞飞斯坦福计算机视觉课程)
  4. 笔记-编译原理-实验四-语义分析与中间代码生成
  5. android 崩溃 oatdump 分析,也来看看Android的ART运行时
  6. Android12 新特性及适配指南
  7. E104-BT01超低功耗蓝牙模块BLE4.0协议的片载系统解决方案
  8. 安卓虚拟键盘_Android自动化测试13--安卓仿真器/模拟器
  9. Quartus 13.0和Modelsim SE 10.1a 联合仿真
  10. 百度地图API基础操作--百度鹰眼篇