修了試験 2018-01-28実施分 基本情報技術者試験 問18
三つの資源X〜Zを占有して処理を行う四つのプロセスA〜Dがある。 各プロセスは処理の進行に伴い,表中の数値の順に資源を占有し,実行終了時に三つの資源を一括して解放する。 プロセスAとデッドロックを起こす可能性があるプロセスはどれか。 〔表〕プロセス/資源の占有順序(資源X|資源Y|資源Z) A/1|2|3 B/1|2|3 C/2|3|1 D/3|2|1
正答2
解説
正解は2です。 デッドロックは、複数のプロセスが互いに相手の占有している資源の解放を待ち続け、処理が進まなくなる状態です。 資源を占有する順序がプロセス間で異なると、デッドロックが起こる可能性があります。 表から読み取ると、プロセスAとBはX、Y、Zの順に資源を占有します。 プロセスCはZ、X、Yの順に、プロセスDはZ、Y、Xの順に資源を占有します。 【選択肢別解説】 1:× プロセスBはAと同じX、Y、Zの順に占有します。 先にXを得た側が最後まで進めるので、AとBの間でデッドロックは起こりません。 Bを含む点が誤りです。 2:○ CとDは、Aと異なりZを最初に占有します。 AがXを占有してZを待ち、CやDがZを占有してXを待つと、互いに待ち続けてデッドロックになります。 3:× Cだけでなく、Dもデッドロックを起こす可能性があります。 DはZとYを占有してからXを要求するので、Xを占有したAと互いに待ち合う状態になり得ます。 4:× Dだけでなく、Cもデッドロックを起こす可能性があります。 CはZを占有した後にXを要求するので、XとYを占有してZを待つAと互いに待ち合う状態になり得ます。 【ポイント】 すべてのプロセスが資源を同じ順序で占有すれば、デッドロックは防げます。 資源の占有順序をそろえることは、デッドロック防止の代表的な方法です。まとめて解く
修了試験 2018-01-28実施分を通しで解く(80問)→