基本情報技術者試験「デッドロック」の問題
デッドロックの回避手法である銀行家アルゴリズムの考え方として最も適切なものはどれか。
アデッドロックの発生後に資源割当てグラフを定期的に調べて循環の有無を見つけ出し、循環していたプロセスの片方を強制終了して資源を取り上げ解消する
イ資源を割り当てる前に、その割当て後も全プロセスが完了できる安全な状態かを判定し、安全な場合だけ割り当てる
ウ全資源にあらかじめ通し番号を付け、番号の昇順でのみ確保させて循環待ちを禁止する
エ各プロセスに資源を一切共有させず、必要分を起動時に専有させて待機を生じさせない
正解
イ.資源を割り当てる前に、その割当て後も全プロセスが完了できる安全な状態かを判定し、安全な場合だけ割り当てる
銀行家アルゴリズムは各プロセスの最大要求量を事前に把握し、ある割当てを行っても全プロセスを完了できる安全な実行順序が存在するかを検査する。安全な場合のみ割り当てるためデッドロックを回避でき正しい。
?選択肢ごとの解説
ア ×発生後に循環を検出し強制終了するのはデッドロック検出と回復の手法であり、発生前に防ぐ回避(銀行家アルゴリズム)とは段階が異なる。
イ ○銀行家アルゴリズムは各プロセスの最大要求量を事前に把握し、ある割当てを行っても全プロセスを完了できる安全な実行順序が存在するかを検査する。安全な場合のみ割り当てるためデッドロックを回避でき正しい。
ウ ×資源に番号を付け昇順確保で循環待ちを禁止するのは予防(prevention)の手法であり、安全状態を逐次判定する銀行家アルゴリズムとは方式が異なる。
エ ×起動時に必要分を一括専有させるのも予防の一種(保持と待機の否定)で、割当てごとに安全性を判定する回避の考え方ではない。
✎くわしく
デッドロック対策は予防・回避・検出と回復に大別される。回避は実行中に状態を監視し危険な割当てを避ける動的手法で、銀行家アルゴリズムが代表例。最大要求量を事前申告させる前提が必要な点が特徴である。
✓本番での押さえどころ
試験のコツ
『予防=4条件のどれかを最初から成立させない』『回避=割当ての都度安全か判定(銀行家)』『検出=起きてから直す』と3分類で整理する。
覚え方
銀行家=『貸しても全員に返済余力(安全順序)があるか確認してから融資する』と銀行の与信に例えて覚える。
よくある誤り
予防(条件を構造的に崩す)・回避(安全状態を逐次判定)・検出(発生後に解消)を混同する誤りが多い。
ソフトウェアの他の問題
OS(オペレーティングシステム)が担う最も中心的な役割を説明したものはどれか。実行状態のタスクが、自らの入出力要求の完了を待つために移る状態はどれか。3つのタスクP1・P2・P3が時刻0に同時に到着し、処理時間はそれぞれ8・4・6である。FCFS(到着順)方式でP1→P2→…4つのタスクが時刻0に同時到着し、処理時間はそれぞれ6・2・8・4である。処理時間の短い順に実行するSJF(ノンプリエンプテ…3つのタスクP1・P2・P3が時刻0にこの順で実行可能列に並ぶ。処理時間はP1=5・P2=3・P3=7で、タイムクウォンタム…4つのタスクPA・PB・PC・PDが時刻0に同時到着する。処理時間はPA=6・PB=2・PC=4・PD=8で、優先度はPB・…
この問題を、AIの8-ways解説つきで。
無料ではじめる →基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。
ukamiru 過去問 · 基本情報技術者試験 · fe-a3-0220