Komunikacja asynchroniczna w modelu rozproszonym

Podobne dokumenty
3URJUDPRZDQLHZVSyáELH*QHZVWS

Mechanizmy komunikacji. spotkania symetryczne (język CSP) spotkania asymetryczne (Ada) przestrzenie krotek (Linda) potoki, komunikaty i kanały (Unix)

Klasyczne problemy współbieżności. Problem producenta i konsumenta Problem czytelników i pisarzy Problem pięciu filozofów

Monitory. Wady semafora

synchronizacji procesów

Programowanie Równoległe i Rozproszone

synchronizacji procesów

SOP2 - semafory. grudzień

Proces z sekcją krytyczną. Synchronizacja procesów. Synchronizacja procesów, cd. Synchronizacja procesów, cd. Synchronizacja procesów, cd

Semafory. // G - globalna dla wszystkich. // Wada - aktywne oczekiwanie Test_and_Set(Li); exit when Li = 0; end loop sekcja_krytyczna(i); G := 0;

Wprowadzenie do programowania współbieżnego

Proces z sekcją krytyczną. Synchronizacja procesów. Synchronizacja procesów, cd. Synchronizacja procesów, cd. Synchronizacja procesów, cd

Ingerencja w kod systemu operacyjnego (przerwania) Programowanie na niskim poziomie (instrukcje specjalne) Trudności implementacyjne (alg.

Semafory w systemie Unix

Semafory. - aktywne oczekiwanie =GRGDWNRZ\PZVSDUFLHPVSU]WRZ\P 6SHFMDOQDLQVWUXNFMDPDV]\QRZDUHDOL]XMFDDWRPRZ\]DSLVL odczyt, np.

Synchronizacja procesów

Programowanie Współbieżne. Wstęp

Monitory. Jarosław Kuchta

Klient-Serwer Komunikacja przy pomocy gniazd

Synchronizacja procesów

Zagadnienia zaawansowane. Lech Kruś,

Proces z sekcją krytyczną. Synchronizacja procesów. Synchronizacja procesów, cd. Synchronizacja procesów, cd. Synchronizacja procesów, cd

Systemy operacyjne. Zajęcia 11. Monitory

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

WYKŁAD 4 SEMAPHORES (CIĄG DALSZY) Przykład 6 Problem czytelników i pisarzy. Wykład 4 strona 1/24

Mechanizmy pracy równoległej. Jarosław Kuchta

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

Informatyka 1. Przetwarzanie tekstów

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Programowanie współbieżne Zadanie nr 4 Spotkania

Rozwi zania klasycznych problemów w Rendezvous

Wykład 5. Synchronizacja (część II) Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Programowanie wspóªbie»ne

Czas wirtualny, złożoność algorytmów

Wykład 4. Synchronizacja procesów (i wątków) cześć I. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

WOJSKOWA AKADEMIA TECHNICZNA im. Jarosława Dąbrowskiego LABORATORIUM UKŁADÓW PROGRAMOWALNYCH I SPECJALIZOWANYCH

Klasyczne problemy synchronizacji

Wstęp do programowania 2

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

5. Model komunikujących się procesów, komunikaty

Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1

Systemowe mechanizmy synchronizacji procesów

Przetwarzanie wielowątkowe przetwarzanie współbieżne. Krzysztof Banaś Obliczenia równoległe 1

Detekcja zakleszczenia (1)

Synchronizacja procesów

Czas wirtualny, złożoność algorytmów

Informatyka 1. Wyrażenia i instrukcje cd., ręczna symulacja, operacje wejścia/wyjścia

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

IPC: Kolejki komunikatów

Systemy operacyjne III

Programowanie współbieżne Wykład 4. Rafał Skinderowicz

Problem detekcji zakończenia

SYSTEMY CZASU RZECZYWISTEGO - VxWorks

Wstęp do programowania. Różne różności

Pascal - wprowadzenie

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu. Blok kontrolny procesu

Systemy Operacyjne synchronizacja i komunikacja procesów

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Wykład 5: Specyfikacja na poziomie systemowym

Wykład 4. Synchronizacja procesów (i wątków) cześć I. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Problemy czytelników i pisarzy oraz 5 ucztujących filozofów

Problemy współbieżności

Komputerowe systemy sterowania

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

Projekt prostego procesora

Stan procesu. gotowy - czeka na przydział procesora, zakończony - zakończył działanie.

Wzajemne wykluczanie i zakleszczenie

