Deadlock versus verhongering
Het belangrijkste verschil tussen impasse en hongersnood is de oorzaak en gevolg-relatie tussen beide; het is een impasse die hongersnood veroorzaakt. Een ander interessant verschil tussen impasse en honger is dat impasse een probleem is, terwijl hongersnood 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. Daarom moet de programmeur, om een eerlijk systeem te hebben, ervoor zorgen dat alle processen / threads voldoende toegang krijgen tot de bronnen die ze nodig hebben. Als dit niet het geval is, zal er een impasse ontstaan en zal dit later tot een hongersnood leiden. Over het algemeen kent een eerlijk systeem geen impasses of hongersnood. Deadlocks en hongersnood zullen vooral voorkomen wanneer veel threads strijden om beperkte middelen.
Wat is een deadlock?
Een impasse 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. Als in een transactiedatabase twee processen elk binnen hun eigen transactie dezelfde twee rijen met informatie bijwerken, maar in de omgekeerde volgorde, zal dit een impasse veroorzaken. Bij gelijktijdig programmeren kan er een impasse ontstaan wanneer twee concurrerende acties wachten tot elkaar verder gaan. In telecommunicatiesystemen kan een impasse optreden als gevolg van verlies of beschadiging van signalen.
Momenteel is impasse een van de grootste problemen bij systemen voor multiprocessing en parallel computergebruik. Als oplossing wordt een sluitsysteem genaamd processynchronisatie geïmplementeerd voor zowel software als hardware.
Wat is verhongering?
Volgens het woordenboek van de medische wetenschap is verhongering het gevolg van een ernstig of totaal gebrek aan voedingsstoffen die nodig zijn voor het in stand houden van leven. Evenzo is in de informatica hongersnood een probleem dat zich voordoet wanneer meerdere threads of processen op dezelfde bron wachten, wat een impasse 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 dezelfde thread moet elke keer 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. Daarom is uithongering een van de oplossingen om uit een impasse te geraken. Daarom wordt uithongering soms een soort van levensonderhoud genoemd. Als er veel processen of threads met hoge prioriteit zijn, zal een proces of thread met een lagere prioriteit altijd in een impasse belanden.
Er kunnen veel hongersnood zijn, zoals uithongeren van bronnen en uithongeren van CPU. Er zijn veel algemene voorbeelden van uithongering. Ze zijn het probleem van lezers-schrijvers en het probleem van eetfilosofen, dat bekender is. Er zitten vijf stille filosofen aan een ronde tafel met kommen 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 rechter vork heeft.
De ‘eetkamerfilosofen’
Wat is het verschil tussen Deadlock en Starvation?
• Werkwijze:
• In deadlock wachten de twee threads of processen op elkaar en gaan beide niet verder.
• Bij uithongering, wanneer twee of meer threads of processen op dezelfde bron wachten, zal de ene terugdraaien en de anderen de bron eerst laten gebruiken en vervolgens zal de uitgehongerde thread of het proces het opnieuw proberen. Daarom zullen alle threads of processen hoe dan ook verder gaan.
• Terugrollen:
• In een impasse zullen zowel threads / processen met hoge prioriteit als threads / processen met lage prioriteit oneindig op elkaar wachten. Het stopt nooit.
• Maar in geval van honger 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 verhongering is een soort van levensonderhoud en helpt soms om uit een impasse te geraken.
• Deadlock en uithongering:
• Een impasse veroorzaakt hongersnood, maar uithongering veroorzaakt geen impasse.
• Oorzaken:
• Er zal een impasse ontstaan als gevolg van wederzijdse uitsluiting, wachten en wachten, geen voorrang of circulair wachten.
• Uithongering treedt op als gevolg van schaarste aan middelen, ongecontroleerd beheer van middelen en procesprioriteiten.
Samenvatting:
Deadlock versus verhongering
Deadlock en hongersnood zijn enkele van de problemen die optreden als gevolg van dataraces en race-omstandigheden die optreden tijdens het programmeren en het implementeren van hardware. In een impasse zullen twee threads oneindig op elkaar wachten zonder te worden uitgevoerd, terwijl bij een hongersnood de ene thread terugdraait en de andere thread de bronnen laat gebruiken. Een impasse zal hongersnood veroorzaken, terwijl hongersnood een draad zal helpen om uit een impasse te komen.
Afbeeldingen beleefdheid:
- Computer door Steve Jurvetson uit Menlo Park, VS (CC BY 2.0)
- The "Dining Philosophers" door Bdesham (CC BY-SA 3.0)