关注+星标公众,不错过精彩内容

转自 | 大橙子疯嵌入式

本文介绍如何基于时间片论法的任务调度模式充分利用MCU的资源,姑且先称这种方式为时间片差分调度法。

充分利用MCU的资源指的是在不影响原有的函数调度情况下合理进行分配,避免MCU大部分时间处于空跑状态(即大部分时间没有调度任何的功能函数,只是在不停地判断时间状态,从而造成的资源浪费),同时提高每个任务的调度周期的命中率(按时准点执行)

背景

时间片论法不比操作系统,操作系统可以通过任务优先级抢占当前正在执行的低优先级任务,或者高优先级任务主动睡眠释放MCU资源以便低优先级的任务可以正常执行;时间片论法必须等待当前任务执行完成后才能执行下一个任务(中断除外)。
因此,由于时间片论法的特性,很难保证某些任务能够及时得到调度运行,特别是所需要的调度任务多的情况下,常常出现不能及时调度的问题(虽然整体调度周期不变),从而影响所需要的功能,常见的做法可能通过定时中断触发的方式去执行,可是碰到一些任务函数执行时间稍微长的就会影响中断的响应等。
可以看下面的函数调度时长图,每个刻度为200us(以下称节拍),调度单位为1ms,只以200us以上的任务举例,方便进行理解

从上述图中可知以下信息:

  1. 图中一共有五个任务函数,每个任务函数的执行时间不定

  • 任务1(黄色)周期为5ms

  • 任务2(红色)周期为6ms

  • 任务5(紫色)周期为5ms

  • 任务4(蓝色)周期为12ms

  • 任务5(绿色)周期为15ms

同一时刻触发任务调度的执行时的顺序(调度函数的顺序即可任务默认优先级):1>2>3>4>5

第25ms时任务1的调度慢了一个节拍,原因是任务2和4的调度总时长超过了调度单位时长

除了任务1大部分时间都能及时被调度,其他任务并不能被及时调度,虽然周期不变,但命中率不高(甚至等于0)

其中存在周期性的几个调度单位大部分时间处于空跑状态

…等其他仔细观察的可知信息,这里就不多说了

从获取的信息可知,大部分任务虽然整体周期没变,但是几乎很少有低优先级的任务有较高的命中率,这样就导致某些功能需要较高的命中率同时执行时间相对较长(不能放在中断中的任务函数)就不能正常工作。

如何优化

在优化之前,首先看下面这个有一定规律的函数调度时长图

  1. 还是五个任务,而规律就是函数任务公约数=最小调度周期任务,即5ms(假设小于5ms的任务大都执行时间非常短,在此可忽略不计)

  • 任务1(黄色)周期为5ms

  • 任务2(红色)周期为10ms

  • 任务5(紫色)周期为20ms

  • 任务4(蓝色)周期为10ms

  • 任务5(绿色)周期为20ms

图中所展示的任务调度命中率也不高,也存在周期性的几个调度单位大部分时间处于空跑状态

看一下优化前后的对比图,虽然还是存在大部分时间处于空跑状态,但是命中率提高到了100%

只要保证每个任务函数耗时小于调度单位,那么就能做到命中率 100%

如何实现的?
从优化后的图中可以了解到,第一个时刻调度的时候只有任务1,第二个时间调度只有任务2,以此类推,就可以在一定程度上避开同一时刻多个任务需要同时等待调度,从而引发的拥堵。

可以通过每个任务计时器的倒计时初值进行调整,从而达到每个时间调度只运行一个任务的目的,提高任务的命中率。

那么接下来按照上面提到的规律去优化刚开始的那个,主要有两点:

  1. 在可接受范围内调整任务的周期,尽量保证任务函数任务公约数=最小调度周期任务

可以理解称任务公约数等于多少就代表可以在初值上类推多少个任务进行错开初次执行;可以忽略部分函数耗时特别短的任务

  1. 调整每个任务倒计时器的初值,尽量错开拥堵时刻

任务多的情况下只能够尽量避免,从而提高命中率,通过每个任务调度周期和执行时长进行推算,得到每个任务的最佳的初值

根据以上两点对上述调度任务进行优化如下:

五个任务函数在可接受范围内调整任务周期后,同时调整初值
   - 任务1(黄色)周期为5ms
   - 任务2(红色)周期为5ms
   - 任务5(紫色)周期为5ms
   - 任务4(蓝色)周期为10ms
   - 任务5(绿色)周期为15ms

得到对比图:

此次优化将充分地利用了每个时间片的资源,虽然某一段时间内的空跑时间总和一样,但是实际上将空跑的时间进行了分散,提高了资源的使用率,从而让每个任务的命中率提高到100%。

------------ END ------------

●专栏《嵌入式工具

●专栏《嵌入式开发》

●专栏《Keil教程》

●嵌入式专栏精选教程

关注公众号回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。

点击“阅读原文”查看更多分享。

