プロセス 1 がリソース Aをロックしてリソース Bを待機し 、同時に (「適切な」場所でのコンテキストの切り替えにより) プロセス 2 がリソース Bをロックし、リソース Aへのアクセスを待機すると、デッドロックが発生します。
Unix はこのようなデッドロックにどのように対処しますか? ここで以下を読みました。
多くのデッドロックは、複数のリソースをロックするすべてのプロセスが同じ順序でロックするように要求するだけで防ぐことができます (たとえば、ロック名のアルファベット順)。
実行順序を変更せずにロックを取得する順序を変更するにはどうすればよいでしょうか? 現代の Unix カーネルが採用しているデッドロック処理へのアプローチについて詳しく説明してくれる人はいますか?