Programowanie w Turbo Pascal

Tryby komunikacji między procesami w standardzie Message Passing Interface. Piotr Stasiak Krzysztof Materla

Wykład 6_1 Abstrakcyjne typy danych stos Realizacja tablicowa i za pomocą rekurencyjnych typów danych

Przegląd zagadnień programowania wspólbieżnego

Język programowania PASCAL

Stan globalny. Krzysztof Banaś Systemy rozproszone 1

Wprowadzenie do programowania współbieżnego i rozproszonego

Modele programowania równoległego. Programowanie z przekazywaniem komunikatów Message-Passing Programming Rafał Walkowiak dla PR PP

Wstęp do programowania 2

Programowanie Współbieżne. Monitory

Proces y i y w i ąt ą ki

Ada 95 #1/5 - typy. Typy skalarne. Hierarchia typów w Adzie. Typ znakowy. Typy dyskretne. Plan wykładu

Laboratorium 10 Temat: Zaawansowane jednostki testowe. Operacje na plikach. Funkcje.

Ustawienia :JO GZSRGVWDZRZHLQIRUPDFMH

typ zakres sposob zapamietania shortint integer bajty (z bitem znaku) longint byte word

INSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma};

Modele programowania równoległego. Programowanie z przekazywaniem komunikatów Message-Passing Programming Rafał Walkowiak

dr inż. Grażyna KRUPIŃSKA D-10 pokój 227 WYKŁAD 12 WSTĘP DO INFORMATYKI



Synchronizacja procesów i wątków

Programowanie RAD Delphi

Pliki. Operacje na plikach w Pascalu

Matematyka dyskretna - wykład - część Podstawowe algorytmy kombinatoryczne

Kolejkowanie wiadomości Standard MQ (JMS)

Pascal. 1. Pliki tekstowe. Przykład 1.1. Zapis do pliku tekstowego

OPERACJE NA PLIKACH. Podstawowe pojęcia:





Transkrypt:

Komunikacja asynchroniczna w modelu rozproszonym.odv\f]qhsureohp\zvsyáelh QR FL Problem wzajemnego wykluczania 1DMF] FLHMSRMDZLDM F\VL ZSUDNW\FH operacje lokalne; SURWRNyáZVW SQ\ rejon krytyczny; SURWRNyáNR FRZ\ forever %H]SLHF]H VWZR: - :UHMRQLHNU\W\F]Q\PSURJUDPXPR HSU]HE\ZDü MHGQRF]H QLHFRQDMZ\ HMMHGHQSURFHV \ZRWQR ü: - 3URFHVNWyU\FKFHZHM ügruhmrqxnu\w\f]qhjrznr FXGR niego wejdzie Problem producenta i konsumenta 3U]\NáDG] \FLD: fabryka, magazyn, odbiorca 3U]\NáDG]V\VWHPyZOLF] F\FKX \WNRZQLNNRPSXWHUDEXIRU klawiatury, system operacyjny %H]SLHF]H VWZR: -.RQVXPHQWSRELHUDSRUFM Z\SURGXNRZDQ SU]H]SURGXFHQWD - Producent czeka na wolne miejsce w buforze -.RQVXPHQWF]HNDQDSHáQHPLHMVFHZEXIRU]H Komunikacja asynchroniczna... Str. 1

\ZRWQR ü: -.RQVXPHQWNWyU\FKFHRGHEUDüSRUFM ZNR FXM RGELHU]H - 3URGXFHQWNWyU\Z\SURGXNRZDáSRUFM ZNR FXM XPLH FLZ buforze Warianty: - bez bufora - bufor jednoelementowy - bufor N-elementowy - bufor nieograniczony (producent nie czeka) - wielu producentów - wielu konsumentów - SRUFMHUy QHMZLHONR FL Interesuje nas synchronizacja producenta i konsumenta. 3UREOHPGRERUXZLHONR FLEXIRUDMHVWSR]DQDV]\PL zainteresowaniami Problem czytelników i pisarzy 3U]\NáDG: rezerwacja miejsc lotniczych %H]SLHF]H VWZR: - Gdy pisarz zapisuje, nikt inny nie czyta, ani nie pisze - *G\F]\WHOQLNF]\WDLQQLF]\WHOQLF\PRJ F]\WDü \ZRWQR ü: -.D G\F]\WHOQLNNWyU\FKFHF]\WDüZNR FXE G]LHPyJá UR]SRF] üf]\wdqlh -.D G\SLVDU]NWyU\FKFHSLVDüZNR FXE G]LHPyJá UR]SRF] üslvdqlh Komunikacja asynchroniczna... Str. 2

