Pr-1st-1.1-m05-Slajd19: Różnice pomiędzy wersjami
m Zastępowanie tekstu – „ </math>” na „</math>” |
m Zastępowanie tekstu – „<math> ” na „<math>” |
||
Linia 14: | Linia 14: | ||
Warto zauważyć, że predykat <math>deadlock(\mathcal{B})</math> | Warto zauważyć, że predykat <math>deadlock(\mathcal{B})</math> | ||
jest predykatem stabilnym. Tym samym zajście tego predykatu w pewnej chwili <math>\tau</math>, implikuje, że dla każdego | jest predykatem stabilnym. Tym samym zajście tego predykatu w pewnej chwili <math>\tau</math>, implikuje, że dla każdego | ||
<math> \tau ' \ge \tau</math>, | <math>\tau ' \ge \tau</math>, | ||
<math>deadlock(\mathcal{B})= True</math>. | <math>deadlock(\mathcal{B})= True</math>. | ||
Aktualna wersja na dzień 22:11, 11 wrz 2023
Przykład – model k spośród r
Ostatni z grafów ilustruje zakleszczenie w modelu k spośród r. Zauważmy, że
, , , .
Modele żądań dla , , i 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 może być uaktywniony, ale procesy , i są zakleszczone. Warto zauważyć, że predykat jest predykatem stabilnym. Tym samym zajście tego predykatu w pewnej chwili , implikuje, że dla każdego , .
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 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.