プリエンプティブ方式リアルタイムOSの優先度スケジューリング
デッドロックは、2つ以上のタスクが互いに相手の保持する資源の解放を待ち合ってしまい、処理が永久に停止する現象です。デッドロックが発生する4つの必要十分条件(相互排除、占有待機、非横領、循環待ち)のうち、「循環待ち」を排除するための確立された設計手法が「 すべてのタスクで資源の獲得順序を一律に固定(同じに)する 」ことです。両タスクが必ず同じ順序(例: 資源1 $\to$ 資源2)で排他獲得を行えば、互い違いの資源確保による循環待ちが原理的に発生しなくなります。したがって、 イ が正解です。 タスクの優先度を変更しても、資源を保持したまま別の排他資源を要求する競合状態自体は解消されないため、デッドロックの防止策にはなりません。 タスクごとに獲得順序を逆(例: タスクAは資源1 $\to$ 資源2、タスクBは資源2 $\to$ 資源1)にすると、まさに互いに資源を抱え込んで相手の資源を待つ循環待ちが発生し、デッドロックが引き起こされます。 両タスクの優先度を同一にしても、共有資源の獲得順序が非統一であればデッドロックの発生を防ぐことはできません。
リアルタイムOS
プリエンプティブ方式
二つのタスクが共用する二つの資源を排他的に使用するとき,デッドロックが発生するおそれがある。このデッドロックの発生を防ぐ方法はどれか。
出典
令和4年度 秋期 応用情報技術者試験 午前 問16
ア
一方のタスクの優先度を高くする。
イ
資源獲得の順序を両方のタスクで同じにする。
ウ
資源獲得の順序を両方のタスクで逆にする。
エ
両方のタスクの優先度を同じにする。
前の問題
スキップ
【正解・解説】プリエンプティブ方式リアルタイムOSの優先度スケジューリング|令和4秋 応用情報 午前 問16 | IT資格ラボ