Distribuovaná synchronizace. Paralelní a distribuované systémy. 11. Přednáška Vzájemné vyloučení. Centralizovaný algoritmus - fronta procesů

Podobné dokumenty
Distribuované algoritmy - přehled. Přednášky z Distribuovaných systémů Ing. Jiří Ledvina, CSc.

Synchronizace. Přednášky z distribuovaných systémů Ing. Jiří Ledvina, CSc.

Distribuované systémy a výpočty

Distribuované systémy a výpočty

Vzájemné vyloučení procesů

Operační systémy. Přednáška 5: Komunikace mezi procesy

IB109 Návrh a implementace paralelních systémů. Kolektivní komunikační primitava. RNDr. Jiří Barnat, Ph.D.

Distribuované algoritmy

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr

Chapter 7: Process Synchronization

Semafory Zobecněním operací WAKEUP a SLEEP přidáním celočíselného čítače vzniknou semafory a jejich atomické operace DOWN a UP.

PARA Filozofové, kuřáci a holič

Principy operačních systémů. Lekce 6: Synchronizace procesů

Homer. prvky. délka. přední 0 zadní 4. Použití fronty BUS STOP. 3 Lisa. 2 Bart. 4 Maggie. 1 Marge. Grafické znázornění předchozí animace:

Operační systémy Tomáš Hudec. 6 Komunikace procesů (IPC) Obsah: 6.1 Klasické problémy souběhu Obědvající filosofové

PRÉCIS STRUKTUROVANÁ DATABÁZE JAKO ODPOVĚĎ NA NESTRUKTUROVANÝ DOTAZ. Dominik Fišer, Jiří Schejbal

Interpret jazyka IFJ2011

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

Cvičení 9 - Monitory. monitor m; var proměnné... procedure p; begin... end; begin inicializace; end;

Úvod do simulace - 1

KMA/PDB. Karel Janečka. Tvorba materiálů byla podpořena z prostředků projektu FRVŠ č. F0584/2011/F1d

Jarníkův algoritmus. Obsah. Popis

Synchronizace Mgr. Josef Horálek

IB108 Sada 1, Příklad 1 Vypracovali: Tomáš Krajča (255676), Martin Milata (256615)

Hranová konzistence. Arc consistency AC. Nejprve se zabýváme binárními CSP. podmínka odpovídá hraně v grafu podmínek

1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1

Základní komunikační operace

Operační systémy. Přednáška 4: Komunikace mezi procesy

Martin Milata, Pokud je alespoň jeden rozměr čokolády sudý (s výjimkou tabulky velikosti 1x2, která už je od

Evoluční algoritmy. Podmínka zastavení počet iterací kvalita nejlepšího jedince v populaci změna kvality nejlepšího jedince mezi iteracemi

Abstraktní datové typy FRONTA

Distribuované systémy a výpočty

Umělá inteligence. UI (AI) - součást informatiky s průniky mimo obor Stručná historie UI. Letošní cena nadace Vize Joseph Weizenbaum

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Katedra kybernetiky skupina Inteligentní Datové Analýzy (IDA) 9. dubna Filip Železný (ČVUT) Vytěžování dat 9.

NPRG051 Pokročilé programování v C /17 Úkol 2

PB přednáška (26. října 2015)

Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4

Anotace. Dynamické programování, diskrétní simulace.

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)

Procesy a vlákna - synchronizace

Paralelní programování

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

Koncepce DMA POT POT. Při vstupu nebo výstupu dat se opakují jednoduché činnosti. Jednotlivé kroky lze realizovat pomocí speciálního HW.

Základy topologie a komunikace sítí LAN

Směrovací protokoly, propojování sítí

Souhrn Apendixu A doporučení VHDL

MQL4 COURSE. By Coders guru -5 Smyčky & Rozhodnutí Část 2

Grafové algoritmy. Programovací techniky

PRG036 Technologie XML

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Programovací jazyk Pascal

IB015 Neimperativní programování. Časová složitost, Typové třídy, Moduly. Jiří Barnat Libor Škarvada

Kapitola 7: Návrh relačních databází. Nástrahy relačního návrhu. Příklad. Rozklad (dekompozice)

Sada 1 - Základy programování

Informatika Algoritmy

přirozený algoritmus seřadí prvky 1,3,2,8,9,7 a prvky 4,5,6 nechává Metody řazení se dělí:


