Deadlock versus honger
Het belangrijkste verschil tussen een impasse en hongersnood is de oorzaak-gevolgrelatie tussen beide; het is een impasse die honger veroorzaakt. Een ander interessant verschil tussen impasse en verhongering is dat impasse een probleem is, terwijl verhongering soms kan helpen om uit een impasse te komen. In de computerwereld zal er bij het schrijven van een computerprogramma meer dan één proces/thread zijn die gelijktijdig achter elkaar worden uitgevoerd om de vereiste service aan het programma te vervullen. Om een eerlijk systeem te hebben, moet de programmeur er daarom voor zorgen dat alle processen/threads voldoende toegang krijgen tot de bronnen die ze nodig hebben. Zo niet, dan zal er een impasse zijn, en het zal later leiden tot een hongersnood. Over het algemeen kent een eerlijk systeem geen impasses of hongersnood. Deadlocks en hongersnood zullen vooral optreden wanneer veel threads strijden om beperkte middelen.
Wat is Deadlock?
Een deadlock is een toestand die optreedt wanneer twee threads of processen op elkaar wachten om de taak te voltooien. Ze zullen alleen ophangen, maar nooit stoppen of hun taak afmaken. In de informatica zijn overal impasses te zien. Wanneer in een transactiedatabase twee processen elk binnen hun eigen transactie dezelfde twee rijen informatie bijwerken, maar in de tegenovergestelde volgorde, zal dit een impasse veroorzaken. Bij gelijktijdig programmeren kan een impasse optreden wanneer twee concurrerende acties op elkaar wachten om verder te gaan. In telecommunicatiesystemen kan een impasse optreden als gevolg van verlies of corruptie van signalen.
Op dit moment is een impasse een van de belangrijkste problemen in multiprocessing-systemen en parallel computing. Als oplossing is een sluitsysteem, processynchronisatie genaamd, geïmplementeerd voor zowel software als hardware.
Wat is honger?
Uit het woordenboek van de medische wetenschap blijkt dat honger het gevolg is van een ernstig of totaal gebrek aan voedingsstoffen die nodig zijn voor het in stand houden van het leven. Evenzo is uithongering in de informatica een probleem dat optreedt wanneer meerdere threads of processen wachten op dezelfde bron, wat een deadlock wordt genoemd.
Om uit een impasse te komen, moet een van de processen of threads het opgeven of terugdraaien, zodat de andere thread of het andere proces de bron kan gebruiken. Als dit continu gebeurt en hetzelfde proces of de thread elke keer moet opgeven of terugdraaien terwijl andere processen of threads de bron mogen gebruiken, dan zal het geselecteerde proces of de thread, die wordt teruggedraaid, een situatie ondergaan die uithongering wordt genoemd. Om uit een impasse te geraken, is hongersnood daarom een van de oplossingen. Daarom wordt uithongering soms een soort livelock genoemd. Wanneer er veel processen of threads met een hoge prioriteit zijn, zal een proces of thread met een lagere prioriteit altijd in een impasse verhongeren.
Er kunnen veel hongersnood zijn, zoals honger op bronnen en honger op CPU. Er zijn veel veelvoorkomende voorbeelden van honger. Ze zijn het probleem van lezers-schrijvers en het probleem van eetfilosofen, dat bekender is. Er zitten vijf zwijgende filosofen aan een ronde tafel met schalen spaghetti. Vorken worden tussen elk paar aangrenzende filosofen geplaatst. Elke filosoof moet afwisselend denken en eten. Een filosoof kan echter alleen spaghetti eten als hij zowel een linker- als een rechtervork heeft.
De "dinerfilosofen"
Wat is het verschil tussen Deadlock en Honger?
Proces:
• In een impasse zullen de twee threads of processen op elkaar wachten en beide gaan niet verder.
• In hongersnood, wanneer twee of meer threads of processen wachten op dezelfde resource, zal de ene terugdraaien en de anderen de resource eerst laten gebruiken en vervolgens zal de uitgehongerde thread of het uitgehongerde proces het opnieuw proberen. Daarom zullen alle threads of processen hoe dan ook vooruit gaan.
Terugrollen:
• In een impasse zullen zowel threads/processen met hoge prioriteit als threads/processen met lage prioriteit oneindig op elkaar wachten. Het eindigt nooit.
• Maar in een verhongering zullen degenen met een lage prioriteit wachten of terugdraaien, maar degenen met een hoge prioriteit zullen doorgaan.
Wachten of vergrendelen:
• Een impasse is een cirkelvormig wachten.
• Een hongersnood is een soort levenslot en helpt soms om uit een impasse te komen.
Deadlock en honger:
• Een impasse veroorzaakt hongersnood, maar honger veroorzaakt geen impasse.
Oorzaken:
• Een impasse zal optreden als gevolg van wederzijdse uitsluiting, wachten en wachten, geen voorrang of circulaire wachten.
• Verhongering treedt op als gevolg van schaarste aan middelen, ongecontroleerd beheer van middelen en procesprioriteiten.
Samenvatting:
Deadlock vs. hongersnood
Deadlock en hongersnood zijn enkele van de problemen die optreden als gevolg van dataraces en race-omstandigheden die optreden tijdens het programmeren en implementeren van hardware. In een impasse zullen twee threads oneindig op elkaar wachten zonder te worden uitgevoerd, terwijl in een verhongering de ene thread terugrolt en de andere thread de middelen laat gebruiken. Een impasse zal uithongering veroorzaken, terwijl uithongering een draad zal helpen om uit een impasse te komen.