Toto je starší verze dokumentu! —-

IN-POS 4. 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.
  • PA150, IV100

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:

  • umožňují souběžné řešení programů
  • neexistuje globální čas
  • každá komponenta (včetně propojovací sítě) může selhávat a obnovovat činnost nezávisle na okolí.
    • ostatní se o stavu nedozvídají

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
      • globální čas neexistuje
      • komponenty řízeny lokálními hodinami
      • délka přenosu zpráv je neomezena

Synchronizace

Cristianův algoritmus synchronizace hodin

Klient pošle dotaz Časovému serveru a od získaného času odečte polovinu obrátky dotazu.

Berkeley algoritmus synchronizace hodin

  1. MASTER uzel se periodicky ptá na čas SLAVE uzlů.
  2. Odečte polovinu obrátky.
  3. Zprůměruje a odešle aktuální hodnotu SLAVE uzlům.

Network Time Protocol

  • Možnost přesné synchronizace s UTC v Internetu.
  • Časové servery tvoří hierarchickou strukturu.
  • Módy synchronizace:
    • Multicast: jeden server odesílá informace o čase skupině.
    • Procedure-call: server vrací časové razítko na žádost (de facto Cristianův alg.)
    • Symmetric: mezi 2 servery v různých úrovních; servery si opakovaně posílají časová razítka a opravují chyby
  • příčinné pořadí = „stalo-se-před“
  • Lokální čas
    • budován na relaci „stalo-se-před“
      • pro události A, B v jednom procesu, kde A nastala před B: A→B
      • je-li A zaslání a B přijetí zprávy: A→B
      • platí transitivita: A→B,B→C ⇒ A→C
    • pužíván místo fyzického času

Lamportovy hodiny

  • S každou událostí se sváže časové razítko.
  • Každý proces si udržuje logické (Lamportovy) hodiny. (Mapují částečné uspořádání.)
  • Odeslání zprávy:
    • Odešleme aktuální časové razítko.
    • Lokální čas zvýšíme o jedna.
  • Příjem zprávy:
    • Porovnáme přijaté časové razítko s lokálními hodinami.
    • Vezmeme větší z nich, zvýšíme o jedna a nastavíme jako lokální čas.
  • Vztah událostí:
    • A→B ⇒ TS(A) < TS(B)

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ů)
    • iniciálně vyplněn nulami
  • 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:
    • V = V' iff všechny členy vektoru jsou si rovny
    • V < V' iff V[j] < V'[j] pro j=1,…|V|

Globální stav

Global State Recording Algorithm Candy & Lamport

  • iniciátor = proces iniciující zjištění globálního stavu
    • zaznamená momentku svého lokálního stavu a odešle MARKER všem sousedům v DS
  • 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
    • zaznamená události od poslední momentky a pošle iniciátorovi
  • 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).

Detekce ukončení

Problém vzájemného vyloučení a problém uváznutí a jejich řeš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.
    • zamezuje uváznutí/stárnutí procesů
  • Podmínka spravedlnosti (jedna z uvedených)
    • pořadí vstupů do KS = pořadí vydání žádosti o vstup
    • každý ostatní proces DS smí žádající proces předběhnout nejvýše 1x

Ř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
  • Distribuované řešení založené na regularitě komunikačních cest

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.
  • lineární složitost
  • ➕ 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.
  • ➕ Vzájemná výlučnost splněna trvale.
  • ➕ Nemůže dojít ani k uváznutí ani ke stárnutí.
  • Distribuované řešení založené na získání souhlasu partnerských procesů

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.
  • ➖ Procesy se musí navzájem znát.

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:

  • bezpečnost:
    • Každá dvojice volebních okrsků má alespoň jeden společný prvek.
    • Každý má pouze jeden hlas. ⇒ Nemohou být současně zvoleny dva procesy.
  • spravedlnost
    • Velikost okrsků je konstantní a každý proces je ve stejném počtu okrsků.
    • Všechny procesy potřebují pro vstup do KS stejný počet hlasů

Problém volby vedoucího prvku

Vliv topologie a její znalosti/neznalosti na složitost řešení problému

Zdroje

  • slidy pa150 (podzim 2017)
mgr-szz/in-pos/4-pos.1560092685.txt.gz · Poslední úprava: 2020/04/12 16:56 (upraveno mimo DokuWiki)
Nahoru
CC Attribution-Noncommercial-Share Alike 4.0 International
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0