IT用語集 › プログラミング › 優先度シーリングプロトコル

優先度シーリングプロトコル

プログラミング Svenska → 更新: 2026-11-03

リアルタイムシステム向けのロック規則。各資源に優先度の上限(シーリング)を与え、優先度逆転とデッドロックを未然に防ぐ。

各ミューテックスには、それを取得し得るタスクの最高優先度があらかじめシーリングとして割り当てられる。最も単純な形である即時シーリング(「highest locker」)プロトコルでは、ロックを取得したタスクは直ちにシーリングまで引き上げられ、解放して初めて元に戻る。その間、同じ資源を欲しがる他のタスクは実行可能状態にすらなれない。

1990年にSha、Rajkumar、Lehoczkyが、優先度継承を導入したのと同じ論文で提案した。継承が衝突の発生後に反応するのに対し、シーリングは衝突そのものを防ぐ。見返りは証明可能性で、タスクがブロックされるのは最大1回、最大1つのクリティカルセクション分だけとなり、循環待ちも起こり得ない。代償は、誰が何を使うかを静的に把握しておく必要があることだが、安全認証が求められるシステムではどのみち要求される知識である。AdaではCeiling_Locking、POSIXではPTHREAD_PRIO_PROTECTと呼ばれ、OSEK/AUTOSARの資源モデルもこれを土台にしている。

← 用語集に戻る