Warianty: - SULRU\WHWF]\WHOQLNyZ ZLDGRPDUH]\JQDFMD] \ZRWQR FL PR OLZR ü]djárg]hqldslvdu]\ - SULRU\WHWSLVDU]\ ZLDGRPDUH]\JQDFMD] \ZRWQR FL PR OLZR ü]djárg]hqldf]\whoqlnyz - UyZQHSULRU\WHW\EH]PR OLZR FL]DJáRG]HQLD - ograniczona liczba miejsc w czytelni 3UREOHPSL FLXILOR]RIyZ 3U]\NáDGDEVWUDNF\MQ\DOHXND]XM F\SRGVWDZRZHSUREOHP\ ZVSyáELH QR FL %H]SLHF]H VWZR: - )LOR]RIMHMH OLPDREDZLGHOFH - DGHQZLGHOHFQLHPR HE\üMHGQRF]H QLHZSRVLDGDQLX dwóch filozofów \ZRWQR ü - 1LNWQLHXPU]H]JáRGX Warianty narodowe: ZáRVNLILOR]RIRZLHMHG] PDNDURQZLGHOFDPL FKL VNLILOR]RIRZLHMHG] U\ SDáHF]NDPL Komunikacja asynchroniczna... Str. 3

Model rozproszony: 1LHPDSDPL FLZVSyáG]LHORQHMSU]H]SURFHV\ 6\QFKURQL]DFMDLNRPXQLNDFMDRGE\ZDVL Z\á F]QLH]DSRPRF SU]HV\áDQLDNRPXQLNDWyZMDZQHJROXEQLHMDZQHJR 0R OLZHUHDOL]DFMHZ\PLDQ\NRPXQLNDWyZ komunikacja synchroniczna: - SURFHVNWyU\FKFHZ\VáDüNRPXQLNDWF]HNDD LQQ\SURFHV E G]LHFKFLDáJRRGHEUDü - SURFHVNWyU\FKFHRGHEUDüNRPXQLNDWXF]HNDD LQQ\SURFHV E G]LHFKFLDáJRZ\VáDü - SU]HND]DQLHNRPXQLNDWXPR HVL RGE\üMHG\QLHSU]\XG]LDOH ]DLQWHUHVRZDQ\FKSURFHVyZEH]SR UHGQLND komunikacja asynchroniczna: - SURFHVNWyU\FKFHZ\VáDüNRPXQLNDWQLHF]HNDD NWR E G]LH FKFLDáJRRGHEUDüW\ONRXPLHV]F]DJRZEXIRU]H - SURFHVNWyU\FKFHRGHEUDüNRPXQLNDWF]HNDD E G]LHGOD niego komunikat (wersja EORNXM FDOXENR F]\RGELyU NRPXQLNDWXV\JQDOL]XM FEá GZHUVMDQLHEORNXM FD) Sposoby adresowania komunikatów: NRPXQLNDWPR HE\üSU]H]QDF]RQ\GODNRQNUHWQHJRprocesu; NRPXQLNXM FHVL SURFHV\]QDM VZRMHQD]Z\ (identyfikacja symetryczna) NRPXQLNDWPR HE\üSU]H]QDF]RQ\GODNRQNUHWQHJRprocesu; MHGQD]HVWURQQLHZLH]NLPVL NRPXQLNXMH (identyfikacja asymetryczna, charakterystyczna dla architektury klient-serwer) Komunikacja asynchroniczna... Str. 4

