Zakleszczenie i głodzenie w systemie operacyjnym OS

Anonim

System operacyjny to najbardziej podstawowe oprogramowanie działające na komputerze. Jest odpowiedzialny za zarządzanie pamięcią i procesami komputera, a także za ochronę ekranów sprzętu przed aplikacjami, które go używają. System operacyjny komputera zapewnia sprawiedliwą alokację zasobów dla użytkowników i programów, a nie równą dystrybucję między procesami. Sprawiedliwy system planowania pozwala jednemu procesowi używać procesora, podczas gdy drugi czeka w kolejce. W rezultacie każda nić ma wystarczający dostęp do ograniczonych zasobów, zapobiegając dwóm najczęstszym warunkom, które opóźniłyby proces w inny sposób: 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.

Czym jest Deadlock?

Zakleszczenie to stan, w którym zestaw wątków jest blokowany, ponieważ każdy proces przechowujący zasób próbuje uzyskać dostęp do innych zasobów, które są zatrzymywane przez inny proces, co ostatecznie uniemożliwia rzetelne 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ć uwolniony dobrowolnie tylko przez proces utrzymywania zasobu; Hold & wait oznacza, że ​​zasoby utrzymujące proces mogą żądać dodatkowych zasobów posiadanych przez inne procesy; Okrągłe oczekiwanie oznacza, że ​​dwa lub więcej procesów utknęło w kolistym łańcuchu, czekając, aż każdy proces zwolni swoje odpowiednie zasoby.

Czym jest Głód?

Głód jest stanem, który pojawia się, 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 stały przepływ procesów o wysokim priorytecie uzyskujących dostęp do tego samego zasobu. Jest to problem zarządzania zasobami, ponieważ procesowi odmawia się dostępu do zasobu, który jest mu potrzebny, przez co proces ten przechodzi w nieokreślony okres oczekiwania. Dzieje się tak, ponieważ zasób, którego wymaga, nigdy nie jest przydzielany do procesu powodującego proces zagłodzenia zasobów, stąd nazwa. Najlepszym sposobem na uniknięcie głodu jest zastosowanie techniki starzenia, która stopniowo zwiększa priorytet procesów, które są w okresie oczekiwania przez długi czas, w celu zapewnienia uczciwego systemu planowania.

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

  1. Definicja impasu i głodu

Zarówno impas, jak i głód są pokrewnymi koncepcjami, które uniemożliwiają uczciwe planowanie systemu, w którym procesom blokuje się dostęp do zasobów. Zakleszczenie, jak sugeruje nazwa, odnosi się do warunku, w którym zestaw wątków lub procesów jest blokowany, ponieważ każdy proces oczekuje na pozyskanie zasobu, który jest trzymany przez inny proces, powodując w ten sposób sytuację zakleszczenia, w którym programy przestają działać. Z drugiej strony, głodzenie jest powodowane przez impas, który powoduje zatrzymanie 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 warunku, 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 inny proces, aby zwolnić swój zasób, tworząc tym samym zakleszczenie. Jest to spowodowane złym wykorzystaniem zasobów. Głodzenie jest nieokreślonym warunkiem opóźnienia, w którym procesowi o niskim priorytecie odmawia się dostępu do zasobów, których potrzebuje, ponieważ zasoby są przydzielane do innego procesu o wysokim priorytecie. Jest to problem zarządzania zasobami, który zmusza system do alokacji 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 czekanie oraz cykliczne czekanie. Zakleszczenie występuje tylko w systemach, w których wszystkie cztery warunki są prawdziwe. Głodzenie odbywa się w oparciu o różne warunki, na przykład gdy nie ma wystarczająco dużo zasobów do przejścia, a priorytet procesów zaczyna się obniżać lub gdy procesy zaczynają przekazywać zasoby innym procesom bez kontroli. Jeśli proces o niskim priorytecie żąda zasobu zarezerwowanego dla procesów o najwyższym priorytecie, proces głoduje na zawsze. Głód występuje również, gdy zasoby są przydzielane arbitralnie, co powoduje, że procesy czekają przez dłuższy czas.

  1. Zapobieganie

Głodu można zapobiegać, stosując odpowiedni algorytm szeregowania z kolejką priorytetową, który w rzeczywistości również wykorzystuje technikę starzenia - technikę szeregowania, która dodaje współczynnik starzenia do priorytetu każdego żądania, co oznacza, że ​​zwiększa priorytet poziomu procesów o niskim priorytecie, które czekają przez długi czas. Zapewnienie większej ilości zasobów programom powinno również pozwolić uniknąć ciągłego przeciążenia zasobów. Aby zapobiec wystąpieniu impasu w systemie, należy odmówić dostępu do jednego lub więcej zasobów, jednocześnie czekając na innych i tylko jeden proces powinien mieć możliwość uzyskania dostępu do zasobu na raz.

Deadlock vs. Starvation: Tabela porównawcza

Podsumowanie impasu VS. Głód

Zarówno impas, jak i głód są pojęciami pokrewnymi w wieloprocesowych systemach operacyjnych lub systemach rozproszonych, które powodują, że jeden lub więcej wątków lub procesów zatrzymuje się w oczekiwaniu na zasoby, których potrzebują. Zakleszczenie to sytuacja, która powstaje, gdy jeden lub więcej procesów żąda dostępu do tego samego zasobu powodując zawieszenie procesu, podczas gdy głód jest spowodowany przez zakleszczenie, które popycha proces do nieokreślonego stanu odroczenia, ponieważ procesy nie mają dostępu do zasobu przechowywanego przez proces o wysokim priorytecie i potrzeba czekania na zawsze.