Autosarでは、ランナブルはタスクにマップされます。優先度のためにタスクを先取りすることができます。AUTOSARまたはOSEKで実行中に実行可能なものをプリエンプションできますか?
プリエンプションのポイントはどこですか?プリミッションはランナブルの間で行われますか?
実行可能なアトミックな実行か、実行中に先取りすることができますか?
Autosarでは、ランナブルはタスクにマップされます。優先度のためにタスクを先取りすることができます。AUTOSARまたはOSEKで実行中に実行可能なものをプリエンプションできますか?
プリエンプションのポイントはどこですか?プリミッションはランナブルの間で行われますか?
実行可能なアトミックな実行か、実行中に先取りすることができますか?
プリエンプションのポイントは、スケジュールされた間隔で他のタスクを確実に実行することです。
runnablesはタスクのコンテキスト内で実行され、タスクは優先されるため、runnables自体を先取りすることができます。もう1つの結果は、ランナブルは他のタスク(または割り込み)でランナブルによってのみプリエンプトできることです。したがって、同じタスクでランナブルAとBを実行している場合、AはBによって先取りされることはありません。その逆もあります。AとBは互いに原子的です。
さらに、Autosarは、専用領域をサポートしています。これは本質的にクリティカルセクションです。複数の実行可能ファイルは同じ排他領域を使用でき、1つの実行可能ファイルがRte_Enter
の排他領域に入った場合、最初のファイルがRte_Exit
のままになるまで、他の実行可能領域は同じ排他領域に入ることができません。
上記の回答に加えて、AutosarにCooperative runnable placementというコンセプトを追加したいと思います。コンセプトによれば、データアクセスの制約を有するランブルは、 "Cooperative Runnables"とグループ化され、このグループのランナップは互いに先取りされないが、このグループに属していないランナブルによって先取りされる可能性がある。
また、実行可能ファイルはタスクのコンテキストで実行されます。タスクがプリエンプト可能な場合は、実行可能ファイルもタスクに属します。