SQL tříhodnotová logika


Algoritmus Minimax. Tomáš Kühr. Projektový seminář 1

NPRG030 Programování I, 2016/17 1 / :58:13

Definice uživatelského typu. Uživatelem definované typy. Součinové datové typy. Součtové datové typy. FLP - Uživatelem definované typy

Software je ve světě IT vše, co není Hardware. Do softwaru patří aplikace, program, proces, algoritmus, ale i data (text, obrázky), operační systém

Dijkstrův algoritmus (připomenutí)

TGH05 - aplikace DFS, průchod do šířky

Písemná zpráva zadavatele

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

5 Rekurze a zásobník. Rekurzivní volání metody

Grafové algoritmy. Programovací techniky

zswi/pc-testování.d 10. května

Matice sousednosti NG

Počítačové šachy. Otakar Trunda

PES lib (C + PASCAL) KNIHOVNY KOMUNIKAÈNÍCH FUNKCÍ 03/ PESlib KOMUNIKAČNÍ KNIHOVNY C, PASCAL 03/ stran 1


Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Hledáme efektivní řešení úloh na grafu

KOMUNIKACE a REPORTING Zkušenosti z VŠCHT Praha

Filr 2.0 Uživatelská příručka k aplikaci Filr Web. Únor 2016

Vyhodnocování dotazů slajdy k přednášce NDBI001. Jaroslav Pokorný MFF UK, Praha

8. Zpracování dotazu. J. Zendulka: Databázové systémy 8 Zpracování dotazu 1

Procesy a vlákna IPC Komunikace mezi procesy (IPC = Inter-Process Communication)

Časová a prostorová složitost algoritmů

Lineární datové struktury

bfs, dfs, fronta, zásobník, prioritní fronta, halda

Paralelní programování

ALG 04. Zásobník Fronta Operace Enqueue, Dequeue, Front, Empty... Cyklická implementace fronty. Průchod stromem do šířky

IV113 Validace a verifikace. Převod LTL formule na Büchi automat. Jiří Barnat

Distribuované systémy poznámky k přednášce (založeno na Tel G., Introduction to distributed algorithms.)

Problém identity instancí asociačních tříd

ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ

Komunikace eorders. aegis. aegis.cz. Konference Common 2009 Malá Fatra. Evžen Kučera

Spojový seznam. Jan Kybic.

bfs, dfs, fronta, zásobník, prioritní fronta, halda

Základní datové struktury

NPRG030 Programování I, 2010/11

Uživatelská dokumentace

Použití dalších heuristik

Paralelní programování

Transkript:

Distribuovaná synchronizace Využití kritické sekce při vzájemném vyloučení v distribuovaném systému Paralelní a distribuované systémy 11. Přednáška Vzájemné vyloučení Logicky distribuovaný systém s vlákny Semafory, zámky yzicky distribuovaný systém? Procesy běží na různých procesorech Distribuované algoritmy vzájemného vyloučení: Lenka Carr Motyčková! Algoritmy: Centralizované Lamportův Ricart-Agrawala Maekewa Suzuki-Kasami Raymondův DM: Centralizovaný algoritmus Centralizovaný algoritmus - fronta procesů Jeden z procesů je vybrán jako koordinátor, např. proces nejvyšším ID Proces, který chce vstoupit do KS pošle koordinátorovi zprávu request Koordinátor rozhodne, který proces vstoupí do KS jako další a pošle tomuto procesu zprávu reply Proces, který přijme zprávu reply vstoupí do KS Po opuštění KS pošle proces zprávu release koordinátorovi a pokračuje ve své činnosti Algoritmus potřebuje pro vstup do KS tři zprávy: request reply release Centralizovaný algoritmus Centralizovaný algoritmus req server busy: boolean queue reply clients release Client do true send request; reply received enter CS; send release; <other work> od Server do request received and not busy send reply; busy:= true request received and busy enqueue sender release received and queue is empty busy:= false release received and queue not empty send reply to the head of the queue od Správnost: Vzájemné vyloučení: proces musí opustit KS předtím, než do ní vstoupí další érovost: procesy vstupují do KS v pořadí, ve kterém požadovaly vstup Uváznutí: koordinátor vydá další povolení ke vstupu do KS, pokud předchozí proces z KS vystoupí Nevýhody: Vznik bottlenecku Algoritmus selže, když se proces - koordinátor zastaví 1!

