処理Xコード:このコードセクションはどのように有界待ちを維持していますか?
ここでは限界待ちがどのように達成されるのか分かりません。
do {
while (turn != x);
// critical section code goes here.
turn = y;
// remainder section code goes here.
} while(1);
処理Xコード:このコードセクションはどのように有界待ちを維持していますか?
ここでは限界待ちがどのように達成されるのか分かりません。
do {
while (turn != x);
// critical section code goes here.
turn = y;
// remainder section code goes here.
} while(1);
このコードは、制限付き待機を維持しません。
ここでは、プロセスXが無期限に待機するシナリオを示します。
Process X
と入力してCritical Section
とし、それを残すとします。変数turn
はy
に設定されます。 Process X
が再びCritical Section
と入力できるようになると、変数turn
はx
に設定する必要があります。これはProcess Y
がCritical Section
と入力されている限り発生しません。
ので、二つのプロセスX
とY
、代わりがCritical Section
を入力した場合にのみ、だけにしてbounded waiting
満たされ、それ以外の場合は、ありません。
あなたはOSの検査のために準備をしている場合は、「オペレーティングシステムの概念」によると、答えは次のとおりです。 「それはを待っ有界が、進捗状況を維持していないを維持しません。」
PiとPjの両方がクリティカルセクションに入り、turn = iにしたい場合は、Piを最初に入力してPjを待ちます。Pi終了後、Piもクリティカルセクションに入ります。 Piは再び入力します.Pjを入力するには、最大で1回転待ちます。
PjがCSに入り、turn = iとしたいので、Piに依存しなければならないので、今度はCSに入ってターン= jに設定したいと思うでしょう。
質問があれば無料です。 –