Impasse vs Famine
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 alors que la famine peut, parfois, aider à sortir d'une impasse. Dans le monde informatique, lors de l'écriture d'un programme informatique, il y aura plus d'un processus/thread qui s'exécutera simultanément l'un après l'autre afin de fournir le service requis au programme. Par conséquent, afin d'avoir un système équitable, le programmeur doit s'assurer que tous les processus/threads recevront ou obtiendront un accès suffisant aux ressources dont ils ont besoin. Sinon, il y aura une impasse, et cela conduira à une famine plus tard. Généralement, un système équitable ne contient pas d'impasses ou de famines. Les blocages et les famines se produiront principalement lorsque de nombreux threads sont en concurrence pour des ressources limitées.
Qu'est-ce que l'impasse ?
Un interblocage est une condition qui se produit lorsque deux threads ou processus attendent l'un de l'autre pour terminer la tâche. Ils ne feront que raccrocher mais ne s'arrêteront jamais ni ne termineront leur tâche. En informatique, les blocages sont visibles partout. Dans une base de données de transactions, lorsque deux processus, chacun dans sa propre transaction, mettent à jour les deux mêmes lignes d'informations mais dans l'ordre opposé, cela provoquera un blocage. En programmation concurrente, un blocage peut se produire lorsque deux actions concurrentes attendent l'une de l'autre pour avancer. Dans les systèmes de télécommunications, un blocage peut survenir en raison de la perte ou de la corruption des signaux.
À l'heure actuelle, l'interblocage est l'un des principaux problèmes des systèmes multiprocesseurs et du calcul parallèle. En guise de 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 ?
D'après le dictionnaire de la science médicale, la famine est le résultat d'un manque grave 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 qui s'appelle un blocage.
Afin de sortir d'une impasse, l'un des processus ou threads doit abandonner ou revenir en arrière afin 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 en arrière à chaque fois tout en laissant d'autres processus ou threads utiliser la ressource, alors le processus ou thread sélectionné, qui a été 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, la famine est parfois appelée une sorte de livelock. Lorsqu'il existe de nombreux processus ou threads de haute priorité, un processus ou un thread de priorité inférieure mourra toujours de faim dans une impasse.
Il peut y avoir de nombreuses famines telles que la famine en ressources et la famine en CPU. Il existe de nombreux exemples courants de famine. Ce sont le problème des lecteurs-écrivains et le problème des philosophes de la restauration, qui est plus célèbre. Il y a cinq philosophes silencieux assis à une table ronde avec des bols de spaghetti. Des 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 s'il a les deux fourchettes gauche et droite.
Les "philosophes de la table"
Quelle est la différence entre Deadlock et Starvation ?
Processus:
• En cas d'interblocage, les deux threads ou processus s'attendent l'un l'autre et les deux n'avancent pas.
• En cas de famine, lorsque deux ou plusieurs threads ou processus attendent la même ressource, l'un d'entre eux s'annulera et laissera les autres utiliser la ressource en premier, puis le thread ou le processus affamé réessayera. Par conséquent, tous les threads ou processus continueront de toute façon.
Annuler:
• Dans un blocage, les threads/processus à haute priorité, ainsi que les threads/processus à faible priorité, s'attendront indéfiniment. Ça ne finit jamais.
• Mais, en cas de famine, ceux de faible priorité attendront ou reculeront, mais ceux de haute priorité continueront.
Attente ou verrouillage:
• Une impasse est une attente circulaire.
• Une famine est une sorte de blocage et aide parfois à sortir d'une impasse.
Impasse et famine:
• Un blocage provoque la famine, mais la famine ne provoque pas de blocage.
Causes:
• Une impasse se produira en raison de l'exclusion mutuelle, de la mise en attente et de l'attente, de l'absence de préemption ou de l'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 de processus.
Résumé:
Impasse contre famine
Les impasses et les famines sont quelques-uns des problèmes qui surviennent en raison des courses de données et des conditions de course qui se produisent lors de la programmation ainsi que de la mise en œuvre du matériel. Dans une impasse, deux threads s'attendront indéfiniment sans s'exécuter tandis que, dans une famine, un thread reviendra en arrière et laissera l'autre thread utiliser les ressources. Un blocage provoquera une famine alors que la famine aidera un thread à sortir d'une impasse.