Distribuovaný algoritmus Distribuovaný algoritmus Centralizovaný koordinátor Distribuovaný koordinátor - množina arbitrů = quorum S i P i S i Každá dvojice procesů má alespoň jednoho společného arbitra : quorum - množina arbitrů: S i S j Každý proces má stejnou odpovědnost v roli člena quora (D) počet quor S k, pro která P i S k je D Každý proces musí vynaložit stejné úsilí při vstupu do KS: S i = K Síť musí být úplně propojená Kanály jsou IO a jsou spolehlivé P i P j S i S j Předpoklady: Velikost quora je N (D = K = N) Síť musí být úplně propojená: rozeslání = broadcast Kanály jsou IO Zpráva je doručená v konečném čase Request (T i,i) - zpráva obsahuje časová razítka Každý proces si vytváří uspořádanou frontu zpráv Request(s) Vstup do KS: P i uloží zprávu Request(T i,i) do své vlastní fronty a rozešle ji P j uloží zprávu Request(T i,i) do své vlastní fronty a odpoví procesu i : Reply(T j,j) Pi vstoupí do KS právě, když A) jeho vlastní požadavek je na začátku jeho vlastní fronty a B) P i přijal zprávy Reply s časovým razítkem starším než (T i, i) od všech ostatních procesů =>! Právě jeden proces je v KS:! P i musel také dostat všechny požadavky Request s časovými razítky menšími než (T i, i) (P i už dostal všechny požadavky starší než je jeho vlastní) Výstup z KS: P i odstraní svůj požadavek ze své fronty P i rozešle Release (T i, i) P j odstraní Request (T i,i) ze své fronty reply(t k ) Komunikační složitost: 3(N - 1) req(t s, P o ) req(t m, P i ) 2!

Princip: P j odešle zprávu Reply(T j,j) právě když nežádá o vstup do KS nebo jeho žádost má časové razítko (T j, j) > (T i,i) Jinak je zpráva Reply odložena na pozdější dobu P i vstoupí do KS až potom, co přijme zprávy Reply od všech ostatních procesů 2(N-1) zpráv Algoritmus: Když chce proces P i vstoupit do KS, vygeneruje nové časové razítko, (T i,i), a pošle zprávu Request (T i,i) všem ostatním procesům Když proces P j přijme zprávu Request (T i,i), buď okamžitě odpoví nebo odpověď odloží Když proces P i přijme zprávy Reply od všech ostatních procesů může vstoupit do KS Po opuštění KS proces pošle zprávy Reply(T i,i) všem odloženým procesům Algoritmus pokrač.: Rozhodnutí, zda proces P j odpoví na zprávu Request (T i,i) okamžitě nebo odloží odpověď, záleží na třech faktorech : jestliže je P j v KS, potom odpověď procesu P i odloží jestliže P j nechce vstoupit do KS, potom pošle procesu P i odpověď okamžitě jestliže chce proces P j vstoupit do KS, ale ještě tak neučinil, potom srovná časové razítko svého vlastního požadavku s časovým razítkem (T i,i) jestliže je časové razítko vlastního požadavku větší než (T i,i), potom pošle okamžitě zprávu Reply(T j,j) procesu P i (proces P i požádal o vstup do KS dříve) jinak je odpověď Reply odložena or each process requesting an access to CS:! my-request := true; #rec :=0;! broadcast <Request, Ti, i>;! while #rec < N - 1 do receive <Reply, Tj, j>; #rec ++; enter CS;! my-request := false;! k := 1;! while (k < N) do if Postponed[k]! then begin send <Reply, Ti, i> to k;! Postponed[k] := false; k++;! : příklad or each process upon receipt of receive <Request, Tj, j>:! if (my_request and (Ti,i) < (Tj,j) )! //pokud je v KS, tak podmínka vždy platí! then Postponed [j] := true! else send <Reply, Ti, i> to j;! 3!

