Différence entre l'impasse et la famine | Deadlock vs Starvation
Deadlock vs Starvation
La principale différence entre l'impasse et la famine est la relation de cause à effet entre eux; c'est l'impasse qui cause la famine. Une autre différence intéressante entre l'impasse et la famine est que l'impasse est un problème tandis que la famine peut, parfois, aider à sortir d'une impasse. Dans le monde informatique, lors de l'écriture d'un programme d'ordinateur, il y aura plus d'un processus / thread qui s'exécuteront simultanément les uns après les autres afin de remplir le service requis pour le programme. Par conséquent, afin d'avoir un système équitable, le programmeur devrait s'assurer que tous les processus / threads recevront ou auront suffisamment accès aux ressources dont ils ont besoin. Sinon, il y aura un blocage, et cela conduira à une famine plus tard. Généralement, un système équitable ne contient pas d'impasses ou de famines. Les deadlocks et les famines se produiront principalement lorsque de nombreux threads sont en compétition pour des ressources limitées.
Qu'est-ce que le blocage?
Un blocage est une condition qui se produit lorsque deux threads ou processus s'attendent à terminer la tâche . Ils ne raccrocheront mais ne s'arrêteront jamais ou finiront leur tâche. En informatique, les blocages peuvent être observés partout. Dans une base de données de transactions, lorsque deux processus, chacun dans sa propre transaction, mettent à jour les mêmes deux lignes d'informations mais dans l'ordre inverse, provoquent un blocage. Dans la programmation simultanée, un blocage peut se produire lorsque deux actions en concurrence vont attendre que l'une l'autre avance. Dans les systèmes de télécommunications, une impasse peut se produire en raison de la perte ou de la corruption de signaux.
Actuellement, l'impasse est l'un des principaux problèmes des systèmes multiprocesseurs et du calcul parallèle. En tant que solution, un système de verrouillage appelé synchronisation de processus est implémenté pour le logiciel ainsi que pour le matériel.
Qu'est-ce que la famine?
Du fait du dictionnaire de la science médicale, la famine est le résultat d'un manque sévère ou total de nutriments nécessaires au maintien de la vie. De même, en informatique, la famine est un problème rencontré lorsque plusieurs threads ou processus attendent la même ressource, ce que l'on appelle un blocage .
Pour sortir d'une impasse, l'un des processus ou threads doit abandonner ou revenir en arrière pour que l'autre thread ou processus puisse utiliser la ressource. Si cela se produit continuellement et que le même processus ou thread doit abandonner ou revenir à chaque fois tout en laissant d'autres processus ou threads utiliser la ressource, alors le processus sélectionné ou le thread qui sera annulé subira une situation appelée famine.Par conséquent, pour sortir d'une impasse, la famine est l'une des solutions . Par conséquent, parfois la famine est appelée une sorte de livelock . Quand il y a beaucoup de processus ou de threads hautement prioritaires, un processus ou un thread moins prioritaire meurt toujours de faim dans un blocage.
Il peut y avoir beaucoup de famines comme affamées sur les ressources et affamées sur CPU . Il existe de nombreux exemples communs sur la famine. Ils sont le problème des lecteurs-écrivains et le problème des philosophes à manger, qui est plus célèbre. Il y a cinq philosophes silencieux assis à une table ronde avec des bols de spaghetti. Les fourches sont placées entre chaque paire de philosophes adjacents. Chaque philosophe doit alternativement penser et manger. Cependant, un philosophe ne peut manger des spaghettis que lorsqu'il a à la fois la fourchette gauche et la fourchette droite.
Les "philosophes de la restauration"
Quelle est la différence entre l'impasse et la famine?
• Processus:
• Dans l'impasse, les deux threads ou processus attendront l'un l'autre et les deux ne se poursuivront pas.
• En cas de famine, lorsque deux ou plusieurs threads ou processus attendent la même ressource, l'un d'eux recule et laisse les autres utiliser la ressource d'abord, puis le thread ou le processus affamé réessayera. Par conséquent, tous les threads ou processus vont de toute façon avancer.
• Rolling Back:
• Dans une impasse, les threads / processus à priorité élevée, ainsi que les threads / processus à priorité faible, attendront l'un l'autre à l'infini. Ça ne finit jamais.
• Mais, en cas de famine, les priorités peu prioritaires attendront ou reculeront, mais celles à haute priorité continueront.
• En attente ou verrou:
• Un blocage est une attente circulaire.
• Une famine est une sorte de livelock et aide parfois à sortir d'une impasse.
• Impasse et famine:
• Une impasse entraîne la famine, mais la famine ne cause pas de blocage.
• Causes:
• Un blocage se produit en raison de l'exclusion mutuelle, attente et attente, pas de préemption ou d'attente circulaire.
• La famine se produit en raison de la rareté des ressources, de la gestion incontrôlée des ressources et des priorités du processus.
Résumé:
Le blocage et la famine
Le blocage et les famines sont quelques-uns des problèmes qui se produisent en raison des courses de données et des conditions de course qui se produisent pendant la programmation. Dans une impasse, deux threads attendront infiniment l'un l'autre sans s'exécuter tandis que, dans une famine, un thread va reculer et laisser l'autre thread utiliser les ressources. Une impasse provoquera la famine tandis que la famine aidera un fil à sortir d'une impasse.
Images Courtesy:
- Ordinateur de Steve Jurvetson de Menlo Park, Etats-Unis (CC BY 2. 0)
- "Philosophers de la restauration" de Bdesham (CC BY-SA 3. 0)