SkillStack
テクノロジ系16 / 80問

応用情報技術者試験 令和4年度 秋期 午前 問16

二つのタスクが共用する二つの資源を排他的に使用するとき、デッドロックが発生するおそれがある。このデッドロックの発生を防ぐ方法はどれか。

選択肢を押すと答え合わせができます。

正解と解説を見る

【正解】イ

デッドロックとは、複数のタスクが互いに相手の保有する資源の解放を待ち続け、どのタスクも処理を進められなくなる状態です。例えば、タスク1が資源Aを確保して資源Bを待ち、タスク2が資源Bを確保して資源Aを待つと、循環待ちが発生します。両方のタスクが必ず資源A、資源Bの順に獲得するよう統一すれば、資源Bを持ったまま資源Aを待つタスクが存在しないため、循環待ちを防止できます。

アの優先度を高くする方法は誤りです。高優先度のタスクでも、必要な資源を低優先度のタスクが保有していれば待たされます。優先度の変更だけでは、資源の循環待ちは解消できません。

ウの獲得順序を逆にする方法は誤りです。一方がAからB、もう一方がBからAの順に獲得すると、それぞれが一つ目の資源を保有して相手の資源を待つ可能性があり、むしろ典型的なデッドロックの原因になります。

エの優先度を同じにする方法は誤りです。タスクの優先度はCPUを実行する順序に関係しますが、排他的な資源の獲得順序を保証するものではありません。

【ポイント】 デッドロックの成立条件は、相互排除、占有と待ち、横取り不可、循環待ちの四つです。 資源に順序を付け、全タスクが同じ順序で獲得する方法は、循環待ちを成立させない代表的な防止策です。

出典:令和4年度 秋期 応用情報技術者試験 午前 問16
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。

この回の80問を、アプリで通しで解く

  • 本番と同じ問題数・制限時間で通し演習(模試モード)
  • 間違えた問題は自動で「復習すべき問題」に回る
  • 解説で分からない点はAIに質問できる
SkillStackで無料で始める