相互排除とデッドロックをそれぞれ次のように定義します。相互排除条件は、各共有リソースが常に 1 つのプロセスに割り当てられているか、使用可能である場合に存在します。セット内の各プロセスが、セット内の別のプロセスのみが発生できるイベントを待機している場合、プロセスのセットはデッドロック状態になります。
たとえば、バイナリ セマフォが使用され、そのうちの 1 つだけが同時にクリティカル領域に入ることができるようにします。各プロセスはクリティカル領域に入る直前にダウンし、クリティカル領域から出た直後にアップするため、相互排除が保証されます。
デッドロックが発生するには 4 つの条件がすべて満たされている必要があることを理解しています。そのうちの 1 つは、相互排除条件です (2 つのプロセスがクリティカル セクション内に同時に存在することはできません)。
相互排除が保証されているので、この場合、プログラムはデッドロックフリーですか?
よろしく。