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.
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.
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”
• 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.
• 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.
• Zakleszczenie to cykliczne oczekiwanie.
• Głód jest rodzajem blokady i czasami pomaga wydostać się z impasu.
• Zakleszczenie powoduje głód, ale głód nie powoduje zakleszczenia.
• 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:
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: