基本情報技術者
テクノロジ系
デッドロックの説明として適切なものはどれか。
1.
プロセスが無限ループに陥る状態
2.
複数のプロセスが互いに相手の資源を待ち合って進めなくなる状態
✓ 正解
3.
メモリが不足してシステムが停止する状態
4.
CPUの使用率が100%になる状態
📝 解説
デッドロックは複数のプロセスが互いに相手が保持しているリソース(ファイルロック・メモリ・デバイス等)の解放を待ち合ってしまい、どのプロセスも処理を進められなくなる状態です。交差点の四方から1台ずつ車が入ってきて互いに相手の進路を塞ぎ合って誰も動けなくなる状況がまさにデッドロックです。デッドロックが発生する4つの必要条件(コフマン条件)として「①相互排除(1度に1プロセスしかリソースを使えない)②保持と待機(リソースを保持しながら他を待つ)③非横取り(保持中のリソースを強制的に取り上げられない)④循環待機(プロセスが循環して待ち合う)」があり、この4条件を1つでも破ることでデッドロックを防止できます。対策としては、リソースの取得順序を全プロセスで統一する・タイムアウトで強制解放する・銀行家アルゴリズムで安全状態を維持するなどの方法があります。誤答の「プロセスが無限ループに陥る状態」はライブロック・無限ループ、「メモリ不足でシステム停止」はメモリ不足エラーでいずれもデッドロックとは異なります。「デッドロック=互いのリソースを待ち合って全員が停止する状態」と覚えましょう!