相比较合作式调度器, 什么场合下应该使用混合调度器?

2019-12-27 18:41发布

本帖最后由 擦鞋匠 于 2017-7-14 15:13 编辑

最近在看傻孩子老师推荐的<<时间触发嵌入式系统模式>>, 虽然书已经很老了, 但的确能从中学到一些知识, 在此感谢傻孩子老师...

有2个地方我没看懂...相比较合作式调度器, 什么情况下应该使用混合式调度器?

现在考虑一种典型情况, 总共3个任务. 假设时标间隔是1ms.

A任务(运行时间=100ms)

B任务(运行时间<1ms)

C任务(运行时间<1ms)

解决方案1: 从硬件触发, 使用更快的处理器, 或者使用多个处理器, 这个不讨论...

解决方案2: 使用合作式任务调度器:

1>按照任务功能将A任务拆分为多个短任务

2>按照任务状态将A任务拆分为多个短任务.

总之任务A必须被拆分为多个运行时间小于时标间隔的短任务, 否则任务运行会产生抖动!!!

解决方案2: 使用混合式调度器:

问题1: 如下图: 长任务的运行时间可以大于时标间隔, 而且可以是多个长任务, 这个如何理解?

001.png (132.05 KB, 下载次数: 0) 下载附件 2017-7-14 14:59 上传

问题3: 如果使用混合式调度器, 已经存在"竞争关系", 例如抢占式任务(在中断中执行)和合作式任务(主循环中运行)有共享的全局变量, 大神一般是如何解决临界区问题的?

恳请大神指教, 感谢...






0条回答

一周热门 更多>