Livelock: co to jest, przykład, różnica w porównaniu z impasem

Spisie treści:

Anonim

Co to jest Livelock?

Livelock jest sytuacja, gdy wniosek o przyznanie wyłącznego zamka jest wielokrotnie odrzucona, jak wiele nakładających się na wspólne zamki zachować zakłócania siebie. Procesy ciągle zmieniają swój status, co dodatkowo uniemożliwia im wykonanie zadania. To dodatkowo uniemożliwia im wykonanie zadania.

W tym samouczku dotyczącym systemu operacyjnego dowiesz się:

  • Co to jest Livelock?
  • Przykłady Livelock
  • Co prowadzi do Livelock?
  • Co to jest impas?
  • Przykład impasu
  • Co to jest głód?
  • Różnica między impasem, głodem i Livelockiem

Przykłady Livelock

Przykład 1:

Najłatwiejszym przykładem Livelocka byłyby dwie osoby, które spotykają się twarzą w twarz na korytarzu i oboje odsuwają się na bok, aby przepuścić drugą. W końcu poruszają się z boku na bok, nie robiąc żadnego postępu, ponieważ poruszają się w tym samym czasie. Tutaj nigdy się nie krzyżują.

Przykład 2:

Na powyższym obrazku widać, że każdy z dwóch podanych procesów potrzebuje dwóch zasobów i używają one prymitywnego odpytywania rejestru wejść, aby spróbować uzyskać potrzebne im blokady. Jeśli próba się nie powiedzie, metoda działa ponownie.

  1. Przetwarzaj zasób wstrzymania Y.
  2. Proces B przechowuje zasób X
  3. Proces A wymaga zasobu X.
  4. Proces B wymaga zasobu Y.

Zakładając, że proces A jest uruchamiany jako pierwszy i uzyskuje zasób danych X, a następnie proces B uruchamia się i uzyskuje zasób Y, bez względu na to, który proces jest uruchamiany jako pierwszy, żaden z nich nie postępuje dalej.

Jednak żaden z tych dwóch procesów nie jest blokowany. Wielokrotnie zużywają zasoby procesora bez żadnego postępu, ale także zatrzymują każdy blok przetwarzania.

Dlatego nie jest to sytuacja zakleszczenia, ponieważ nie ma ani jednego procesu, który jest blokowany, ale mamy do czynienia z sytuacją odpowiadającą zakleszczeniu, czyli LIVELOCK.

Co prowadzi do Livelock?

Livelock występuje, gdy całkowita liczba dozwolonych procesów w określonym systemie powinna być określona przez całkowitą liczbę wpisów w tabeli procesów. Dlatego szczeliny tabeli procesów powinny być nazywane zasobami skończonymi.

Co to jest impas?

Zakleszczenie to sytuacja, która występuje w systemie operacyjnym, gdy dowolny proces przechodzi w stan oczekiwania, ponieważ inny proces oczekiwania zatrzymuje żądany zasób. Zakleszczenie to częsty problem w przetwarzaniu wieloprocesowym, w którym kilka procesów korzysta ze wspólnego określonego typu wzajemnie wykluczających się zasobów, znanych jako miękka blokada lub oprogramowanie.

Przykład impasu

  • Rzeczywistym przykładem może być ruch uliczny, który porusza się tylko w jednym kierunku.
  • Tutaj most jest uważany za zasób.
  • Tak więc, gdy dojdzie do impasu, można go łatwo rozwiązać, wykonując kopię zapasową jednego samochodu (przejmij zasoby i wycofaj).
  • W przypadku wystąpienia impasu może być konieczne utworzenie kopii zapasowej kilku samochodów.
  • Więc głód jest możliwy.
Przykład impasu

Co to jest głód?

Głód to sytuacja, w której wszystkie procesy o niskim priorytecie zostały zablokowane, a procesy o wysokim priorytecie przebiegają. W każdym systemie żądania dotyczące zasobów o wysokim / niskim priorytecie są nadal realizowane dynamicznie. W związku z tym wymagana jest pewna polityka, aby zdecydować, kto i kiedy otrzyma wsparcie.

Korzystając z niektórych algorytmów, niektóre procesy mogą nie uzyskać żądanej obsługi, mimo że nie są zakleszczone. Głód występuje, gdy niektóre wątki powodują, że udostępnione zasoby są niedostępne przez długi czas.

Przykład głodu:

Na przykład obiekt oferuje zsynchronizowaną metodę, której powrót może zająć dużo czasu. Jeśli jeden wątek często korzysta z tej metody, inne wątki, które również wymagają częstego zsynchronizowanego dostępu do tego samego obiektu, będą często blokowane.

Różnica między impasem, głodem i Livelockiem

  • Zakleszczenie to sytuacja, która występuje w systemie operacyjnym, gdy dowolny proces przechodzi w stan oczekiwania, ponieważ żądany zasób jest przetrzymywany przez inny proces oczekujący.
  • Z drugiej strony livelock jest prawie podobny do impasu, z tym wyjątkiem, że stany procesów zachodzących w żywym stadzie zawsze się zmieniają, żaden nie postępuje.
  • Tak więc Livelock to wyjątkowy przypadek głodu zasobów.

Podsumowanie:

  • Definicja: Livelock to sytuacja, w której żądanie blokady na wyłączność jest wielokrotnie odrzucane, ponieważ wiele nakładających się blokad współdzielonych ciągle się koliduje.
  • Livelock występuje, gdy całkowita liczba dozwolonych procesów w określonym systemie powinna być zdefiniowana przez całkowitą liczbę wpisów w tabeli procesów
  • Zakleszczenie to sytuacja, która występuje w systemie operacyjnym, gdy dowolny proces przechodzi w stan oczekiwania, ponieważ inny proces oczekiwania zatrzymuje żądany zasób.
  • Rzeczywistym przykładem może być ruch uliczny, który porusza się tylko w jednym kierunku.
  • Przykładem Livelock mogą być dwie osoby, które spotykają się twarzą w twarz na korytarzu i oboje odsuwają się na bok, aby przepuścić drugą.
  • Głód to sytuacja, w której wszystkie procesy o niskim priorytecie zostały zablokowane, a procesy o wysokim priorytecie przebiegają.