オペレーティングシステム (全95問中88問目)

No.88

三つの資源X〜Zを占有して処理を行う四つのプロセスA〜Dがある。各プロセスは処理の進行に伴い,表中の数値の順に資源を占有し,実行終了時に三つの資源を一括して解放する。プロセスAとデッドロックを起こす可能性のあるプロセスはどれか。
25.gif/image-size:236×167
  • [この問題の出題歴]
  • 応用情報技術者 H23秋期 問20
  • 応用情報技術者 H26秋期 問16
  • ソフトウェア開発技術者 H19秋期 問27

分類

テクノロジ系 » ソフトウェア » オペレーティングシステム

正解

解説

デッドロックとは、共有資源を使用する2つ以上のプロセスが、互いに相手プロセスが必要とする資源を排他的に使用していて、互いのプロセスが相手が使用している資源の解放を待っている状態です。デッドロックが発生すると、両方のプロセスが永久的な待ち状態に陥ってしまうため、処理の続行ができなくなってしまいます。
25a.gif/image-size:312×159
デッドロックは、資源の占有順序が異なる場合に発生する可能性があります。

プロセスAが資源X,Y,Zを使用している間、プロセスBは資源の解放を待ち、プロセスAの実行終了後に処理を開始します。

[プロセスB]
占有順序がプロセスAと異なるので、以下の順序の場合にデッドロックが発生します
  1. プロセスAが資源Xを占有
  2. プロセスBが資源Zを占有
  3. プロセスAが資源Yを占有
  4. プロセスBは資源Yの解放待ち,プロセスAは資源Zの解放待ち
  5. デッドロックの発生
[プロセスC]
占有順序がプロセスAと異なるので、以下の順序の場合にデッドロックが発生します
  1. プロセスAが資源Xを占有
  2. プロセスCが資源Zを占有
  3. プロセスAが資源Yを占有
  4. プロセスCは資源Xの解放待ち,プロセスAは資源Zの解放待ち
  5. デッドロックの発生
[プロセスD]
資源の占有順序がプロセスAと同じなのでデッドロックは発生しません

したがってプロセスAとデッドロックが発生する可能性のあるプロセスは「BとC」です。
© 2010-2018 応用情報技術者試験ドットコム All Rights Reserved.

Pagetop