レートモノトニックスケジューリング
多くの実用アプリケーションにおいて、リソースは共有されるものである。従って、RMSは優先順位の逆転とデッドロック問題に対処する必要がある。これを解決する方法として優先度継承が導入された。
優先度継承アルゴリズムの例を以下に列挙する:
OSIntEnter() と OSIntExit() というプリミティブがリアルタイムカーネル(uC-OS II)でCPU割り込みをロックするために使われている。
splx() などのプリミティブがデバイス割り込みのロックに使われている(Linux カーネル )。
Highest Locker Protocol は全タスク間の衝突をオフラインで分析して「上限優先度」(後述)を探す必要がある。
基本優先度継承プロトコル(Basic Priority Inheritance Protocol)は、低優先度タスクの保持するロックを高優先度タスクが要求すると、低優先度タスクの優先度をその高優先度タスクの優先度まで高くする(そのロックを解放するまで)。
優先度上限プロトコルは基本優先度継承プロトコルを改良したものであり、各セマフォに「上限優先度」を割り当てる。上限優先度とはそのセマフォにアクセスする可能性のある全タスクの最高優先度である。