时间片论法-优化方案相关推荐

  1. 如何针对时间片论法进行优化

    前言 通过该篇学习了嵌入式的任务调度(即时间片论法)后,了解到通过以1ms为调度时间单位轮询判断是否需要执行函数任务,那么下面介绍如何基于时间片论法的任务调度模式充分利用MCU的资源,姑且先称这种方式 ...

  2. 优化方案电子版_【热点文章推荐】响应曲面法优化废弃食用油脂脱色工艺

    点击箭头处"蓝色字",关注我们哦!! 更多精彩,请点击上方蓝字关注我更多精彩,请点击上方蓝字关注我们!DOI:10.13822/j.cnki.hxsj.2020007677文章来源 ...

  3. 干货:嵌入式C语言源代码优化方案(非编译器优化)

    点击上方"大鱼机器人",选择"置顶/星标公众号" 福利干货,第一时间送达! 1.选择合适的算法和数据结构 选择一种合适的数据结构很重要,如果在一堆随机存放的数中 ...

  4. Unity大场景数据加载及优化方案

    前段时间,有几个虚拟仿真公司跟我请教关于大地形的加载优化问题,它们使用的引擎都是自己研发的,引擎对于开发者来说,大同小异,它们的基本构造是一样的,关键是在于解决问题的方法,正是基于这个前提写了这个课程 ...

  5. 史上最全Android性能优化方案解析

    Android中的性能优分为以下几个方面: 布局优化 网络优化 安装包优化 内存优化 卡顿优化 启动优化 -- 一.布局优化 布局优化的本质就是减少View的层级.常见的布局优化方案如下: 在Line ...

  6. 实战总结!18种接口优化方案的总结

    前言 之前工作中,遇到一个504超时问题.原因是因为接口耗时过长,超过nginx配置的10秒.然后 真枪实弹搞了一次接口性能优化,最后接口从11.3s降为170ms.本文将跟小伙伴们分享接口优化的一些 ...

  7. 计算机程序框图当n200,【优化方案】2020高考数学总复习 9-11章算法与程序框图课时卷 北师大版(通用)...

    <[优化方案]2020高考数学总复习 9-11章算法与程序框图课时卷 北师大版(通用)>由会员分享,可在线阅读,更多相关<[优化方案]2020高考数学总复习 9-11章算法与程序框图 ...

  8. 《穿越火线》几次体验良好的游戏优化方案

    文章目录 介绍 救世主模式 终结者模式 30人生化模式 挑战模式 英雄级武器 源武器 英雄级武器皮肤 英雄级武器游戏玩偶 英雄级武器万化包.光效 英雄级武器强化 英雄级武器音效卡 免费获取挑战强化武器 ...

  9. 打怪升级之小白的大数据之旅(五十九)<Hadoop优化方案>

    打怪升级之小白的大数据之旅(五十八) Hadoop优化方案与扩展知识点 上次回顾 上一章,我们对Hadoop的扩展知识HA进行了学习,本章是我们在使用Hadoop过程中的一些优化方案和其他几个需要了解 ...

最新文章

  1. Java 领域offer收割:程序员黄金 5 年进阶心得!
  2. 如何检查字符串是否包含特定单词?
  3. 批处理***与注册表
  4. django_4数据库3——admin
  5. ArrayList笔记
  6. vscode 配置php
  7. thrift服务windows环境编译失败
  8. java泛型程序设计——注意擦除后的冲突
  9. 【pytorch】requires_grad、volatile、no_grad()==>节点不保存梯度,即不进行反向传播
  10. 设计灵感|网页建议页面(联系页面)版式案例
  11. 删除购物车ajax js,在购物车中使用ajax在woocommerce中移除产品
  12. go-echarts x 轴标签显示不全
  13. 他爱的只是你爱他(一)
  14. mysql新建数据库数据类型_数据库Mysql的学习(二)-数据类型和创建
  15. IT行业都有哪些职位
  16. GEE-Scholars MODIS地表温度LST时间变化趋势
  17. excel平均值公式_必学的6个Excel平均值公式
  18. 科技型中小企业研发费用加计扣除问题解答
  19. 通信工程师出差生存指南
  20. 【正点原子Linux连载】第五章 文件属性与目录-摘自【正点原子】I.MX6U嵌入式Linux C应用编程指南V1.1

热门文章

  1. Windows 下无痛安装 TensorFlow (GPU版)
  2. 互联网的SEDA高并发架构
  3. 苏州源特VPT87DDF01B 隔离变压器 小体积/SMD/3000VDC 隔离
  4. 如何看懂Minecraft报错的关键信息。
  5. c语言中,exit(1)是什么意思?
  6. 数据结构与算法-基础(十二)B 树
  7. 计算机专业怎样才能晋级正高级
  8. Verilog初级教程(2)Verilog HDL的初级语法
  9. 最新单片机设计选题合集
  10. 算法:分治法之合并排序