Zalecane, 2019

Wybór Redakcji

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

Zakleszczenie i Głód są warunkami, w których proces żądający zasobu został opóźniony na dłużej. Chociaż impas i głód różnią się od siebie pod wieloma względami. Zakleszczenie to stan, w którym żaden proces nie przechodzi do wykonania, a każdy czeka na zasoby, które zostały nabyte przez inne procesy. Z drugiej strony, w Głodu, proces z wysokimi priorytetami stale wykorzystuje zasoby, które zapobiegają procesowi o niskim priorytecie w celu pozyskania zasobów. Omówmy nieco więcej różnic między zakleszczeniem a głodem za pomocą tabeli porównawczej pokazanej poniżej.

Wykres porównania

Podstawa do porównaniaImpasGłód
PodstawowyZakleszczenie to miejsce, w którym proces nie przebiega, i zostaje zablokowany.Głód jest tam, gdzie procesy o niskim priorytecie są blokowane, a proces o wysokim priorytecie przebiega dalej.
Występujący warunekWystępowanie Wzajemnego wykluczenia, Wstrzymaj i czekaj, Bez uprzedniego i Okólnego oczekiwania jednocześnie.Egzekwowanie priorytetów, niekontrolowane zarządzanie zasobami.
Inna nazwaOkrężne oczekiwanie.Lifelock.
ZasobyW przypadku zakleszczenia zablokowane zasoby są blokowane przez inne procesy.W niedostatku żądane zasoby są stale wykorzystywane przez procesy o wysokim priorytecie.
ZapobieganieUnikanie wzajemnego wykluczenia, wstrzymywanie i oczekiwanie oraz okólne oczekiwanie i zezwolenie na prewencję.Starzenie się.

Definicja impasu

Zakleszczenie to sytuacja, w której kilka procesów w procesorze konkuruje o skończoną liczbę zasobów dostępnych w CPU. Tutaj każdy proces przechowuje zasób i czeka na pozyskanie zasobu przechowywanego przez inny proces. Wszystkie procesy czekają na zasoby w sposób cykliczny. Na poniższym obrazku widać, że proces P1 uzyskał zasób R2 żądany przez proces P2, a proces P1 żąda zasobu R1, który jest ponownie przechowywany przez R2. Tak więc proces P1 i P2 tworzą impas.

Zakleszczenie jest częstym problemem w wieloprocesowych systemach operacyjnych, systemach rozproszonych, a także w równoległych systemach komputerowych. Istnieją cztery warunki, które muszą występować jednocześnie, aby podnieść stan zakleszczenia, czyli wzajemne wykluczenie, wstrzymanie i czekanie, brak wyprzedzenia i okólnik oczekiwania.

  • Wzajemne wykluczenie: tylko jeden proces na raz może korzystać z zasobu, jeśli inny proces żąda tego samego zasobu, musi poczekać, aż proces wykorzystujący zasoby zwolni go.
  • Przytrzymaj i czekaj: proces musi zatrzymywać zasób i czekać na pozyskanie innego zasobu przechowywanego przez inny proces.
  • Bez uprzedzenia : proces utrzymujący zasoby nie może być wywłaszczony. Proces utrzymywania zasobu musi dobrowolnie uwolnić zasób po zakończeniu jego zadania.
  • Circular wait: proces musi czekać na zasoby w sposób cykliczny. Załóżmy, że mamy trzy procesy {P0, P1, P2}. P0 musi czekać na zasoby utrzymywane przez P1; P1 musi czekać na pozyskanie zasobu utrzymywanego przez proces P2, a P2 musi czekać na przejęcie procesu utrzymywanego przez P0.

Chociaż istnieją pewne aplikacje, które mogą wykryć programy, które mogą zostać zablokowane. Ale system operacyjny nigdy nie jest odpowiedzialny za zapobieganie zakleszczeniom. Obowiązkiem programistów jest tworzenie programów bez blokady. Można tego dokonać, unikając powyższych warunków, które są niezbędne do wystąpienia zakleszczenia

Definicja głodu

Głodzenie można zdefiniować, gdy żądanie procesu dla zasobu i tego zasobu jest stale używane przez inne procesy, a następnie proces żądania staje się głodny. W niedostatku proces gotowy do wykonania czeka na przydzielenie zasobów przez procesor. Ale proces musi czekać w nieskończoność, ponieważ inne procesy ciągle blokują żądane zasoby.

Problem głodzenia zazwyczaj występuje w algorytmie planowania priorytetów . W algorytmie planowania priorytetów procesowi o wyższym priorytecie zawsze przydzielany jest zasób, co uniemożliwia procesowi o niższym priorytecie uzyskanie żądanego zasobu.

Starzenie się może rozwiązać problem głodu. Starzenie się stopniowo zwiększa priorytet procesu, który długo czekał na zasoby. Starzenie się uniemożliwia procesowi o niskim priorytecie oczekiwanie na zasób bezterminowo.

Kluczowe różnice między zakleszczeniem a głodem w systemie operacyjnym

  1. W impasie żaden z procesów nie przechodzi do realizacji, każdy proces zostaje zablokowany, czekając na zasoby pozyskane przez inny proces. Z drugiej strony, głodzenie jest warunkiem, w którym procesy, które mają wyższy priorytet, mogą w sposób ciągły pozyskiwać zasoby, zapobiegając procesom o niskim priorytecie pozyskiwania zasobów, powodując nieokreślone blokowanie procesów o niskim priorytecie.
  2. Zakleszczenie powstaje, gdy występują cztery warunki: wzajemne wykluczenie, wstrzymanie i oczekiwanie, brak wyprzedzenia i ciągłe oczekiwanie jednocześnie. Jednak głodzenie występuje, gdy priorytety procesu zostały wymuszone podczas przydzielania zasobów lub w systemie istnieje niekontrolowane zarządzanie zasobami.
  3. Zakleszczenie jest często wywoływane przez nazwę okólnego oczekiwania, podczas gdy głodzenie jest nazywane Lived lock .
  4. W impasu zasoby są blokowane przez proces, podczas gdy w procesie głodu procesy są stale wykorzystywane przez procesy o wysokim priorytecie.
  5. Zakleszczenia można zapobiegać poprzez unikanie warunków takich jak wzajemne wykluczenie, wstrzymanie i oczekiwanie oraz cykliczne oczekiwanie i umożliwienie wyprzedzenia procesów, które utrzymują zasoby przez długi czas. Z drugiej strony, można zapobiec starzeniu się głodowi .

Wniosek:

Zarówno zakleszczenie, jak i głodzenie opóźnia wykonanie procesu poprzez jego blokowanie. Z jednej strony, gdy zakleszczenie może powodować procesy głodowania, az drugiej strony głodzenie może spowodować wyjście procesów z impasu.

Top