オペレーティングシステム

デッドロック

5人の間にフォークが1本ずつあり、食事には両隣の2本が必要です。全員が左を取ると、右を取得できず待ち続けます。

食事する哲学者によるデッドロック実験

1. 取得順を選択

2. 実行

思考中 空腹(フォーク待ち) 食事中 デッドロック 点線:待っているフォーク

規則を変えて同じ操作を繰り返し、結果を比較してください。

成立には4条件すべてが必要

相互排除:1本を使えるのは1人だけです。 保持して待機:1本を持ちながら次を待ちます。 横取り不可:他人のフォークを強制回収できません。 循環待ち:P0→P1→…→P4→P0の待機の輪ができます。

どれか1条件を破れば防止できます。

循環待ちを断つ

資源に番号を付け、全員が小さい番号から取得します。P4だけは右の0番が先になるため輪ができません。複数ミューテックスを一定順序で取得するのも同じ考えです。