2. 概念
2.9 排他エリア
入退場方法 内容
明示的入退場 ・ランナブルの場合
SW-C開発者が,排他エリアへの入退場API(Rte_Enter,およびRte_Exit)を 明示的に呼び出す方法.Rte_Enterで排他エリアへの入場を行い,Rte_Exit で排他エリアからの退場を行う.
・BSWMエンティティの場合
BSWM開発者が,排他エリアへの入退場API(SchM_Enter,および
SchM_Exit)を明示的に呼び出す方法.SchM_Enterで排他エリアへの入場を行
い,SchM_Exitで排他エリアからの退場を行う.
エクスキュータブ ル実行時入退場
・ランナブルの場合
SW-C開発者が,システム設計時にランナブル実行中は排他エリア内での動作 となることを定義し,RTEに保証させる方法.RTEは,ランナブルの開始時 に排他エリアへの入場を行い,ランナブルの終了時に排他エリアからの退場を 行う.
・BSWMエンティティ(BSWスケジューラブル)の場合
BSWM開発者が,システム設計時にBSWスケジューラブル実行中は排他エリ ア内での動作となることを定義し, SCHMに保証させる方法.SCHMは,
BSWスケジューラブルの開始時に排他エリアへの入場を行い,BSWスケジュ ーラブルの終了時に排他エリアからの退場を行う.
・BSWMエンティティ(BSWスケジューラブル以外)の場合
SCHMは,対象BSWMエンティティに対する実行時入退場を行わない
【rte_sws_7524】.
2.9.2.2 排他エリア実現メカニズム
RTEGENは,排他エリアの実現のために以下の排他エリア実現メカニズムを提供する.どの排他エ
リア実現メカニズムを適用するかは,コンフィギュレーションにより選択できる.
表 2-12 排他エリア実現メカニズム一覧
排他エリア実現 メカニズム
内容
全割込みのブロック 全割込みを無効化する,もしくは,サスペンドすることで実現する.
本メカニズムは,非常に短時間の競合の回避のために有用である.
ただし,システム全体のタイミングや高優先度のOSタスクにまで影響 を及ぼすことに注意が必要である.
OS割込みのブロック OS割込みをサスペンドすることで実現する.
本メカニズムは,非常に短時間の競合の回避のために有用である.
ただし,システム全体のタイミングや高優先度のOSタスクにまで影響 を及ぼすことに注意が必要である.
OSリソースの獲得 OSタスク間でOSリソースを獲得し合うことで実現する.
本メカニズムには,割込みブロックに比べ,一貫性保証を必要とする OSタスク間にのみ影響が集約されるという利点がある.
本メカニズムは,コア間の排他に使用できない点に注意が必要である.
OSスピンロックの獲得 OSタスク間でOSスピンロックを獲得し合うことで実現する.
本メカニズムには,OSリソースの獲得に比べ,コア間の排他に使用で きるという利点がある.
2.9.3 排他エリアの操作
2.9.3.1 排他エリアへの入場
ランナブルの排他エリア入退場方法が「明示的入退場」である場合,RTEは,排他エリア毎に,排他 エリアへの入場のためのAPI(Rte_Enter)を提供する【rte_sws_3515】.排他エリアを保持するSW-C は,提供されたAPIを使用することで,排他エリアへの入場を行うことができる.
ランナブルの排他エリア入退場方法が「エクスキュータブル実行時入退場」である場合,RTEは,ラ ンナブルが開始する際に排他エリアへの入場を自動的に行う【rte_sws_a_0031】.
BSWMエンティティの排他エリア入退場方法が「明示的入退場」である場合,SCHMは,排他エリ ア毎に,排他エリアへの入退場のためのAPI(SchM_Enter)を提供する【rte_sws_7523】.
BSWスケジューラブルの排他エリア入退場方法が「エクスキュータブル実行時入退場」である場合,
SCHMは,BSWスケジューラブルが開始する際に排他エリアへの入場を自動的に行う
【rte_sws_a_0061】.
排他エリアへの入場の挙動
Rte_Enter/SchM_Enter,もしくは「エクスキュータブル実行時入退場」により排他エリアへの入場 が開始された際の挙動は,排他メカニズムにより異なる.各排他エリア実現メカニズムにおける,排 他エリアへの入場が開始された場合の挙動は以下の通りである.
データ一貫性保証 メカニズム
排他エリアへの入場が開始された場合の挙動
全割込みのブロック 全割込みの禁止を開始する【rte_sws_3504】.
OS割込みのブロック OS割込みの禁止を開始する【rte_sws_5164】.
OSリソースの獲得 OSリソースを獲得する【rte_sws_3595】.
OSスピンロックの獲得 OSスピンロックを獲得する【nrte_sws_0032】.
サポート範囲の制限
排他エリアへのアクセスが競合する可能性がないことが自明な場合には,RTEGENは,排他エリア 実現メカニズムを適用せず,排他エリアへの入場時は何も行わない実装を提供する【rte_sws_3504】
【rte_sws_5164】【rte_sws_3595】.しかし,A-RTEGENでは,これらの仕様を制限としてサポート しない【irte_sws_0001】.
2.9.3.2 排他エリアからの退場
ランナブルの排他エリア入退場方法が「明示的入退場」である場合,RTEは,排他エリア毎に,排他 エリアからの退場のためのAPI(Rte_Exit)を提供する【rte_sws_3515】.排他エリアを保持するSW-C は,提供されたAPIを使用することで,排他エリアからの退場を行うことができる.
ランナブルの排他エリア入退場方法が「エクスキュータブル実行時入退場」である場合,RTEは,ラ ンナブルが終了する際に,排他エリアから退場を自動的に行う【rte_sws_a_0032】.
BSWMエンティティの排他エリア入退場方法が「明示的入退場」である場合,SCHMは,排他エリ ア毎に,排他エリアからの退場のためのAPI(SchM_Exit)を提供する【rte_sws_7523】.
BSWスケジューラブルの排他エリア入退場方法が「エクスキュータブル実行時入退場」である場合,
SCHMは,BSWスケジューラブルが終了する際に,排他エリアから退場を自動的に行う
【rte_sws_a_0062】.
排他エリアからの退場の挙動
Rte_Exit/SchM_Exit,もしくは「エクスキュータブル実行時入退場」により排他エリアからの退場 が開始された際の挙動は,排他エリア実現メカニズムにより異なる.各排他エリア実現メカニズムに おける,排他エリアからの退場時の挙動は以下の通りである.
データ一貫性保証 メカニズム
排他エリアからの退場時の挙動
全割込みのブロック 全割込みの禁止を終了する【rte_sws_3504】.
OS割込みのブロック OS割込みの禁止を終了する【rte_sws_5164】.
OSリソースの獲得 OSリソースを解放する【rte_sws_3595】.
OSスピンロックの獲得 OSスピンロックを解放する【nrte_sws_0033】.
排他エリアへのアクセスが競合しない場合の挙動
排他エリアへのアクセスが競合する可能性がないことが自明な場合には,RTEGENは,排他エリア 実現メカニズムを適用せず,排他エリアからの退場時には何も行わない実装を提供する
【rte_sws_3504】【rte_sws_5164】【rte_sws_3595】.しかし,A-RTEGENでは,これらの仕様を制 限としてサポートしない〔irte_sws_0001〕.
2.9.4 排他エリアの設定
2.9.4.1 排他エリア
排他エリアは,排他エリア(ExclusiveArea)により指定する.
2.9.4.2 排他エリア入退場方法
エクスキュータブル(ExecutableEntity)の明示的排他エリア入場(canEnterExclusiveArea)が排他エ リアを参照する場合,そのエクスキュータブルに対し,排他エリア入退場方法「明示的入退場」を有効 とする【rte_sws_a_0033】.
エクスキュータブル(ExecutableEntity)の排他エリア内実行(runsInsideExclusiveArea)が排他エリ アを参照する場合,そのエクスキュータブルに対し,排他エリア入退場方法「エクスキュータブル実行 時入退場」を有効とする【rte_sws_a_0034】.
2.9.4.3 排他エリア実現メカニズム
排他エリアに適用する排他エリア実現メカニズムは,排他エリアを参照する排他エリア実現メカニ ズム(RteExclusiveAreaImplMechanism)により指定する.設定値に応じて,適用する排他エリア実現 メカニズムは以下の通り【rte_sws_a_0035】.
表 2-13 設定値と適用する排他エリア実現メカニズム
設定値 適用する排他エリア実現メカニズム
ALL_INTERRUPT_BLOCKING 全割込みのブロック【rte_sws_3504】.
OS_INTERRUPT_BLOCKING OS割込みのブロック【rte_sws_5164】.
OS_RESOURCE OSリソースの獲得【rte_sws_3595】.
OS_SPINLOCK OSスピンロックの獲得【nrte_sws_0034】.
使用OSリソースの指定
排他エリア実現メカニズム「OSリソースの獲得」で使用するOSリソースは,排他エリア実現メカ ニズム(RteExclusiveAreaImplMechanism)の使用OSリソース(RteExclusiveAreaOsResourceRef)に より指定する【rte_sws_a_0036】.
使用OSスピンロックの指定
排他エリア実現メカニズム「OSスピンロックの獲得」で使用するOSスピンロックは,排他エリア 実現メカニズム(RteExclusiveAreaImplMechanism)の使用OSスピンロック
(RteExclusiveAreaOsSpinlockRef)により指定する【rte_sws_a_0037】.