在AUTOSAR或OSEK执行期间是否可以抢占runnable?

时间:2017-06-30 18:38:18

标签: runnable preemption autosar

在Autosar中,runnables映射到任务。由于优先级,任务可以被抢占。

先发制人在哪里?抢占是否发生在runnables之间?

是可执行的原子执行还是在执行期间可以被抢占?

2 个答案:

答案 0 :(得分:1)

抢先点是确保其他任务以预定的时间间隔运行。

由于runnables在任务的上下文中运行,并且任务可以被抢占,这意味着runnables本身可以被抢占。另一个结果是runnables只能被其他任务(或中断)中的runnables抢占。因此,如果你有可运行的A和B在同一个任务中运行,那么A将永远不会被B抢占,反之亦然 - A和B相互之间是原子的。

Autosar进一步支持独占区域,这种机制本质上是一个关键部分。多个runnable可以使用相同的专用区域,如果一个runnable进入Rte_Enter的专用区域,那么没有其他runnable可以进入相同的专用区域,直到第一个可以使用Rte_Exit离开它。

答案 1 :(得分:0)

除了上述答案,我还想在Autosar中添加名为Cooperative runnable placement的概念。根据这个概念,具有数据访问约束的运行被分组为“ Cooperative Runnables ”,其中该组中的runnables永远不会相互抢占,但可以被不属于该组的runnables抢占。

此外,runnables在任务的上下文中执行,如果任务是preemptable,则runnables属于该任务也是可抢占的。