Różnica między zakleszczeniem a głodem w systemie operacyjnym

System operacyjny jest najbardziej podstawowym oprogramowaniem działającym na komputerze. Odpowiada za zarządzanie pamięcią i procesami komputera, a także ochronę szczegółów sprzętu przed używającymi go aplikacjami. System operacyjny komputera zapewnia również sprawiedliwy przydział zasobów użytkownikom i programom, a nie równy podział między procesami. Rzetelny system planowania pozwala jednemu procesowi na użycie procesora, podczas gdy drugi czeka w kolejce. W rezultacie każdy wątek ma wystarczający dostęp do ograniczonych zasobów, co zapobiega dwóm najczęstszym warunkom, które w innym przypadku opóźniłyby ten proces: Zakleszczenie i Głód. Obie są pokrewnymi koncepcjami, w których procesy nie mają dostępu do zasobów. W tym artykule podkreślono kilka kluczowych punktów porównujących dwa na różnych frontach.

Co to jest Deadlock?

Zakleszczenie jest warunkiem, w którym zestaw wątków jest blokowany, ponieważ każdy proces utrzymujący zasób próbuje uzyskać dostęp do niektórych innych zasobów, które są utrzymywane przez inny proces, ostatecznie uniemożliwiając prawidłowe planowanie systemu. Zakleszczenie powstaje, gdy spełnione są następujące cztery warunki: Wzajemne wykluczenie oznacza, że ​​tylko jeden proces może uzyskać dostęp do zasobu na raz; Brak warunku zwolnienia oznacza, że ​​zasób może zostać zwolniony tylko dobrowolnie przez proces przechowujący zasób; Wstrzymaj i czekaj oznacza, że ​​proces przechowujący zasoby może zażądać dodatkowych zasobów przechowywanych przez inne procesy; Cykliczne oczekiwanie oznacza, że ​​dwa lub więcej procesów utknęło w okrągłym łańcuchu, czekając, aż każdy proces uwolni odpowiednie zasoby.

Czym jest Głód?

Głód jest stanem, który powstaje, gdy proces przechodzi w okres oczekiwania w nieskończoność, ponieważ proces o niskim priorytecie nigdy nie ma szansy na dostęp do zasobu ze względu na ciągły przepływ procesów o wysokim priorytecie uzyskujących dostęp do tego samego zasobu. Jest to problem z zarządzaniem zasobami, ponieważ procesowi odmawia się dostępu do wymaganego zasobu, tym samym przesuwając proces na czas nieokreślony. Dzieje się tak, ponieważ zasób, którego potrzebuje, nigdy nie jest przydzielany do procesu, co powoduje, że proces głoduje zasobów, stąd nazwa. Najlepszym sposobem uniknięcia głodu jest zastosowanie techniki starzenia, która stopniowo zwiększa priorytet procesów trwających przez długi czas w celu zapewnienia sprawiedliwego systemu planowania.

Różnica między Deadlock i Starvation w systemie operacyjnym

  1. Definicja impasu i głodu

Zarówno impas, jak i głód są powiązanymi koncepcjami, które uniemożliwiają uczciwe planowanie systemu, w którym procesy są blokowane przed dostępem do zasobów. Zakleszczenie, jak sama nazwa wskazuje, odnosi się do stanu, w którym zestaw wątków lub procesów jest blokowany, ponieważ każdy proces czeka na uzyskanie zasobu, który jest utrzymywany przez inny proces, co powoduje sytuację zakleszczenia, w której programy przestają działać. Z drugiej strony głód jest wywoływany przez impas, który powoduje zawieszenie się procesu, ponieważ procesowi o niskim priorytecie odmawia się dostępu do zasobu przydzielonego do procesu o wysokim priorytecie.

  1. Stan

Zakleszczenie odnosi się do określonego stanu, który występuje, gdy wątek lub proces przechodzi w okres oczekiwania, ponieważ żądany zasób systemowy jest utrzymywany przez inny proces, który z kolei czeka na zwolnienie zasobu przez inny proces, tworząc w ten sposób zakleszczenie. Jest to spowodowane złym wykorzystaniem zasobów. Głodowanie jest warunkiem odroczenia na czas nieokreślony, w którym procesowi o niskim priorytecie odmawia się dostępu do wymaganych zasobów, ponieważ zasoby są przydzielane do innego procesu o wysokim priorytecie. Jest to problem zarządzania zasobami, który zmusza system do przydzielania zasobów tylko do procesów o wysokim priorytecie.

  1. Charakterystyka impasu i głodu

Zakleszczenie jest ostateczną formą głodu, która powstaje, gdy jednocześnie występują następujące cztery warunki: wzajemne wykluczenie, brak uprzedzenia, wstrzymanie i oczekiwanie oraz cykliczne oczekiwanie. Zakleszczenie występuje tylko w systemach, w których wszystkie cztery warunki są spełnione. Głód występuje w oparciu o różne warunki, na przykład gdy nie ma wystarczającej ilości zasobów do obejścia, a priorytet procesów zaczyna spadać lub gdy procesy zaczynają przekazywać zasoby innym procesom bez kontroli. Jeśli proces o niskim priorytecie zażąda zasobu zarezerwowanego dla procesów o najwyższym priorytecie, proces głodzi na zawsze. Głód występuje także wtedy, gdy zasoby są przydzielane arbitralnie, co powoduje, że procesy muszą czekać dłużej.

  1. Zapobieganie

Można zapobiec głodowi, stosując odpowiedni algorytm szeregowania z kolejką priorytetową, który w rzeczywistości również stosuje technikę starzenia - technikę planowania, która dodaje czynnik starzenia do priorytetu każdego żądania, co oznacza, że ​​zwiększa poziom priorytetu procesów o niskim priorytecie, które czekały przez długi czas. Zapewnienie większej ilości zasobów programom powinno również unikać ciągłego przeciążania zasobów. Aby zapobiec zakleszczeniu się systemu, procesom należy odmówić dostępu do jednego lub większej liczby zasobów, jednocześnie czekając na inne, a tylko jeden proces powinien mieć dostęp do zasobu jednocześnie.

Deadlock vs. Starvation: Tabela porównawcza

Podsumowanie Deadlock VS. Głód

Zarówno impas, jak i głód to pokrewne pojęcia w wieloprocesowych systemach operacyjnych lub systemach rozproszonych, które powodują, że jeden lub więcej wątków lub procesów utknie w oczekiwaniu na potrzebne zasoby. Zakleszczenie to sytuacja, która powstaje, gdy jeden lub więcej procesów żąda dostępu do tego samego zasobu, powodując jego zamrożenie, natomiast głód jest spowodowany impasem, który popycha proces do nieokreślonego odroczenia, ponieważ procesom odmawia się dostępu do zasobu przechowywanego przez proces o wysokim priorytecie i trzeba czekać wiecznie.