: správnost : nedostatky Absence uváznutí je zaručena, protože vstup do KS je řízen pořadím časových razítek Proces musí znát identitu všech ostatních procesů v systému, což komplikuje dynamické přidávání a odstraňování procesů do/ze systému Absence stárnutí je zaručena, (žádosti posouvají časová razítka) Jestliže jeden z procesů přestane pracovat celý systém se zhroutí Pořadí časových razítek zaručuje že procesy jsou obslouženy způsobem firstcome, first served Počet zpráv nutných ke vstupu do KS Problém může být vyřešený kontinuálním monitorováním stavu všech procesů v systému Tento algoritmus je vhodný pro malé a stabilní systémy spolupracujících procesů 2(N 1) Ricarto Agrawalův algoritmus je symetrický Maekavův algoritmus tento požadavek uvolňuje quorum - množina arbitrů: S 1 = = S N = K Každý proces musí vynaložit stejné úsilí při vstupu do KS (K požadavků) Každá dvojice procesů má alespoň jednoho společného arbitra: S i S j P i S i S i vždy obsahuje proces P i N počet quor (podmnožin) = počet uzlů D.. P i je členem D quor = počet duplikací K.. počet procesů v každém quoru # quor N * # členů K = # uzlů N # duplikací D N * K / D = N => D = K v quoru je K procesů, každý je členem D quor j: P j je členem D quor S k tj. každý proces má stejnou odpovědnost jako člen různých quor Je potřeba přesně N quor: N = (D - 1) K + 1 N = (K - 1) K + 1 => K N Algoritmus s předáváním příznaku <Request, i > z procesu P i všem členům S i Jestliže člen quora není zamčený, odpoví YS a zamče se (odpovídá na první požadavek) Jestliže je proces už zamčený, uloží požadavek do uspořádané fronty a na požadavek neodpoví Když proces P i vstoupí do KS, všichni členové jeho quora S i musí být zamčení Když proces P i přijme zprávy YS od všech procesů P k S i P i vstoupí do KS Když proces P i opustí KS rozešle zprávy Release všem členům quora S i a odemče je Komunikační složitost O(K) = O( N ) Příznak obíhá mezi procesy Příznak je zvláštní typ zprávy Jestliže proces drží příznak, může vstoupit do KS Procesy jsou logicky uspořádané do kruhu, stromu nebo úplného grafu Jednosměrný kruh zaručuje absenci stárnutí procesů Algoritmus může mít dva typy poruch: Ztráta příznaku musí se zvolit jeden proces, který vlastní příznak Nefunkční proces musí se vytvořit nový logický kruh 4!

Suzuki - Kasami algoritmus Příznak = obsahuje pole token[n] časových razítek, které označují kdy naposled proces Pi přijal příznak a vstoupil do KS token [ ] 1 2 n Lokální pole requests[n] časových razítek, které označují kdy naposled proces Pi požadoval vstup do KS requests [ ] 1 2 n Zprávy jsou doručené v konečném čase Síť je úplně propojená (mesh) Nejsou potřeba IO kanály Komunikační složitost : n - 1 Suzuki - Kasami algoritmus or each process requesting an access to CS:! if!have_token! then begin broadcast <Request, Ti, i>;! receive <Token>; have_token := true; using_token := true;! enter CS;! token[i] := local_time T;! using_token := false;! k := i +1;! while (k i) do if (requests[k] > token [k] and have_token)! then begin have_token := false;! send <Token> to k; (k++) mod N; Suzuki - Kasami algoritmus or each process upon receipt of <Request,Tj,j>:! requests[j] := max(requests[j], Tj);! if have_token and!using_token! then k := i +1;! while (k i) do if (requests[k] > token [k]) and! have_token! then begin have_token := false;! send <Token> to k; end;! (k++) mod N;! end;! Raymondův algoritmus Logická stromová topologie Zprávy se posílají jenom ve stromu Komunikační složitost odpovídá ~ výšce stromu = log N Proces, který vlastní příznak smí vstoupit do KS Požadavky jsou ukládány do fronty v každém uzlu podle časových razítek HOLDR A = D HOLDR D = A D A D B C B C Raymond s algorithm Distribuované algoritmy vzájemného vyloučení A D A D B C B C HOLDR B = A HOLDR C = A HOLDR = self HOLDR = D HOLDR A = D HOLDR D = A žádá o vstup do KS -> HOLDR A = D D žádá o příznak : HOLDR D = opustil KS a předá příznak žádajícímu sousedovi, nastaví HOLDR = D D : HOLDR D = A: pošle příznak uzlu A 5!