VxWorks で、SEM_INVERSION_SAFE オプションを使用してミューテックスを作成し、優先順位の逆転の問題を回避しています。
マニュアルには、SEM_PRIORITY_Q オプションも使用する必要があると記載されています。何故ですか?
Benoit
質問する
1769 次
1 に答える
4
VxWroks でミューテックス セマフォを作成する場合、セマフォのキューに入れられた (待機中の) 複数のタスクを処理するための 2 つのオプションがあります。
SEM_INVERSION_SAFE オプションを使用すると、ミューテックスを保持しているタスクは、セマフォを待機している最も優先度の高いタスクと同じ優先度に引き上げられます。
セマフォに FIFO キューを使用する場合、カーネルはミューテックスが最も優先度の高いタスクを見つけるのを待っているタスクのキューをトラバースする必要があります。キューに入れられたタスクの数が変化すると、キューをトラバースする時間が変化するため、この操作は決定論的ではありません。
SEM_PRIORITY_Q オプションを使用すると、カーネルはキューの先頭にあるタスクを確認するだけで済みます。これは優先度が最も高いためです。これは一定時間の操作です。
于 2008-09-20T00:26:56.403 に答える