1

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

抢占的重点在哪里?可运行对象之间是否发生抢占?

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

4

2 回答 2

1

抢占的目的是确保其他任务按计划的时间间隔运行。

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

Autosar 进一步支持独占区域,这是一种本质上是临界区的机制。多个 runnable 可以使用同一个专属区域,如果一个 runnable 进入一个专属区域,Rte_Enter那么其他 runnable 不能进入同一个专属区域,直到第一个 runnable 离开它Rte_Exit

于 2017-06-30T21:21:19.187 回答
0

除了上面的答案,我想在 Autosar 中添加一个名为 Cooperative runnable Placement 的概念。根据概念,具有数据访问限制的runnbles被分组为“ Cooperative Runnables ”,其中该组中的runnables永远不会互相抢占,但可以被不属于该组的runnables抢占。

runnables 也是在 task 的上下文中执行的,如果 task 是可抢占的,那么属于 task 的 runnables 也是可抢占的。

于 2017-11-18T13:52:16.300 回答