Distribuovaný systém
DS:
Middleware
Cristianův algoritmus synchronizace hodin
Berkeley algoritmus synchronizace hodin
Network Time Protocol
Lamportovy hodiny
Vektorové časové razítko
Algoritmus synchronizace ukončení má za úkol zabezpečit následující:
V případě, že všechny procesy jsou ve stavu ukončen, pak se v konečném čase tuto skutečnost všechny procesy dozví.
Dijkstra-Scholten (DS)
Global State Recording Algorithm Candy & Lamport
Řeší atomicitu distribuované transakce.
2-fázový commit protokol
2 fáze:
Token ring
Raymond (tree)
Příznak se předává po kostře grafu tak, aby se dodržela podmínka spravedlnosti na bázi časového pořadí vzniků žádostí.
Suzuki-Kasami (token-passing)
Příznak se předává na bázi cykličnosti uspokojování žádosti procesů.
Přehled nově generovaných a dosud nesplněných žádostí se udržuje distribuovaně v uzlech a v příznaku.
Ricard-Agrawala (distribuovaná fronta)
Maekawa (hlasovací kvórum)
Proces požadující vstup do KS žádá o příznak procesy ve svém kvóru.
Proces s hlasy od procesů v jeho kvóru vstupuje do KS. Po vystoupení hlasy vrací původním majitelům.
Podmínky kvóra:
Množina procesů P uvázla, jestliže každý proces Pi z P čeká na událost (uvolnění prostředků, zaslání zprávy), kterou vyvolá pouze některý z procesů P.
Stárnutí = požadavky 1 nebo více procesů z P nebudou splněny v konečném čase
Ochrana před uváznutím prevencí
Obcházení uváznutí
Bankéřův algoritmus
Uvazujme system s peti procesy P0 az P4 a tri zdroje typu A, B, C.
Necht v case t0 je system v nasledujicim stavu:
Alokace | Max | Volny | |||||||
---|---|---|---|---|---|---|---|---|---|
A | B | C | A | B | C | A | B | C | |
P0 | 0 | 1 | 0 | 7 | 5 | 3 | 3 | 3 | 2 |
P1 | 2 | 0 | 0 | 3 | 2 | 2 | |||
P2 | 3 | 0 | 2 | 9 | 0 | 2 | |||
P3 | 2 | 1 | 1 | 2 | 2 | 2 | |||
P4 | 0 | 0 | 2 | 4 | 3 | 3 |
Potreba | |||
---|---|---|---|
A | B | C | |
P0 | 7 | 4 | 3 |
P1 | 1 | 2 | 2 |
P2 | 6 | 0 | 0 |
P3 | 0 | 1 | 1 |
P4 | 4 | 3 | 1 |
Detekce a obnova po uváznutí
Způsoby řešení uváznutí:
Ignorování hrozby uváznutí
Distribuovaná transakce
abort-transaction
, pokud není schopen pokračovat v řešení subtransakce. Problém volby vůdce
Každý proces se během existence může nacházet ve třech stavech:
Ring algorithm (LeLann)
Ring algorithm (Chang, Roberts)
participant
, nebo non-participant
. non-participant
. participant
a pošle volící zprávu následníkovi. non-participant
participant
/non-participant
umožňujue likvidovat zbytečné násobné běhy. Ring algorithm (Hirschberg-Sinclair)
Bully algorithm (Garcia-Molina)
Použitelnost:
Když se proces rozhodne volit, zvolí sebe a zašle o tom zprávu všem procesům s vyšší prioritou.
Pokud proces přijme zprávu o volebním běhu:
Odpovědi:
Pokud proces obnoví svůj běh, okamžitě zahajuje volební běh a nastane jedna ze dvou možností:
: nejsem si 100% jistý, co se zde očekává (resp. z čeho čerpat)
Horní odhad pro problém
Dolní odhad pro problém