URL: https://linuxfr.org/forums/programmation-java/posts/deadlock-conditions-de-coffman Title: Deadlock. Conditions de Coffman Authors: j_m Date: 2019年08月25日T16:22:47+02:00 License: CC By-SA Tags: Score: 1 Bonjour, Je cherche à retrouver les 4 conditions de Coffman pour un deadlock dans l'illustration de wikipedia ci-dessous: ![Deadlock dans un croisement](https://upload.wikimedia.org/wikipedia/commons/2/23/Deadlock_at_a_four-way-stop.gif) Tiré de cet article: [Deadlock#Necessary_conditions](https://en.wikipedia.org/wiki/Deadlock#Necessary_conditions) Je ne suis pas trop sûr de moi. Est-ce que vous pouvez me dire ce que vous en pensez? Est-ce que j'ai une bonne formulation, non ambiguë? Il faut séparer le problème en deux. Si il y a 4 boules ou plus sur chacune des 4 directions et si il y a 3 boules ou moins. Commençons par le cas 4 boules. Je montre que toutes les conditions du deadlock sont remplies: - exclusion mutuelle: Oui, en particulier quand il y a 4 boules - retiens et attends: une boule retiens toujours le verrou de la boule à sa gauche et attends la libération du verrou à sa droite - Non préemptif: les threads gardent le contrôle sur leur verrou - attente circulaire: la première boule est bloquée par la boule à sa droite, qui est bloquée par la boule à sa droite, et ainsi de suite jusqu'à fermer la boucle. Les conditions étant suffisantes (d'après wikipedia), on aura un deadlock. Si il n'y a que trois boules, deux conditions ne sont plus remplies. L'exclusion mutuelle car il y a une boule qui n'est exclue par aucune autre et l'attente circulaire. Les conditions étant nécessaires, un deadlock est donc impossible. Autre question: Ces 4 conditions sont-elles aussi suffisantes comme cela est suggéré dans l'article? Il faut faire des hypothèses supplémentaire sur le scheduling, j'imagine. J'ai bien l'impression que je pourrais créer un scheduler qui ne va jamais autoriser un deadlock même avec 4 boules.

AltStyle によって変換されたページ (->オリジナル) /