問題

複数プロセスが資源を排他的に使用するシステムにおいて、デッドロックが発生するための必要条件に該当しないものはどれか。

ア)相互排除:資源は同時に一つのプロセスしか使用できない。

イ)占有と待機:資源を保持したまま、他の資源の獲得を待つプロセスが存在する。

ウ)先入れ先出し:資源の割当ては要求された順序どおりに行われる。

エ)循環待機:複数のプロセスが互いに相手の保持する資源を待つ環状の関係にある。

解答・解説を見る

正解: ウ)

解説:

デッドロックが発生するための必要条件(コフマンの4条件)は次の通りです。

  • 相互排除(Mutual Exclusion):資源は同時に一つのプロセスしか使用できない
  • 占有と待機(Hold and Wait):資源を保持したまま別の資源を要求する
  • 非横取り(No Preemption):他プロセスが保持する資源を強制的に奪えない
  • 循環待機(Circular Wait):プロセスと資源の待ち関係が環状になっている

ア・イ・エはいずれもこの4条件に含まれます。一方「先入れ先出し(FIFO)で資源が割り当てられる」ことはデッドロックの必要条件ではありません。むしろFIFOのような公平な割当ては、特定プロセスが資源を得られず待ち続ける「飢餓状態」の防止に関連する概念であり、デッドロックの4条件には含まれないため、ウが正解(該当しないもの)です。

重要キーワード

用語説明
相互排除資源を同時に一つのプロセスしか使えない制約
占有と待機資源を保持したまま別の資源を待つ状態
非横取り資源を強制的に奪えない制約
循環待機プロセス間の資源待ちが環状になる状態