問 題
三つの資源X Y Zを占有して処理を行う四つのプロセスA~Dがある。各プロセスは処理の進行に伴い表中の数値の順に資源を占有し処理の終了時に三つの資源を一括して解放する。各プロセスが必要な資源を占有できないときはその資源が他のプロセスから解放されるまで待機する。
プロセスAとプロセスA以外のいずれか一つのプロセスを並列実行させたときデッドロックを起こす可能性のあるプロセスのみを全て選び出しているのはどれか。ただしこの場合のデッドロックとは二つのプロセスが互いに相手の占有している資源が解放されるのを待って双方が待機し続ける状態をいう。
1. B
2. B C
3. C
4. C D
5. D
正解 (4)
解 説
プロセスというのは、やりたい競技や科目だと思うといいです。資源とは、ボールやネットやサッカーゴールといった用具と考えるとイメージしやすいと思います。並列実行では、登場人物が2人以上です。ここでは、アリスとボブとします。
アリスがプロセス A をやろうとして、資源 X をまず独り占めします。その後 Y を独り占めしようとするのですが、この時 Y をボブが独り占めしていて、しかもボブが次に欲しいのが X だったとします。するとアリスは「Yが早く解放されないかなぁ。。。」と待ち、ボブは「早く X が解放されないかなぁ。。。」と待ち、いつまでたっても何もかわりません。これがデッドロックです。
この例からもわかるように、占有順の優先順位が「逆順」になっていると、デッドロックが起きる可能性があります。従って、プロセス C,D がデッドロックを起こす可能性があるプロセスです。
以上より、正解は 4 です。
コメント