ソフトウェア

基本情報技術者試験デッドロック」の問題

テクノロジ系ソフトウェア難易度:hard
デッドロックの回避手法である銀行家アルゴリズムの考え方として最も適切なものはどれか。
デッドロックの発生後に資源割当てグラフを定期的に調べて循環の有無を見つけ出し、循環していたプロセスの片方を強制終了して資源を取り上げ解消する
資源を割り当てる前に、その割当て後も全プロセスが完了できる安全な状態かを判定し、安全な場合だけ割り当てる
全資源にあらかじめ通し番号を付け、番号の昇順でのみ確保させて循環待ちを禁止する
各プロセスに資源を一切共有させず、必要分を起動時に専有させて待機を生じさせない
正解
資源を割り当てる前に、その割当て後も全プロセスが完了できる安全な状態かを判定し、安全な場合だけ割り当てる

銀行家アルゴリズムは各プロセスの最大要求量を事前に把握し、ある割当てを行っても全プロセスを完了できる安全な実行順序が存在するかを検査する。安全な場合のみ割り当てるためデッドロックを回避でき正しい。

?選択肢ごとの解説

ア ×発生後に循環を検出し強制終了するのはデッドロック検出と回復の手法であり、発生前に防ぐ回避(銀行家アルゴリズム)とは段階が異なる。
イ ○銀行家アルゴリズムは各プロセスの最大要求量を事前に把握し、ある割当てを行っても全プロセスを完了できる安全な実行順序が存在するかを検査する。安全な場合のみ割り当てるためデッドロックを回避でき正しい。
ウ ×資源に番号を付け昇順確保で循環待ちを禁止するのは予防(prevention)の手法であり、安全状態を逐次判定する銀行家アルゴリズムとは方式が異なる。
エ ×起動時に必要分を一括専有させるのも予防の一種(保持と待機の否定)で、割当てごとに安全性を判定する回避の考え方ではない。

くわしく

デッドロック対策は予防・回避・検出と回復に大別される。回避は実行中に状態を監視し危険な割当てを避ける動的手法で、銀行家アルゴリズムが代表例。最大要求量を事前申告させる前提が必要な点が特徴である。

本番での押さえどころ

試験のコツ

『予防=4条件のどれかを最初から成立させない』『回避=割当ての都度安全か判定(銀行家)』『検出=起きてから直す』と3分類で整理する。

覚え方

銀行家=『貸しても全員に返済余力(安全順序)があるか確認してから融資する』と銀行の与信に例えて覚える。

よくある誤り

予防(条件を構造的に崩す)・回避(安全状態を逐次判定)・検出(発生後に解消)を混同する誤りが多い。

ソフトウェアの他の問題

この問題を、AIの8-ways解説つきで。

基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。

無料ではじめる →

ukamiru 過去問 · 基本情報技術者試験 · fe-a3-0220

【基本情報技術者試験】デッドロックの問題 — 解答・解説|ukamiru 過去問