NRPXQLNDWPR HE\üZ\V\áDQ\SRNRQNUHWQ\Pkanale NRPXQLNDF\MQ\PZ\V\áDM F\QLHPXVLZLHG]LHüGRNRJRWUDIL komunikat NRPXQLNDWPR HE\üZVWDZLRQ\GRNRQNUHWQHJRbufora (ograniczonego lub nieograniczonego) 3U]HDQDOL]XMHP\QDVW SXM FHZDULDQW\: komunikacja asynchroniczna, komunikaty wstawiane do wskazanego bufora (á F]D, á F]DQD]ZDQH, kolejki komunikatów w systemie Unix) NRPXQLNDFMDDV\QFKURQLF]QDNRPXQLNDW\Z\V\áDQHSU]H] NDQDá\NRPXQLNDF\MQHQLHRJUDQLF]RQHEXIRU\Estelle) komunikacja synchroniczna, symetryczna (CSP) komunikacja synchroniczna, asymetryczna (Ada) komunikacja asynchroniczna, komunikaty wstawiane do nieograniczonego bufora, selektywny wybór z bufora (Linda) Cechy komunikacji asynchronicznej: Z\VáDQLHNRPXQLNDWXQLHZVWU]\PXMHQDGDZF\]SHZQ\PL Z\M WNDPL Z\VáDQHLMHV]F]HQLHRGHEUDQHNRPXQLNDW\V SU]HFKRZ\ZDQHZ buforze EXIRUPR HE\üQLHRJUDQLF]RQ\OXERJUDQLF]RQ\SUyEDZ\VáDQLD NRPXQLNDWXGRSHáQHJREXIRUDPR HNR F]\üVL Eá GHPOXE ZVWU]\PDQLHPSURFHVXZ\V\áDM FHJR RGELHUDQLHNRPXQLNDWyZPR H]DNR F]\üVL ZVWU]\PDQLHP QDGDZF\ZHUVMDEORNXM FDOXEEá GHPZHUVMDQLHEORNXM FD Komunikacja asynchroniczna... Str. 5

Notacja do opisu komunikacji asynchronicznej Abstrahujemy od konkretnej realizacji i jej technicznych Z\PRJDFKVNXSLDM FVL QDHOHPHQWDFKLVWRWQ\FK]SXQNWX ZLG]HQLDSURJUDPRZDQLDZVSyáELH QHJR X \ZDP\NRQVWUXNFMLSURJUDPLVW\F]Q\FK]M ]\NDPascal UR]V]HU]DP\M ]\NRGHILQLFMHprocesówVNáDGQLDW\FKGHILQLFML MHVWDQDORJLF]QDMDNVNáDGQLDGHILQLFMLSURFHGXU process P (i: integer);... end dodajemy konstrukcje co i coendgrz\ud DQLD ZVSyáELH QHJR wykonania procesów, np.: co P(1); P(1); P(2); Q coend wprowadzamy predefiniowany typ danych buffer. Zmienne tego W\SXUHSUH]HQWXM EXIRU\GRNWyU\FKZ\V\áDP\L]NWyU\FK odbieramy komunikaty ]PLHQQHW\SXEXIRURZHJRPRJ Z\VW SLüMHG\QLHZ SURFHGXUDFKZ\V\áDQLDLRGELHUDQLDNRPXQLNDWyZ0RJ E\ü deklarowane jedynie poza procesami EXIRU\V QLHRJUDQLF]RQHLG]LDáDM MDNNROHMNLSURVWH ]DNáDGDP\LVWQLHQLHSUHGHILQLRZDQ\FKSURFHGXU - SendMessage (b, t), NWyUDSRZRGXMHZ\VáDQLHNRPXQLNDWXR WUH FLWGREXIRUDEWMHVWZDUWR FL GRZROQHJRW\SX - GetMessage (b, t)nwyudsrzrgxmhz\m FLHSLHUZV]HJR NRPXQLNDWX]EXIRUDEL]DSDPL WDQLHJRQD]PLHQQHMW7\S RGHEUDQHJRNRPXQLNDWXPXVLE\ü]JRGQ\]W\SHP]PLHQQHMW MH OLEXIRUMHVWSXVW\WRGetMessage (b, t) wstrzymuje proces SURFHV\QLHPRJ RGZRá\ZDüVL GR]PLHQQ\FKglobalnych ]Z\M WNLHP]PLHQQ\FKEXIRURZ\FK operacja GetMessage (b, t)mhvw \ZRWQD Komunikacja asynchroniczna... Str. 6

3U]\NáDG Problem wzajemnego wykluczania b: buffer; m: integer; process P; m: integer; operacje lokalne; GetMessage(b, m); {SURWRNyáZVW SQ\} rejon krytyczny; SendMessage(b, m) {SURWRNyáNR FRZ\} until false SendMessage (b, m); co P; P co -DN]PLHQLVL UR]ZL ]DQLHMH OL E G]LHZL FHMSURFHVyZ" ZUHMRQLHNU\W\F]Q\PPDSU]HE\ZDüFRQDMZ\ HM0SURFHVyZ" EXIRU\E G RJUDQLF]RQH" 2GSRZLHG]LQDüZLF]HQLDFK Komunikacja asynchroniczna... Str. 7

