Livelock : quelle est, exemple, la différence avec Deadlock
⚡ Résumé intelligent
Le Livelock est une situation de concurrence où les processus changent constamment d'état en réponse les uns aux autres sans progresser réellement, restant actifs et consommant des cycles CPU sans jamais terminer leurs tâches ni se bloquer.
Qu’est-ce que Livelock ?
A livelock Il s'agit d'une situation où une demande de verrouillage exclusif est refusée de manière répétée, car de nombreuses situations se chevauchent.ping Les verrous partagés interfèrent constamment entre eux. Les processus changent sans cesse d'état, ce qui les empêche de terminer leur tâche.
Exemples de Livelock
Exemple 1:
L'exemple le plus simple de blocage temporel est celui de deux personnes qui se croisent dans un couloir et se décalent pour laisser passer l'autre. Elles continuent à se déplacer latéralement sans avancer, car elles se déplacent dans la même direction au même moment. Dans ce cas, elles ne se croisent jamais.
Exemple 2:
Dans l'image ci-dessus, chacun des deux processus a besoin de deux ressources et utilise un mécanisme d'interrogation rudimentaire pour tenter d'acquérir les verrous nécessaires. En cas d'échec, la méthode effectue une nouvelle tentative.
- Le processus A détient la ressource Y
- Le processus B contient la ressource X
- Le processus A nécessite la ressource X
- Le processus B nécessite la ressource Y
Supposons que le processus A s'exécute en premier et acquière la ressource X, puis que le processus B s'exécute et acquière la ressource Y. Quel que soit l'ordre d'exécution des processus, aucun des deux ne progresse davantage.
Cependant, aucun des deux processus n'est bloqué. Ils consomment des ressources du processeur de manière répétée sans progresser, et pourtant ils ne s'arrêtent jamais pour un bloc de traitement.
Par conséquent, cette situation n'est pas une impasse, car aucun processus n'est bloqué ; nous sommes plutôt confrontés à une situation équivalente à un interblocage, appelée LIVELOCK.
Qu’est-ce qui mène à Livelock ?
Le blocage est lié au nombre de processus autorisés par le système, lequel est défini par le nombre total d'entrées dans la table des processus. Ces emplacements dans la table des processus sont donc considérés comme des ressources limitées. Lorsque les processus tentent sans cesse d'accéder à ces ressources limitées tout en cédant continuellement la main aux autres, aucun ne progresse et le système entre en blocage.
Qu'est-ce que l'impasse ?
A impasse Un interblocage est une situation qui se produit dans un système d'exploitation lorsqu'un processus entre en état d'attente car un autre processus en attente détient la ressource demandée. L'interblocage est un problème courant en multiprocessus, où plusieurs processus partagent un type spécifique de ressource mutuellement exclusive, appelée interblocage logiciel.
Exemple de blocage
- Un exemple concret serait la circulation à sens unique.
- Ici, un pont est considéré comme une ressource.
- En cas de blocage, il peut être facilement résolu si une voiture fait marche arrière (en préemptant les ressources et en revenant en arrière).
- Plusieurs voitures devront peut-être être reculées en cas de situation de blocage.
- La famine est donc possible.
Exemple de blocage
Qu’est-ce que la famine ?
La famine de ressources survient lorsque des processus de faible priorité sont bloqués tandis que des processus de haute priorité continuent de progresser. Dans tout système, les demandes de ressources, qu'elles soient de haute ou de faible priorité, sont constantes. Par conséquent, une politique est nécessaire pour déterminer qui sera servi et à quel moment.
Avec certains algorithmes, certains processus peuvent ne pas obtenir le service souhaité même s'ils ne sont pas bloqués. La famine survient lorsque certains threads rendent les ressources partagées indisponibles pendant une période prolongée.
Exemple de famine
Par exemple, un objet propose une méthode synchrone susceptible de prendre beaucoup de temps à s'exécuter. Si un thread utilise fréquemment cette méthode, d'autres threads nécessitant également un accès synchrone fréquent au même objet sont souvent bloqués.
Différence entre impasse, famine et Livelock
- Un blocage est une situation qui se produit dans un système d'exploitation lorsqu'un processus entre dans un état d'attente parce que la ressource demandée est détenue par un autre processus en attente.
- Un blocage, en revanche, est presque similaire à un interblocage, sauf que les états des processus impliqués dans un blocage changent constamment en réponse les uns aux autres, sans qu'aucun ne progresse.
- Le blocage en direct est donc un cas unique de pénurie de ressources.



