Livelock: Co to jest, przykład, różnica z Deadlock
Co to jest Livelock?
A livelock to sytuacja, w której prośba o blokadę wyłączną jest wielokrotnie odrzucana, ponieważ wiele nakładających się blokad współdzielonych zakłóca się nawzajem. Procesy stale zmieniają swój status, co dodatkowo uniemożliwia im wykonanie zadania. To dodatkowo uniemożliwia im wykonanie zadania.
Przykłady Livelocka
1 przykład:
Najłatwiejszym przykładem Livelocka są dwie osoby, które spotykają się twarzą w twarz na korytarzu i obie odsuwają się na bok, aby pozwolić drugiej przejść. Kończy się to tym, że poruszają się z boku na bok, nie robiąc żadnego postępu, ponieważ w tym czasie poruszają się w ten sam sposób. Tutaj nigdy się nie krzyżują.
2 przykład:
Jak widać na powyższym obrazku, każdy z dwóch podanych procesów potrzebuje dwóch zasobów i używają prymitywnego odpytywania rejestru wejściowego, aby spróbować uzyskać niezbędne dla nich blokady. Jeżeli próba się nie powiedzie, metoda zadziała ponownie.
- Proces A wstrzymaj zasób Y
- Proces B przechowuje zasób X
- Proces A wymaga zasobu X
- Proces B wymaga zasobu Y
Zakładając, że proces A działa jako pierwszy i pozyskuje zasób danych X, a następnie uruchamia się proces B i pozyskuje zasób Y, niezależnie od tego, który proces zostanie uruchomiony 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, nie czyniąc żadnego postępu, ale także zatrzymują każdy blok przetwarzania.
Zatem nie jest to sytuacja a impas ponieważ nie ma ani jednego procesu, który byłby zablokowany, lecz mamy do czynienia z sytuacją równoważną blokadzie, czyli LIVELOCK.
Co prowadzi do Livelocka?
Livelock ma miejsce wtedy, gdy całkowita liczba dozwolonych procesów w konkretnym systemie powinna być określona przez całkowitą liczbę wpisów w tabeli procesów. Dlatego miejsca w tabeli procesów należy nazywać zasobami skończonymi.
Czym jest Deadlock?
Zakleszczenie to sytuacja, która występuje w systemie operacyjnym, gdy dowolny proces przechodzi w stan oczekiwania, ponieważ inny oczekujący proces posiada żądany zasób. Zakleszczenie to powszechny problem w przetwarzaniu wieloprocesorowym, w którym kilka procesów współdzieli określony typ wzajemnie wykluczającego się zasobu, znanego jako blokada miękka lub oprogramowanie.
Przykład impasu
- Przykładem ze świata rzeczywistego może być ruch uliczny, który odbywa się tylko w jednym kierunku.
- W tym przypadku most jest uważany za zasób.
- Tak więc, gdy dojdzie do impasu, można go łatwo rozwiązać, cofając pojazd (wyprzedzanie zasobów i cofanie).
- W przypadku wystąpienia impasu może zaistnieć konieczność cofnięcia kilku samochodów.
- Zatem głód jest możliwy.
Co to jest głód?
Głód to sytuacja, w której wszystkie procesy o niskim priorytecie zostają zablokowane, a procesy o wysokim priorytecie kontynuują pracę. W każdym systemie żądania zasobów o wysokim/niskim priorytecie odbywają się dynamicznie. W związku z tym wymagana jest pewna polityka określająca, kto i kiedy otrzyma wsparcie.
Przy użyciu niektórych algorytmów niektóre procesy mogą nie otrzymać pożądanej obsługi, nawet jeśli nie są zablokowane. Głodowanie występuje, gdy niektóre wątki sprawiają, że współdzielone zasoby są niedostępne przez długi okres czasu.
Przykład głodu
Na przykład obiekt oferuje metodę synchronizowaną, której zwrócenie prawdopodobnie zajmie dużo czasu. Jeśli jeden wątek często używa tej metody, inne wątki, które również potrzebują częstego dostępu synchronizowanego do tego samego obiektu, będą często blokowane.
Różnica między blokadą, głodem i blokadą żywą
- Blokada to sytuacja, która występuje w systemie operacyjnym, gdy dowolny proces przechodzi w stan oczekiwania, ponieważ żądany zasób jest zajęty przez inny oczekujący proces.
- Z drugiej strony livelock jest prawie taki sam jak deadlock, z tą różnicą, że stany procesów zaangażowanych w livelock ciągle się zmieniają i żaden z nich nie postępuje.
- Zatem Livelock jest wyjątkowym przypadkiem głodu zasobów.
Podsumowanie
- Definicja: Livelock to sytuacja, w której prośba o blokadę wyłączną jest wielokrotnie odrzucana, ponieważ wiele nakładających się blokad współdzielonych wzajemnie sobie przeszkadza.
- Livelock ma miejsce wtedy, gdy całkowita liczba dozwolonych procesów w konkretnym systemie powinna być określona przez całkowitą liczbę wpisów w tabeli procesów
- Impas to sytuacja, która występuje w systemie operacyjnym, gdy dowolny proces przechodzi w stan oczekiwania, ponieważ inny oczekujący proces przejmuje żądany zasób.
- Przykładem ze świata rzeczywistego może być ruch uliczny, który odbywa się tylko w jednym kierunku.
- Przykładem Livelock mogą być dwie osoby, które spotykają się twarzą w twarz na korytarzu i obie odsuwają się na bok, aby pozwolić drugiej przejść.
- Głód to sytuacja, w której wszystkie procesy o niskim priorytecie zostają zablokowane, a procesy o wysokim priorytecie kontynuują pracę.