Pr-1st-1.1-m05-Slajd19

Z Studia Informatyczne
Wersja z dnia 17:22, 2 wrz 2006 autorstwa Szopen (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Przykład – model k spośród r

Przykład – model k spośród r

Ostatni z grafów ilustruje zakleszczenie w modelu k spośród r. Zauważmy, że

𝒟1={P2,P4,P5},
𝒟2={P3},
𝒟3={P2,P4},
𝒟4={P1,P2,P3}. 

Modele żądań dla P1, P2, P3 i P4 są zdefiniowane następująco: 1 spośród 3, 1 spośród 1, 2 spośród 2, oraz 2 spośród 3. W rozważanym stanie, proces P1 może być uaktywniony, ale procesy P2, P3 i P4 są zakleszczone. Warto zauważyć, że predykat deadlock() jest predykatem stabilnym. Tym samym zajście tego predykatu w pewnej chwili τ, implikuje, że dla każdego ττ, deadlock()=True.

Powyższe stwierdzenie jest oczywiście poprawne jeżeli rozważone są wyłącznie procesy tworzące określone przetwarzanie aplikacyjne. W szerszej jednak perspektywie, obejmującej dodatkowo procesy zewnętrzne w stosunku do aplikacji, jak na przykład monitory, możliwe staje się podjęcie działań zmierzających do przywrócenia stanu wolnego od zakleszczenia poprzez zewnętrzne wymuszenie zmiany stanu procesu aplikacyjnego (usunięcia procesu Pi i odzyskanie zasobów będących w jego dyspozycji). Takie podejście wymaga w pierwszej kolejności wykrycia (detekcji) zakleszczenia, co w środowisku rozproszonym nie jest jednak łatwe.

<< Poprzedni slajd | Spis treści | Następny slajd >>