实时操作系统任务理解:从超级循环到RTOS任务
1. 实时系统中的超级循环
在实时系统里,简单的超级循环若运行迅速(通常因其功能和职责有限),响应性会相当不错。不过,超级循环的简单性可谓利弊共存。由于每个函数总是按顺序依次执行,它们的调用顺序固定且相互依赖。一个函数产生的延迟会传递给下一个函数,导致该次循环执行的总时间增加。
例如,若 func1 在一次循环中执行耗时10微秒,而下次却需100毫秒,那么 func2 在第二次循环中的调用速度会远低于第一次。
超级循环中的 func3 负责检查代表外部事件的标志状态(该事件表示信号的上升沿)。 func3 检查标志的频率取决于 func1 和 func2 的执行时间。设计良好且响应迅速的超级循环通常执行速度极快,检查事件的频率高于事件发生的频率。但当外部事件发生时,循环要等到 func3 下次执行才能检测到该事件,这中间存在延迟,且延迟并不稳定,这种时间差异被称为抖动。
若系统在响应事件时的抖动有已知的最大值,则该系统具有确定性,即能在事件发生后的指定时间内可靠响应。对于实时系统中的时间关键组件而言,高度的确定性至关重要,否则系统可能无法及时响应重要事件。
单纯基于轮询的系统存在响应性差的局限。若要对某个事件及时做出响应,可编写一个紧凑的循环等待该重要事件发生,但这种方法仅适用于系统仅关注这一个事件的情况,在如今复杂的现实系统中很少出现。
超级会员免费看
订阅专栏 解锁全文

3277

被折叠的 条评论
为什么被折叠?



