Pr-1st-1.1-m05-Slajd14: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Szopen (dyskusja | edycje)
Nie podano opisu zmian
m Zastępowanie tekstu – „<math> ” na „<math>”
Linia 27: Linia 27:
<math>P_i \not\in \mathcal{AV}_i \cup \mathcal{IT}_i</math>
<math>P_i \not\in \mathcal{AV}_i \cup \mathcal{IT}_i</math>
otrzymujemy:  
otrzymujemy:  
<math> \mathcal{AV}_i \cup \mathcal{IT}_i \cup \mathcal{P} \setminus \mathcal{B} = \mathcal{P} \setminus \mathcal{B} </math>
<math>\mathcal{AV}_i \cup \mathcal{IT}_i \cup \mathcal{P} \setminus \mathcal{B} = \mathcal{P} \setminus \mathcal{B} </math>
Z drugiej strony,  
Z drugiej strony,  
<math>\mathcal{D}_i \subseteq \mathcal{P} \setminus \mathcal{B} = \mathcal{P} \setminus \{P_i\}</math>
<math>\mathcal{D}_i \subseteq \mathcal{P} \setminus \mathcal{B} = \mathcal{P} \setminus \{P_i\}</math>

Wersja z 10:31, 5 wrz 2023

Zakleszczenie w modelu predykatowym

Zakleszczenie w modelu predykatowym

W modelu predykatowym dla każdego pasywnego procesu Pi ze zbiorem warunkującym 𝒟i i dla każdego zbioru 𝒳𝒟i zdefiniowany jest predykat activatei(𝒳). Predykat ten zachodzi, wtedy i tylko wtedy, gdy w związku z dostępnością wiadomości od wszystkich procesów tworzących zbiór, gotowe stanie się którekolwiek z dopuszczalnych zdarzeń odbioru. Wówczas:

deadlock()

(𝒫)()

Pi::Pi(passivei¬availablei(𝒜𝒱i𝒯i(𝒫))))

Definicja ta oznacza, że żaden proces Pi nie może być uaktywniony nawet jeżeli uwzględnimy wszystkie wiadomości znajdujące się aktualnie w kanałach od oczekiwanych nadawców (𝒜𝒱i𝒯i) oraz potencjalne wiadomości od wszystkich procesów nie zakleszczonych. Dotarcie wszystkich tych wiadomości nie jest bowiem wystarczające dla spełnienia warunku uaktywnienia któregokolwiek z procesów Pi.

Definicja zakleszczenia dla modelu predykatowego jest w pełni ogólna i może być dostosowana do innych, wcześniej omawianych modeli. Dlatego też ta definicja pozwala na jednorodne podejście do problemu zakleszczenia, abstrahując od konsekwencji szczególnych właściwości różnych modeli żądań.

Przy założeniu, że żaden proces nie osiąga stanu zakończenia, zakleszczenie dotyczy zawsze co najmniej dwóch procesów. Istotnie, przypuśćmy, że ={Pi}, zachodzi deadlock() i żaden inny proces nie jest zakleszczony. Ponieważ Pi∉𝒜𝒱i𝒯i otrzymujemy: 𝒜𝒱i𝒯i𝒫=𝒫 Z drugiej strony, 𝒟i𝒫=𝒫{Pi} i stąd: ¬activatei(𝒫)¬activatei(𝒟i). Otrzymujemy zatem sprzeczność, gdyż z założenia 𝒟i, a z definicji predykatu activatei(𝒳), activatei(𝒟i)=True.

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