Het besturingssysteem is de meest fundamentele software die op een computer wordt uitgevoerd. Het is verantwoordelijk voor het beheer van het geheugen en de processen van de computer en voor het afschermen van de details van de hardware van de toepassingsprogramma's die het gebruiken. Het besturingssysteem van een computer zorgt ook voor een eerlijke toewijzing van middelen aan gebruikers en programma's, in tegenstelling tot gelijke distributie tussen processen. Een eerlijk planningssysteem maakt het mogelijk dat één proces de CPU gebruikt terwijl de andere in de wachtrij wacht. Als gevolg hiervan krijgt elke thread voldoende toegang tot beperkte bronnen om de twee meest voorkomende omstandigheden te voorkomen die anders het proces zouden hebben vertraagd: impasse en uithongering. Beide zijn verwante concepten waarbij de processen geen toegang hebben tot de bronnen. Dit artikel belicht een aantal belangrijke punten die de twee op verschillende fronten met elkaar vergelijken.
Deadlock is een voorwaarde waarbij een reeks threads wordt geblokkeerd omdat elk proces met een resource probeert toegang te krijgen tot een aantal andere bronnen die door een ander proces worden vastgehouden, waardoor uiteindelijk een eerlijke systeemplanning wordt voorkomen. Een impasse-situatie doet zich voor wanneer de volgende vier voorwaarden van kracht zijn: Onderlinge uitsluiting betekent dat slechts één proces tegelijkertijd toegang heeft tot een hulpbron; Geen bevoorrechtingsvoorwaarde betekent dat een hulpbron alleen vrijwillig kan worden vrijgemaakt door het proces dat de hulpbron bevat; Vasthouden en afwachten betekent dat middelen voor het vasthouden van een proces extra bronnen kunnen vragen die in het bezit zijn van andere processen en; Circulair wachten betekent dat twee of meer processen vastzitten in een cirkelvormige ketting die op elk proces wacht om hun respectievelijke bronnen vrij te geven.
Hongerverloding is een voorwaarde die ontstaat wanneer een proces oneindig doorloopt naar de wachttijd, omdat een proces met lage prioriteit nooit de kans krijgt om toegang te krijgen tot de resource vanwege een constante stroom van processen met hoge prioriteit die toegang hebben tot dezelfde resource. Het is een probleem met het resourcemanagement, omdat een proces de toegang tot de benodigde resource wordt ontzegd, waardoor het proces in een onbepaalde wachttijd wordt gestuwd. Het gebeurt omdat de benodigde bron nooit wordt toegewezen aan het proces waardoor het proces uithongeren naar hulpbronnen, vandaar de naam. De beste manier om uithongering te voorkomen, is het gebruik van de verouderde techniek die geleidelijk de prioriteit verhoogt van processen die zich in de wachttijd voor een lange tijd bevinden om een eerlijk planningssysteem te garanderen.
Zowel deadlock als uithongering zijn verwante concepten die een eerlijke systeemplanning voorkomen waarbij de processen worden geblokkeerd om toegang te krijgen tot de bronnen. Deadlock, zoals de naam al doet vermoeden, verwijst naar een voorwaarde waarbij een set threads of processen wordt geblokkeerd omdat elk proces wacht om een resource te verwerven die wordt vastgehouden door een ander proces, wat resulteert in een deadlock-situatie waarin de programma's niet meer werken. Honger wordt echter veroorzaakt door een impasse waardoor een proces vastloopt omdat een proces met lage prioriteit geen toegang krijgt tot een resource die is toegewezen aan een proces met hoge prioriteit.
Een impasse verwijst naar een specifieke toestand die optreedt wanneer een thread of een proces in een wachtperiode gaat omdat de systeemresource waarom hij heeft verzocht, wordt vastgehouden door een ander proces, dat op zijn beurt wacht op een ander proces om zijn resource vrij te geven, waardoor een impasse ontstaat. Dit wordt veroorzaakt door een slecht gebruik van hulpbronnen. Honger is een onvoorwaardelijke uitstelvoorwaarde waarbij een proces met lage prioriteit de toegang tot de benodigde middelen wordt ontzegd omdat de middelen worden toegewezen aan een ander proces met hoge prioriteit. Het is een probleem met het resourcemanagement dat het systeem dwingt om resources toe te wijzen aan alleen processen met hoge prioriteit.
Deadlock is de ultieme vorm van uithongering die wordt veroorzaakt wanneer de volgende vier voorwaarden tegelijkertijd optreden: wederzijdse uitsluiting, geen bevoorrechting, wachtstand en wachttijd en circulaire wachttijd. Een deadlock-toestand treedt alleen op in systemen waarin alle vier de voorwaarden gelden. Hongersnood vindt plaats op basis van verschillende omstandigheden, bijvoorbeeld wanneer er onvoldoende middelen zijn om rond te gaan en de prioriteit van processen lager wordt of wanneer processen zonder middelen grondstoffen naar andere processen overhandigen. Als een proces met lage prioriteit een resource aanvraagt die is gereserveerd voor processen met de hoogste prioriteit, verhindert dit proces voor altijd. Hongersnood vindt ook plaats wanneer middelen willekeurig worden toegewezen, waardoor processen langer moeten wachten.
Hongersnood kan worden voorkomen door een correct planningsalgoritme met prioriteitswachtrij te gebruiken dat in feite ook de verouderingsmethode gebruikt - een planningsmethode die de verouderingsfactor toevoegt aan de prioriteit van elk verzoek, wat betekent dat het prioriteitsniveau van processen met lage prioriteit die hebben gewacht, verhoogt voor een lange tijd. Ook moet het aanbieden van meer middelen aan programma's een voortdurende congestie van middelen voorkomen. Om te voorkomen dat het systeem in een impasse raakt, moet aan processen toegang tot een of meer bronnen worden ontzegd terwijl tegelijkertijd op anderen wordt gewacht en mag slechts één proces toegang krijgen tot een resource tegelijk.
Zowel deadlock als uithongering zijn verwante concepten in besturingssystemen voor meerdere verwerkingen of gedistribueerde systemen die ervoor zorgen dat een of meer threads of processen vastlopen in afwachting van de middelen die ze nodig hebben. Deadlock is een situatie die ontstaat wanneer een of meer processen om toegang tot dezelfde resource verzoeken waardoor het proces vastloopt, terwijl uithongering wordt veroorzaakt door een deadlock die het proces uitdrijft naar een onbepaalde uitsteltoestand omdat processen toegang wordt ontzegd tot een resource van een proces met hoge prioriteit en moet voor altijd wachten.