×
システム構成・性能・ソフトウェア

これらすべてが揃ったときにデッドロックが発生します。これを防ぐためには、プロセスが資源を要求する順番をあらかじめルール化して循環待ちを物理的に防いだり、処理を開始する前に必要な資源をすべて一括して要求・確保させる手法が取られます。また、デッドロックの発生を未然に防ぐのではなく許容しつつ、OSが定期的にシステムの状態を監視し、発生を検知した時点で一部のプロセスを強制終了(キル)させたり、トランザクションをロールバックして回復を図る「デッドロックの検出と回復」というアプローチもあります。現実のシステム設計では、パフォーマンスとのバランスを考慮してこれらの手法が組み合わされます。

試験でのポイント

基本情報技術者試験やITパスポート、さらには応用情報技術者試験などの情報処理技術者試験において、デッドロックの発生原理やその回避方法は非常によく出題される頻出テーマです。特に「複数のプロセスが互いに相手の資源の解放を待っている状態」という定義そのものを問う問題が多く出題されます。

また、排他制御の基本技術である「セマフォ」や「ミューテックス」といった専門用語とセットで出題されることが多いため、排他制御の仕組み全体を関連付けて理解しておくことが重要です。試験の選択肢の中で「フリーズ」「システム停止」「相互待機」といったキーワードを見つけたら、デッドロックに関連する記述である可能性が高いと考えましょう。

OSのプロセス管理だけでなく、データベースのトランザクション処理においてもデッドロックは重要です。複数のトランザクションが互いにレコードやテーブルのロックを掛け合うことでデッドロックが発生します。この場合、DBMS(データベース管理システム)がデッドロックを瞬時に検出し、一方のトランザクションをロールバック(取り消し)して他方を進行させるという処理が自動的に行われる仕組みについても問われることがあります。

関連する用語

排他制御、セマフォ、トランザクション、ミューテックス