3U]\NáDG 3L FLXILOR]RIyZ Wariant I. Widelec jest komunikatem. process Fil (i: 0..4); ^P\ O ` GetMessage (b[i], m); GetMessage (b[(i+1) mod 5], m); {jem} SendMessage (b[i], m); SendMessage (b[(i+1) mod 5], m) until false b[4] 3 4 b[3] b[0] 2 0 b[2] b[1] 1 Zakleszczenie:ZV]\VF\SRELHUDM QDMSLHUZOHZ\ZLGHOHFLF]HNDM na prawy 3U]\NáDG 3L FLXILOR]RIyZ Wariant II. Widelce jako procesy. 1LHGHWHUPLQLVW\F]QDNROHMQR üsrgqrv]hqldzlghofyz w, f: array[0..4] of buffer; Fil[0] Fil[1]... w[0] f[0] w[1] f[1]... Wid[0] Wid[1] Komunikacja asynchroniczna... Str. 8

process Fil (i: 0..4); k: integer; ^P\ O ` SendMessage (w[i], i); GetMessage (f[i], k); { czekaj na potwierdzenie } SendMessage (w[(i+1) mod 5], i); GetMessage (f[i], k); { czekaj na potwierdzenie } {jem} SendMessage (w[i], i); SendMessage (w[(i+1) mod 5], i) until false process Wid (i: 0..4); k1, k2, ktoje: integer; ktoje := 0; k2 := 0; GetMessage (w[i], k1); if k2 = ktoje then ktoje := k1 else ktoje := k2; SendMessage (f[nwrmh@l^z\ OLMSRWZLHUG]HQLH` GetMessage (w[i], k2); until false 1LHGHWHUPLQLVW\F]QDNROHMQR üsrelhudqldzlghofyzqlhsrsudzld V\WXDFMLGDOHMMHVWPR OLZHzakleszczenie. Komunikacja asynchroniczna... Str. 9

3U]\NáDG 3L FLXILOR]RIyZ Wariant III. 3URFHVQDG]RUXM F\. type 6WDQ -H0\ OL*áRGQ\ Komunikat = record co: (&KFH-H ü6nr F]\á kto: 0..4 serw: buffer; f : array [0..4] of buffer; const Jedz = 0; Fil[0] process Fil (i:0..4); k: Komunikat; potw: integer; k.kto := i; ^P\ O ` k.co := &KF -H ü SendMessage (serw, k); f[0] f[0] S GetMessage (f[i], potw); { czekaj na potwierdzenie } {jem} NFR 6NR F]\á SendMessage (serw, k) until false; Fil[1]... f[1]... Komunikacja asynchroniczna... Str. 10

process S; s: array [0..4] of6wdq 0\ OL0\ OL0\ OL0\ OL0\ OL k: Komunikat; procedure6sudzg N ifv>n@ *árgq\and (s[(k-1) mod 5]) <> Je and (s[(k+1) mod 5]) <> Je then s[k] := Je; SendMessage (f[k], Jedz) end end^6sudzg ` {proces S} GetMessage (serw, k); case k.co of &KFH-H ü s[nnwr@ *árgq\ 6SUDZG k.kto); 6NR F]\á s[nnwr@ 0\ OL 6SUDZG NNWRmod 5); 6SUDZG NNWRmod 5) end end {case} until false )LOR]RIRZLHSRGQRV] RE\GZDZLGHOFHQDUD]0R OLZH ]DJáRG]HQLH Komunikacja asynchroniczna... Str. 11

3U]\NáDG 3L FLXILOR]RIyZ Wariant IV. Bilety. bilety: EXIIHU^SRF] WNRZRZEXIRU]HELOHW\` process Fil (i: 0..4); k: integer; ^P\ O ` GetMessage (bilety, k); SendMessage (w[i], i); SendMessage (w[(i+1) mod 5], i); GetMessage (f[i], k); GetMessage (f[i], k); {jem} SendMessage (w[i], i); SendMessage (w[(i+1) mod 5], i); SendMessage (bilety, k) until false 5R]ZL ]DQLHSRSUDZQH3U]\VWROHSU]HE\ZDMHGQRF]H QLHFR QDMZ\ HMILOR]RIyZ Realizacje schematu komunikacji asynchronicznej: 81,;á F]DDQJpipe) 81,;á F]DQD]ZDQHpliki FIFO) UNIX kolejki komunikatu Komunikacja asynchroniczna... Str. 12