ITパスポート 2012年 秋期 問67
問題文
デッドロックの説明として、適切なものはどれか。
選択肢
ア:コンピュータのプロセスが本来アクセスしてはならない情報に、故意あるいは偶発的にアクセスすることを禁止している状態
イ:コンピュータの利用開始時に行う利用者認証において、認証の失敗が一定回数以上になったときに、一定期間又はシステム管理者が解除するまで、当該利用者のアクセスが禁止された状態
ウ:複数のプロセスが共通の資源を排他的に利用する場合に、お互いに相手のプロセスが占有している資源が解放されるのを待っている状態(正解)
エ:マルチプログラミング環境で、実行可能な状態にあるプロセスが、OSから割り当てられたCPU時間を使い切った状態
🔒 解説は解答すると表示されます
デッドロックの説明【ITパスポート 解説】
正解の理由
理由の要点をやさしくまとめます。
- デッドロックとは、複数のプロセス(プロセス:実行中のプログラム)が互いに「相手が持っている資源(リソース:ファイルやプリンタ、メモリなど)」の解放を待ち続け、誰も作業を進められない状態です。
- 選択肢ウはこの「互いに待ち合って先に進めない」状況を正しく表しています。
- 他の選択肢は認証や利用制限、時間切れなど別の概念を説明しているため不適切です。
※用語補足:
- OS(Operating System:基本ソフト、コンピュータを管理するソフト)
- CPU(Central Processing Unit:中央処理装置、コンピュータの頭脳)
解法ステップ
- 問題文で重要なキーワードを探す:「複数のプロセス」「資源(リソース)」「お互いに待つ」「解放されるのを待つ」など。
- 「誰も進めない」「相互に待ち合う」という状況か確認する。デッドロックはまさにこれ。
- 他の選択肢が示す状況(認証失敗によるロック、アクセス制御、CPU時間切れ)と混同していないか検証する。
- 相互待ち/排他利用/循環待ち(後述)がある選択肢を正解とする。
実際の出題では「互いに待っている」「資源を奪い合う」などの描写があればデッドロックと判断します。
選択肢別の誤答解説
- ア: 「コンピュータのプロセスが本来アクセスしてはならない情報に、故意あるいは偶発的にアクセスすることを禁止している状態」
→ これはアクセス制御や不正アクセス防止の説明で、デッドロックとは無関係です。 - イ: 「利用者認証で失敗回数が一定以上になるとアクセスを禁止する状態」
→ これはアカウントロック(アカウント凍結)やログインロックの説明です。セキュリティの仕組みで、プロセス同士の相互待ちとは違います。 - ウ: (正答の再確認)複数のプロセスが互いに資源を待ち続ける状況。デッドロックの定義そのものです。
- エ: 「マルチプログラミング環境で、実行可能な状態にあるプロセスが、OSから割り当てられたCPU時間を使い切った状態」
→ これはタイムスライス(CPUが一定時間で処理を切り替える仕組み)による処理再割当や実行順序の切替の状態で、デッドロックではありません。
よくある誤解
- 「デッドロックはシステムのクラッシュ(故障)と同じ」
- 誤りです。デッドロックは資源の取り合いによる停止状態であり、システム自体が壊れているわけではありません。回復手段で解消できる場合があります。
- 「デッドロックとスターベーション(飢餓状態)を同じものと考える」
- スターベーションは特定のプロセスがずっとCPUや資源を与えられず進まない状態で、原因と対処が異なります。デッドロックは相互の待ち合いが特徴です。
- 「単一のプロセスでもデッドロックは起きる」
- 通常は複数のプロセス(またはスレッド)が関係します。ただしスレッド間での自己待ちなど特殊なケースを除きます。
補足コラム
デッドロックが発生する典型例(簡単な実例):
- 条件:プロセスP1が資源Aを持ち、資源Bを待っている。プロセスP2が資源Bを持ち、資源Aを待っている。
- このときP1はBが解放されるのを、P2はAが解放されるのを待つため、どちらも進めません。これが典型的なデッドロック(循環待ち)です。
対策の種類(概要):
- 回避(Deadlock avoidance):資源の割当を事前に検査して、安全な順序でしか与えない。
- 予防(Deadlock prevention):発生条件(排他、保持と待ち、非奪取、循環待ちのいずれか)を壊す設計にする。例えば資源の獲得順序を統一する。
- 検出と回復(Detection and recovery):デッドロックを検出するアルゴリズムで見つけてから、一部のプロセスを中止するなどして解消する。
- タイムアウト:ある一定時間待ったら強制的に資源要求を取り下げる。
用語メモ:
- 排他(排他的):他が同時に使えないように独占すること。ファイルを編集する際に「一人だけ編集可」にする仕組みが排他の例です。
- 循環待ち(circular wait):AがBを待ち、BがCを待ち、... と戻ってAが待つ形。デッドロックの核心的条件です。
FAQ
Q1: デッドロックはデータベースでも起きますか?
A1: はい。データベースではトランザクション(処理のまとまり)がロックを取り合い、同様にデッドロックが発生します。DBMSは検出や回復機能を持つことが多いです。
A1: はい。データベースではトランザクション(処理のまとまり)がロックを取り合い、同様にデッドロックが発生します。DBMSは検出や回復機能を持つことが多いです。
Q2: デッドロックとライブロック(livelock)の違いは?
A2: デッドロックは完全に停止している状態です。ライブロックはプロセスが何らかの「動作」はしているが、実際に仕事(進捗)が進まない状態です。人が譲り合って前に進めない状況に似ています。
A2: デッドロックは完全に停止している状態です。ライブロックはプロセスが何らかの「動作」はしているが、実際に仕事(進捗)が進まない状態です。人が譲り合って前に進めない状況に似ています。
Q3: 現場での簡単な対処法はありますか?
A3: 最も手早いのは問題のプロセスを強制終了して資源を解放することです。ただしデータ整合性に注意が必要です。恒久対策は資源の取り方を見直すことです。
A3: 最も手早いのは問題のプロセスを強制終了して資源を解放することです。ただしデータ整合性に注意が必要です。恒久対策は資源の取り方を見直すことです。
関連キーワード: デッドロック、プロセス、リソース管理、排他制御、循環待ち、タイムアウト、デッドロック回避、デッドロック検出、ロック、OS、CPU

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

