オリジナル模擬試験1 問23
問23解説へ
三つの資源X~Zを占有して行う四つのプロセスA~Dがある。各プロセスは処理の進行に伴い,表中の数値の順に資源を占有し,実行終了時に三つの資源を一括して解放する。プロセスAとデッドロックを起こす可能性があるプロセスはどれか。
- B,C,D
- C,D
- Cだけ
- Dだけ
正解 イ問題へ
広告
解説
デッドロックとは、共有資源を使用する2つ以上のプロセスが、互いに相手プロセスが必要とする資源を排他的に使用していて、互いのプロセスが相手が使用している資源の解放を待っている状態です。デッドロックが発生するとプロセスは永遠に待ち状態になってしまうため、処理の続行ができなくなってしまいます。
デッドロックは、資源の占有順序が異なる場合に発生する可能性があります。
[プロセスB]
占有順序がプロセスAと同じなのでデッドロックは発生しません。
プロセスAが資源X,Y,Zを使用している間、プロセスBは資源の解放を待ち、プロセスAの実行終了後に処理を開始します。
[プロセスC]
占有順序がプロセスAと異なるので、以下の順序の場合にデッドロックが発生します。
プロセスAが資源Xを占有→プロセスCが資源Zを占有→プロセスAが資源Yを占有→プロセスCは資源Xの解放待ち&プロセスBは資源Xの解放待ち→デッドロックの発生。
[プロセスD]
占有順序がプロセスAと異なるので、以下の順序の場合にデッドロックが発生します。
プロセスAが資源Xを占有→プロセスDが資源Zを占有→プロセスAが資源Yを占有→プロセスDは資源Yの解放待ち&プロセスBは資源Xの解放待ち→デッドロックの発生。
したがってプロセスAとのデッドロックが発生する可能性のあるプロセスは「CとD」になります。
デッドロックは、資源の占有順序が異なる場合に発生する可能性があります。
[プロセスB]
占有順序がプロセスAと同じなのでデッドロックは発生しません。
プロセスAが資源X,Y,Zを使用している間、プロセスBは資源の解放を待ち、プロセスAの実行終了後に処理を開始します。
[プロセスC]
占有順序がプロセスAと異なるので、以下の順序の場合にデッドロックが発生します。
プロセスAが資源Xを占有→プロセスCが資源Zを占有→プロセスAが資源Yを占有→プロセスCは資源Xの解放待ち&プロセスBは資源Xの解放待ち→デッドロックの発生。
[プロセスD]
占有順序がプロセスAと異なるので、以下の順序の場合にデッドロックが発生します。
プロセスAが資源Xを占有→プロセスDが資源Zを占有→プロセスAが資源Yを占有→プロセスDは資源Yの解放待ち&プロセスBは資源Xの解放待ち→デッドロックの発生。
したがってプロセスAとのデッドロックが発生する可能性のあるプロセスは「CとD」になります。
広告