Deadlock vs Starvation
Den største forskel mellem dødvande og sult er årsags- og virkningsforholdet mellem dem; det er dødvande, der forårsager sult. En anden interessant forskel mellem dødvande og sult er, at dødvande er et problem, mens sult nogle gange kan hjælpe med at komme ud af en dødvande. I computerverdenen vil der, når du skriver et computerprogram, være mere end én proces/tråd, der vil køre efter hinanden samtidigt for at opfylde den nødvendige service til programmet. Derfor, for at have et retfærdigt system, bør programmøren være nødt til at sikre, at alle processer/tråde modtager eller får tilstrækkelig adgang til ressourcer, som de har brug for. Hvis ikke, vil der være dødvande, og det vil føre til en sult senere. Generelt indeholder et retfærdigt system ingen dødvande eller sult. Dødlåse og sult vil hovedsageligt opstå, når mange tråde konkurrerer om begrænsede ressourcer.
Hvad er deadlock?
En dødvande er en tilstand, der opstår, når to tråde eller processer venter på, at hinanden fuldfører opgaven. De vil kun lægge på, men aldrig stoppe eller afslutte deres opgave. Inden for datalogi kan dødvande ses over alt. I en transaktionsdatabase vil det forårsage et dødvande, når to processer i hver sin transaktion opdaterer de samme to rækker af information, men i den modsatte rækkefølge. Ved samtidig programmering kan der opstå et dødvande, når to konkurrerende handlinger venter på, at hinanden fortsætter fremad. I telekommunikationssystemer kan der opstå dødvande på grund af tab eller korruption af signaler.
I øjeblikket er dødvande et af hovedproblemerne i multiprocessing-systemer og parallel computing. Som en løsning implementeres et låsesystem kaldet processynkronisering for software såvel som hardware.
Hvad er sult?
Fra lægevidenskabens ordbog er sult et resultat af alvorlig eller total mangel på næringsstoffer, der er nødvendige for at opretholde livet. På samme måde er sult i datalogi et problem, der opstår, når flere tråde eller processer venter på den samme ressource, hvilket kaldes en dødvande.
For at komme ud af et dødvande, bør en af processerne eller trådene være nødt til at give op eller rulle tilbage, så den anden tråd eller proces kan bruge ressourcen. Hvis dette sker kontinuerligt, og den samme proces eller tråd må give op eller rulle tilbage hver gang, mens andre processer eller tråde lader bruge ressourcen, så vil den valgte proces eller tråd, som rullede tilbage, gennemgå en situation kaldet sult. Derfor er sult en af løsningerne for at komme ud af en dødvande. Derfor kaldes sult nogle gange for en slags livelock. Når der er mange processer eller tråde med høj prioritet, vil en proces eller tråd med lavere prioritet altid sulte i en dødvande.
Der kan være mange sult, såsom at sulte på ressourcer og sulte på CPU. Der er mange almindelige eksempler på sult. De er Readers-writers problem og spisefilosoffers problem, som er mere berømt. Der sidder fem tavse filosoffer ved et rundt bord med skåle med spaghetti. Gafler er placeret mellem hvert par af tilstødende filosoffer. Hver filosof skal skiftevis tænke og spise. En filosof kan dog kun spise spaghetti, når han har både venstre og højre gafler.
"Spisefilosofferne"
Hvad er forskellen mellem dødvande og sult?
Proces:
• I deadlock vil de to tråde eller processer vente på hinanden, og begge fortsætter ikke fremad.
• I sult, når to eller flere tråde eller processer venter på den samme ressource, vil den ene rulle tilbage og lade de andre bruge ressourcen først, og derefter vil den sultende tråd eller processen forsøge igen. Derfor vil alle tråde eller processer under alle omstændigheder fortsætte fremad.
Rolling Back:
• I en dødvande vil både højprioriterede tråde/processer, såvel som lavprioriterede tråde/processer, vente på hinanden i det uendelige. Det slutter aldrig.
• Men i en sult vil lav prioritet vente eller rulle tilbage, men høj prioritet vil fortsætte.
Venter eller lås:
• En dødvande er en cirkulær ventetid.
• En udsultning er en slags livlås og hjælper nogle gange med at komme ud af en dødvande.
Deadlock and Starvation:
• En dødvande forårsager sult, men sult forårsager ikke en dødvande.
Årsager:
• Et dødvande vil opstå på grund af gensidig udelukkelse, hold og vent, ingen foregribelse eller cirkulær ventetid.
• Sult opstår på grund af knaphed på ressourcer, ukontrolleret styring af ressourcer og procesprioriteter.
Oversigt:
Deadlock vs. Starvation
Deadlock og sult er nogle af de problemer, der opstår på grund af dataløb og løbsforhold, der opstår under programmering samt implementering af hardware. I en dødvande vil to tråde uendeligt vente på hinanden uden at udføre, mens den ene tråd i en sult vil rulle tilbage og lade den anden tråd bruge ressourcerne. En dødvande vil forårsage sult, hvorimod sult vil hjælpe en tråd med at komme ud af en dødvande.