IN-POS . Modely distribuovaných systémů
Zadání
Základní pojmy a principy, synchronní a asynchronní komunikace.
Synchronizace.
Detekce ukončení.
Problém vzájemného vyloučení a problém uváznutí a jejich řešení.
Problém volby vedoucího prvku.
Vliv topologie a její znalosti/neznalosti na složitost řešení problému.
Vypracování
Základní pojmy a principy, synchronní a asynchronní komunikace.
Distribuovaný systém
Systém jehož hardwarové nebo softwarové komponenty počítačů mohou komunikovat a koordinovat svou činnost pouze předáváním zpráv.
DS:
Middleware
Softwarová vrstva ležící mezi aplikacemi a
OS poskytující aplikacím aplikacím programovací abstrakci a maskování heterogenity podpůrných sítí, počítačů, operačních systému, programovacích jazyků,…
Režimy DS
Synchronní výměna zpráv
výpočty probíhají v synchronních krocích (řízených globálními hodinami)
v každém běhu komponenty vyšlou a přijmou zprávy a provedou výpočet
přenos zprávy je kratší než jeden tik globálních hodin
Asynchronní výměna zpráv
Synchronizace
Cristianův algoritmus synchronizace hodin
Klient pošle dotaz časovému serveru a od získaného času přičte polovinu obrátky dotazu.
Berkeley algoritmus synchronizace hodin
MASTER uzel se periodicky ptá na čas SLAVE uzlů.
Přičte polovinu obrátky.
Zprůměruje a odešle aktuální hodnotu SLAVE uzlům.
Lamportovy hodiny
Ze vztahu TS(A)<TS(B) nevyplývá A→B.
Vektorové časové razítko
Řeší problém s opačnou implikací u Lamprotových hodin.
Místo jednoho razítka pro lokální čas použijeme vektor časových razítek. (velikost = počet procesů)
Před odesláním proces zvýší „svůj“ prvek vektoru o jedna. Pouze toto časové razítko se odesílá se zprávou.
Při přijetí zprávy zaktualizujeme odesilatelům prvek vektoru na maximum z lokální a přijaté hodnoty.
Vztah vektorových razítek:
Detekce ukončení
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)
Jestliže graf procesů je strom, pak každý listový proces při přechodu do stavu ukončen pošle signál svému otci.
Jakmile proces dostane signály od všech svých synů, pošle signál svému otci.
Jestliže všechny signály dostane iniciační proces, je distribuovaný výpočet ukončen.
Global State Recording Algorithm Candy & Lamport
iniciátor = proces iniciující zjištění globálního stavu
MARKER získal proces, který dosud nevypracoval momentku
zaznamená momentku svého lokálního stavu a pošle ji iniciátorovi
označí vstupní kanál, ze kterého přijal MARKER„, jako prázdný
všem ostatním sousedům pošle MARKER
MARKER získal proces, který již momentku vypracoval
Iniciátor nakonec sestaví globální stav
zná lokální momentky všech procesů
zná zprávy v „éteru“
Kanály jsou FIFO, tedy je globální momentka smysluplná ((ne)zahrnuté zprávy jsou odděleny v kanálech MARKERy).
Commit protokoly
Řeší atomicitu distribuované transakce.
2-fázový commit protokol
Distribuovaná dohoda, zda transakci končit řádně, či krachovat v prostředí s výpadky uzlů.
2 fáze:
Hlasovací fáze
koordinátor žádá o závazek k rozhodnutí, že subtransakci řádně ukončí
participant ověří subtransakci na konzistenci dat a odpoví
Fáze vydání rozhodnutí
Problém vzájemného vyloučení
Dva nebo více procesů obsahují kritické sekce sdružené s jistým sdíleným objektem, které se musí za běhu procesu vzájemně vyloučit.
privilegovaný proces = proces v kritické sekci
Podmínka bezpečnosti = v každé konfiguraci existuje nejvýš jeden privilegovaný proces.
Podmínka živosti = Jestliže se proces snaží dostat do KS, stane se privilegovaným v konečném čase.
Podmínka spravedlnosti (jedna z uvedených)
Řešení vzájemného vyloučení
Centralizované řešení
klient-server (jeden KOORDINÁTOR řeší vzájemné vylučování libovolného počtu procesů)
konstantní složitost
request, reply+release zprávy
Token ring
Vzájemně se vylučující procesy si cyklicky předávají jediný exemplář příznaku (TOKEN) povolující vstup do kritické sekce.
➕ Splněna podmínka bezpečnosti.
➕ Splněna podmínka živosti.
➕ Podmínka spravedlnosti splněna zajištěním maximálně jednoho předběhnutí od jiného procesu.
➖ Ztrátu příznaku je nutné řešit distribuovanou volbou procesu, který jej vygeneruje.
➖ Výpadek jednoho uzlu nutné řešit rekonstrukcí kruhu.
Raymond (tree)
Vzájemně se vylučující procesy si cyklicky předávají jediný exemplář příznaku (TOKEN) povolujícího vstup do kritické sekce.
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í.
Uzel držící příznak je kořenem stromu.
Uzel žádá o vstup do KS svého rodiče, ten jej předává po cestě ke kořeni.
Při předání příznaku se konfigurace stromu aktualizuje.
Suzuki-Kasami (token-passing)
Vzájemně se vylučující procesy si cyklicky předávají jediný exemplář příznaku (TOKEN) povolujícího vstup do kritické sekce.
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.
Proces pro žádost o vstup do KS odesílá všem uzlům REQUEST zprávu.
Uzel držící příznak po výstupu z KS odešle vybranému z procesů příznak.
Procesy si drží čísla žádostí od ostatních, token obsahuje pole s vyhověnými žádostmi.
Postupuje se cyklicky, přes procesy, které mají zájem.
Ricard-Agrawala (distribuovaná fronta)
Proces požadující vstoupit do kritické sekce pošle žádost o vstup s časovým razítkem všem ostatním.
Jestliže je příjemce v KS, neodpovídá a zařadí požadavek do fronty.
Jestliže příjemce není v KS a ani do ní nechce vstoupit, pak pošle zpět potvrzení práva vstupu do KS.
Jestliže příjemce není v KS, ale chce do ní vstoupit (sám vyslal žádost), porovná časovou značku své a přijaté žádosti.
Pokud byla vlastní žádost odeslána dříve, neodpovídá a uloží žádost do fronty.
Pokud byla přijatá žádost odeslána dříve, pošle zpět potvrzení práva vstupu do KS.
Až získá proces souhlas od všech, vstupuje do KS.
Po opuštění KS proces odešle potvrzení všem procesům, které má ve frontě.
➕ Je splněna podmínka bezpečnosti.
➕ Je splněna podmínka živosti.
➕ Komunikační složitost je lineární.
➖ Proces musí znát ostatní.
➖ Výpadek jednoho procesu způsobí kolaps celého systému. ⇒ Vhodné pro malé a stabilní množiny procesů.
Maekawa (hlasovací kvórum)
Každý proces obdrží jeden příznak (hlas).
Proces požadující vstup do KS žádá o příznak procesy ve svém kvóru.
kvůrum = podmnožina procesů, navzájem se protínají
Oslovený jej pošlu pokud jej ještě vlastní a sám se v KS nenachází.
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:
Uváznutí
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
Nutná a postačující podmínka uváznutí
Nutné podmínky uváznutí:
vzájemné vyloučení (Mutual exclusion)
inkrementálnost požadavků (též postupné uplatňování požadavků, Hold-and-Wait)
nepředbíhatelnost (No preemption)
Metody ochrany proti uváznutí
Ochrana před uváznutím prevencí
Obcházení uváznutí
detekce potenciální možnosti vzniku uváznutí a nepřipuštění takového stavu
zamezujeme současné platnosti všech nutných podmínek
prostředek se nepřidělí, pokud by hrozilo uváznutí (hrozí stárnutí)
Bankéřův algoritmus
Algoritmus používaný u zdrojů, kterých se přiděluje určité množství.
Když vstoupí novy proces do systému, musí deklarovat maximální počet instanci všech tříd, které bude pro svůj běh potřebovat. Tato maxima nesmi přesahovat celkový počet zdrojů v systému. Když uživatel požaduje množinu zdrojů, musí systém zjistit nepřevede-li alokace těchto zdrojů systém do nebezpečného stavu. Pokud by tomu tak bylo, musí proces čekat než jiný proces neuvolní dostatek zdrojů. V případe opačném jsou zdroje procesu alokovány.
Pro zajištěni chodu bankéřova algoritmu je třeba udržovat množství datových struktur. Tyto struktury kódují stav systému alokace zdrojů. Nechť n je celkový počet procesu v systému a m je počet typu zdrojů. Potřebujeme následující datové struktury:
Volny: vektor delky m indikujici pocet volnych instanci kazdeho typu zdroje. Jestlize Volny(j) = k, potom je v systemu k volnych instanci zdroje Rj.
Max: matice typu (n,m) definujici maximalni pozadavek kazdeho procesu na kazdou tridu zdroju. Jestlize Max(i,j) = k, potom proces Pi muze pozadat maximalne o k instanci zdroje Rj.
Alokace: matice typu (n,m) definujici pocet zdroju kazde tridy aktualne alokovany kazdemu procesu. Jestlize Alokace(i,j) = k, potom proces Pi ma momentalne alokovano k instanci zdroje tridy Rj.
Potreba: matice typu (n,m) definujici zbyly pocet instanci zdroje kazde tridy nutny k dokonceni ulohy. Jestlize Potreba(i,j) = k, potom proces Pi potrebuje k dokonceni sve ulohy dalsich k instanci tridy Rj.
Uvedene datove struktury se v case meni jak co do velikosti, tak co do hodnoty. Pro zjednoduseni prezentace Bankerova algoritmu definujme nasledujici vztah: Necht X a Y jsou vektory delky n. Potom X < = Y tehdy a jen tehdy, jestlize X(i) < = Y(i) pro vsechna i = 1, .. ,n. Napriklad jestlize X = (1, 7, 3, 2) a Y = (0, 3, 2, 1), potom Y < = X. Dale X < Y tehdy, jestlize X < = Y a zaroven X < > Y.
Kazdou radku matic Alokace a Potreba muzeme zpracovavat jako vektor a oznacovat jako Alokacei a Potrebai. Vektor Alokacei specifikuje zdroje, ktere jsou aktualne alokovany procesu Pi a vektor Potrebai specifikuje dalsi zdroje, ktere proces Pi potrebuje pro sve dokonceni.
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 |
V teto situaci je system v bezpecnem stavu. Sekvence < P1, P3, P4, P2, P0,> je bezpecna sekvence.
Detekce a obnova po uváznutí
Způsoby řešení uváznutí:
zrušit všechny uváznuté procesy (nejčastěji používaná metoda)
návrat uváznutých procesů k poslednímu kontrolnímu bodu (možnost opakování situace)
postupně rušit uváznuté procesy (podle spotřebovaného času procesoru, počtu tiskových řádků, času do dokončení procesu, priority, množství vlastněných prostředků)
postupně předbíhat uváznuté procesy
zamezit současné platnosti nutných podmínek
Ignorování hrozby uváznutí
Uváznutí v distribuovaném prostředí
Distribuovaná transakce
transakce zahrnující operace prováděné ve více uzle DS formou dílčích subtransakcí.
koordinátor
správce
participant
Problém volby vedoucího prvku
Problém volby vůdce
Každý výpočet podle volebního algoritmu ve skupině procesů DS musí v konečném čase končit konfigurací, ve které je jeden jediný uzel v roli vůdce.
Každý proces se během existence může nacházet ve třech stavech:
volební běh
Každý proces může najednou vyvolat pouze jeden běh.
Může probíhat několik (N) paralelních běhů.
Každý proces má právo i povinnost volit.
Volba končí ukončením všech běhů.
Podmínka bezpečnosti
Rozhodnutí volby je zvoleným procesem nezměnitelné.
Vedoucím procesem je nejvýše jeden proces.
Každý účastník volby má nastaveno elected na id zvoleného procesu.
Podmínka živosti
Ring algorithm (LeLann)
Každý proces posílá své ID po kruhu.
Kruh je jednosměrný, každý proces má jednoho souseda a komunikace probíhá ve FIFO režimu.
Z příchozích zpráv si uzel postupně zapamatovává ID ostatních a zprávy přeposílá dál po kruhu.
Po přijetí zprávy s vlastním ID zná proces všechny procesy v kruhu a za vodce zvolí proces s nejmenším/největším ID.
Ring algorithm (Chang, Roberts)
Využitelnou topologií je obousměrný kruh. Každý proces má jednoho souseda (následníka) a uchovává si id vůdce v elected.
Ring algorithm (Hirschberg-Sinclair)
Využitelnou topologií je obousměrný kruh.
Bully algorithm (Garcia-Molina)
Proces s nejvyšším ID si vynucuje svou vůdcovskou roli.
Použitelnost:
Proces může poslat zprávu každému z ostatních procesů.
Mohou se vyskytovat výpadky uzlů.
Komunikační systém je spolehlivý (neztrácí se zprávy).
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:
Když proces dostane zamítavou odpověď, existuje proces s vyšší prioritou ⇒ proces ukončí svůj volební běh.
Když nedostane zamítavou odpověď, volbu vyhrál.
Pokud proces obnoví svůj běh, okamžitě zahajuje volební běh a nastane jedna ze dvou možností:
Stane se vůdcem.
Dozví se, kdo je vůdcem.
Vliv topologie a její znalosti/neznalosti na složitost řešení problému
: nejsem si 100% jistý, co se zde očekává (resp. z čeho čerpat)
Efektivita algoritmu velmi závisí na topologii sítě.
Zajímá nás komunikační složitost, případně časová složitost.
Horní odhad pro problém
Existuje algoritmus, který pro všechny topologie, vstupy, časování,… pracuje správně a vymění nejvíc f(n) zpráv.
Dolní odhad pro problém
Pro každý algoritmus existuje kombinace topologie, vstupu, časování,… že buď nepracuje správně, nebo vymění alespoň f(n) zpráv.
Časté topologie:
úplný graf
kruh
jednosměrný kruh
2D/3D mřížka
strom
Pro tyto topologie existují často efektivnější algoritmy, protože lze spoléhat na jejich vlastnosti.
Pro globální algoritmy se může efektivita lišit na základě grafových vlastností:
hustota grafu
orientovanost
poloměr
Zdroje
Nahoru