Livelock : quelle est, exemple, la différence avec Deadlock

Qu’est-ce que Livelock ?

A livelock Il s'agit d'une situation dans laquelle une demande de verrouillage exclusif est refusée à plusieurs reprises, car de nombreux verrous partagés qui se chevauchent continuent de s'interférer les uns avec les autres. Les processus changent constamment de statut, ce qui les empêche encore davantage d'accomplir la tâche. Cela les empêche encore plus de terminer la tâche.

Exemples de Livelock

1 Exemple:

Un exemple le plus simple de Livelock serait deux personnes qui se rencontrent face à face dans un couloir, et toutes deux s'écartent pour laisser passer l'autre. Ils finissent par se déplacer d’un côté à l’autre sans faire aucun progrès car ils se déplacent de la même manière à ce moment-là. Ici, ils ne se croisent jamais.

2 Exemple:

Exemples de Livelock

Vous pouvez voir dans l'image ci-dessus que chacun des deux processus donnés a besoin de deux ressources et qu'ils utilisent le registre d'entrée d'interrogation primitif pour essayer d'acquérir les verrous qui leur sont nécessaires. Si la tentative échoue, la méthode fonctionne à nouveau.

  1. Traiter A et conserver la ressource Y
  2. Le processus B contient la ressource X
  3. Le processus A nécessite une ressource X
  4. Le processus B nécessite la ressource Y

En supposant que le processus A s'exécute en premier et acquiert la ressource de données X, puis que le processus B s'exécute et acquiert la ressource Y, quel que soit le processus exécuté en premier, aucun d'entre eux ne progresse davantage.

Cependant, aucun des deux processus n’est bloqué. Ils utilisent les ressources CPU de manière répétée sans qu'aucun progrès ne soit réalisé mais arrêtent également tout bloc de traitement.

Cette situation n’est donc pas celle d’un impasse car il n'y a pas un seul processus qui est bloqué, mais nous sommes confrontés à une situation équivalente à une impasse, qui est LIVELOCK.

Qu’est-ce qui mène à Livelock ?

Livelock se produit lorsque le nombre total de processus autorisés dans un système spécifique doit être défini par le nombre total d'entrées dans la table des processus. Par conséquent, les emplacements de la table de processus doivent être appelés ressources finies.

Qu'est-ce que l'impasse ?

Un blocage est une situation qui se produit dans le système d'exploitation lorsqu'un processus entre dans un état d'attente parce qu'un autre processus en attente détient la ressource demandée. Le blocage est un problème courant dans le multitraitement où plusieurs processus partagent un type spécifique de ressource mutuellement exclusive appelé verrou logiciel ou logiciel.

Exemple de blocage

  • Un exemple concret serait le trafic, qui ne va que dans une seule direction.
  • Ici, un pont est considéré comme une ressource.
  • Ainsi, lorsqu'un blocage se produit, il peut être facilement résolu si une voiture effectue une sauvegarde (préemption des ressources et restauration).
  • Plusieurs voitures devront peut-être être reculées en cas de situation de blocage.
  • La famine est donc possible.
Exemple de blocage
Exemple de blocage

Qu’est-ce que la famine ?

La famine est une situation dans laquelle tous les processus de faible priorité sont bloqués et les processus de haute priorité se poursuivent. Dans n’importe quel système, les demandes de ressources hautement/basse priorité continuent de se produire de manière dynamique. Ainsi, une certaine politique est nécessaire pour décider qui reçoit une aide et à quel moment.

En utilisant certains algorithmes, certains processus peuvent ne pas obtenir le service souhaité même s'ils ne sont pas bloqués. La famine se produit lorsque certains threads rendent les ressources partagées indisponibles pendant une longue période.

Exemple de famine

Par exemple, un objet propose une méthode synchronisée dont le retour risque de prendre beaucoup de temps. Si un thread utilise fréquemment cette méthode, les autres threads qui nécessitent également un accès synchronisé fréquent au même objet seront souvent bloqués.

Différence entre impasse, famine et Livelock

  • Un blocage est une situation qui se produit dans le 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 livelock, en revanche, est presque similaire à un blocage, sauf que les états des processus impliqués dans un livelock continuent de changer les uns par rapport aux autres, sans qu'aucun ne progresse.
  • Livelock est donc un cas unique de pénurie de ressources.

Résumé

  • Définition : Un Livelock est une situation dans laquelle une demande de verrouillage exclusif est refusée à plusieurs reprises, car de nombreux verrous partagés qui se chevauchent continuent de s'interférer les uns avec les autres.
  • Livelock se produit lorsque le nombre total de processus autorisés dans un système spécifique doit être défini par le nombre total d'entrées dans la table des processus.
  • Un blocage est une situation qui se produit dans le système d'exploitation lorsqu'un processus entre dans un état d'attente parce qu'un autre processus en attente détient la ressource demandée.
  • Un exemple concret serait le trafic, qui ne va que dans une seule direction.
  • Un exemple de Livelock serait deux personnes qui se rencontrent face à face dans un couloir, et toutes deux s'écartent pour laisser passer l'autre.
  • La famine est une situation dans laquelle tous les processus de faible priorité sont bloqués et les processus de haute priorité se poursuivent.