|
本帖最后由 擦鞋匠 于 2017-7-14 15:13 编辑
最近在看傻孩子老师推荐的<<时间触发嵌入式系统模式>>, 虽然书已经很老了, 但的确能从中学到一些知识, 在此感谢傻孩子老师...
有2个地方我没看懂...相比较合作式调度器, 什么情况下应该使用混合式调度器?
现在考虑一种典型情况, 总共3个任务. 假设时标间隔是1ms.
A任务(运行时间=100ms)
B任务(运行时间<1ms)
C任务(运行时间<1ms)
解决方案1: 从硬件触发, 使用更快的处理器, 或者使用多个处理器, 这个不讨论...
解决方案2: 使用合作式任务调度器:
1>按照任务功能将A任务拆分为多个短任务
2>按照任务状态将A任务拆分为多个短任务.
总之任务A必须被拆分为多个运行时间小于时标间隔的短任务, 否则任务运行会产生抖动!!!
解决方案2: 使用混合式调度器:
问题1: 如下图: 长任务的运行时间可以大于时标间隔, 而且可以是多个长任务, 这个如何理解?
问题2: 如下图, 作者特意强调必须有一个短任务(运行时间小于一半时标间隔), 但又没有介绍这个短任务的作用? 假设任务B和任务C都是长任务, 难道就不行嘛?
问题3: 如果使用混合式调度器, 已经存在"竞争关系", 例如抢占式任务(在中断中执行)和合作式任务(主循环中运行)有共享的全局变量, 大神一般是如何解决临界区问题的?
恳请大神指教, 感谢...
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|