Różnica między impasem a głodem

Deadlock vs Starvation
 

Główną różnicą między impasem a głodem jest związek przyczynowo-skutkowy między nimi; impas powoduje głód. Inną interesującą różnicą między impasem a głodem jest to, że impas jest problemem, podczas gdy głód może czasami pomóc wydostać się z impasu. W świecie komputerowym podczas pisania programu komputerowego będzie istniał więcej niż jeden proces / wątek, który będzie jednocześnie uruchamiany jeden po drugim w celu spełnienia wymaganej obsługi programu. Dlatego, aby mieć sprawiedliwy system, programista powinien upewnić się, że wszystkie procesy / wątki otrzymają lub uzyskają wystarczający dostęp do potrzebnych zasobów. Jeśli nie, nastąpi impas i doprowadzi to później do głodu. Zasadniczo uczciwy system nie zawiera żadnych zakleszczeń ani głodu. Zakleszczenia i głody wystąpią głównie wtedy, gdy wiele wątków rywalizuje o ograniczone zasoby.

Co to jest Deadlock?

Impas jest stan, który występuje, gdy dwa wątki lub procesy czekają na siebie, aby wykonać zadanie. Będą się tylko rozłączać, ale nigdy nie przerywają ani nie kończą zadania. W informatyce impasy można zobaczyć wszędzie. W bazie danych transakcji, gdy dwa procesy w ramach własnej transakcji aktualizują te same dwa wiersze informacji, ale w odwrotnej kolejności, powodują zakleszczenie. W programowaniu współbieżnym może wystąpić zakleszczenie, gdy dwie konkurencyjne akcje będą czekać na siebie nawzajem. W systemach telekomunikacyjnych może dojść do impasu z powodu utraty lub uszkodzenia sygnałów.

Obecnie impas jest jednym z głównych problemów w systemach wieloprocesowych i obliczeniach równoległych. Jako rozwiązanie zastosowano system blokujący o nazwie synchronizacja procesów jest zaimplementowany zarówno dla oprogramowania, jak i sprzętu.

Czym jest Głód?

Ze słownika nauk medycznych głód jest wynikiem poważnego lub całkowitego braku składników odżywczych niezbędnych do utrzymania życia. Podobnie w informatyce głod jest napotkany problem gdy wiele wątków lub procesów czeka na ten sam zasób, co nazywa się impasem.

Aby wyjść z impasu, jeden z procesów lub wątków powinien się poddać lub wycofać, aby drugi wątek lub proces mógł korzystać z zasobu. Jeśli tak się ciągle dzieje i ten sam proces lub wątek musi za każdym razem rezygnować lub wycofywać się, pozwalając innym procesom lub wątkom na korzystanie z zasobów, wówczas wybrany proces lub wątek, który wycofał się, przejdzie w stan zwany głodem. W związku z tym, głód jest jednym z rozwiązań, aby wyjść z impasu. Dlatego czasami nazywa się głód rodzaj livelocka. Gdy istnieje wiele procesów lub wątków o wysokim priorytecie, proces lub wątek o niższym priorytecie zawsze głodują w impasie.

Może być wiele głodówek, takich jak głodujący z zasobów i głodujący na procesorze. Istnieje wiele typowych przykładów głodu. Są problemem czytelników-pisarzy i filozofów kulinarnych, który jest bardziej znany. Pięciu cichych filozofów siedzi przy okrągłym stole z miskami spaghetti. Widelce są umieszczane między każdą parą sąsiednich filozofów. Każdy filozof musi na przemian myśleć i jeść. Jednak filozof może jeść spaghetti tylko wtedy, gdy ma zarówno lewy, jak i prawy widelec.

„Filozofowie kulinarni”

Jaka jest różnica między Deadlockiem a Starvation?

• Proces:

• W impasie dwa wątki lub procesy będą na siebie czekać i oba nie będą kontynuować.

• W przypadku głodu, gdy dwa lub więcej wątków lub procesów czeka na ten sam zasób, jeden z nich cofnie się i pozwoli innym najpierw użyć zasobu, a następnie głodny wątek lub proces spróbuje ponownie. W związku z tym wszystkie wątki lub procesy będą mimo to kontynuowane.

• Cofanie:

• W impasie zarówno wątki / procesy o wysokim priorytecie, jak i wątki / procesy o niskim priorytecie będą na siebie czekać w nieskończoność. To się nigdy nie kończy.

• Ale w przypadku głodu, osoby o niskim priorytecie będą czekać lub wycofać się, ale te o wysokim priorytecie będą kontynuowane.

• Oczekiwanie lub blokada:

• Zakleszczenie to cykliczne oczekiwanie.

• Głód jest rodzajem blokady i czasami pomaga wydostać się z impasu.

• Zakleszczenie i głód:

• Zakleszczenie powoduje głód, ale głód nie powoduje zakleszczenia.

• Przyczyny:

• Nastąpi impas z powodu wzajemnego wykluczenia, wstrzymania i oczekiwania, braku uprzedzenia lub cyklicznego oczekiwania.

• Głód występuje z powodu niedoboru zasobów, niekontrolowanego zarządzania zasobami i priorytetów procesu.

Streszczenie:

Deadlock vs. Starvation

Zakleszczenie i głód to niektóre z problemów, które występują z powodu wyścigów danych i warunków wyścigu, które występują podczas programowania, a także podczas wdrażania sprzętu. W impasie dwa wątki będą nieskończenie długo na siebie czekać bez wykonania, podczas gdy w wyniku głodu jeden wątek cofnie się, a drugi pozwoli na wykorzystanie zasobów. Zakleszczenie spowoduje głód, podczas gdy głód pomoże wątkowi wydostać się z impasu.

Obrazy dzięki uprzejmości:

  1. Komputer Steve'a Jurvetsona z Menlo Park, USA (CC BY 2.0)
  2. „Jadalni filozofowie” Bdeshama (CC BY-SA 3.0)