-
Lokální stav procesu = hodnoty proměnných, alokované zdroje, stav vykonávání programu.
-
Globální stav DS = lokální stav všech procesů DS a stavy všech kanálů mezi nimi.
-
Řez = rozdělení události v systému na dvě skupiny.
- Ty co se již staly a ty co se ještě nestaly.
-
Snapshot = Globální stav DS v daném okamžiku.
- Stav (konzistentního) řezu.
Konzistentní řez a konzistentní snapshot
- Konzistentní řez : Pokud událost , pak .
- Postup výpočtu v DS je posloupnost konzistentních řezů.
- Konzistentní snapshot je zachycení stavu konzistentního řezu.
- c1 je nekonzistentní, c2 je konzistentní řez.
Chandy-Lamport algoritmus
- Algoritmus využívající techniku distribuovaný snímek.
- Slouží k výpočtu snapshotu.
Postup algoritmu:
- Iniciátor uloží svůj stav, pošle zprávu s markerem (snapshot request).
- Proces obdrží zprávu s markerem:
- Poprvé:
- Uloží svůj stav.
- Uloží příchozí kanál (ze kterého market přišel) jako prázdný (zprávy přijaté po marketu nejsou součástí snímku).
- Pošle marker zprávy všem ostatním procesům přes své výstupní kanály.
- Jindy: Uloží stav na kanálu.
- Proces s markerem dostane zprávu bez markeru
- Musí být z okamžiku před snapshotem,
- přepošle ji iniciátorovi, aby ji přidal
- FIFO kanály (jinak problém)
Dijkstra-Scholten algoritmus
- Algoritmus pro detekci ukončení výpočtu.
- Jeho cílem je určit, kdy všechny uzly v DS dokončili svůj běh a jsou v bezpečném stavu pro ukončení celého systému.
- V síti buduje kostru (podobné volbě leadera v ad-hoc síti).
- Posílají se dva typy zpráv -
SIGNAL
aACK
.
Princip:
- Každý uzel je aktivní (pracuje) nebo pasivní.
- Každý uzel eviduje svůj deficit, což je rozdíl mezi poslanými a přijatými
SIGNAL
aACK
(na vstupu i na výstupu). Na začátku jsou oba .- Iniciátor pošle
SIGNAL
.- Uzel pošle
ACK
pokud deficit na vstupu je větší než , nebo deficit na vstupu je a na výstupu je a uzel je pasivní.