Wykład prowadzą: Jerzy Brzeziński Jacek Kobusiński Plan wykładu Proces sekwencyjny Komunikaty, kanały komunikacyjne Stan kanału Operacje komunikacyjne Model formalny procesu sekwencyjnego Zdarzenia Warunek uaktywnienia Modele żądań (2) Proces sekwencyjny Procesem rozproszonym (przetwarzaniem rozproszonym) nazywamy współbieżne i skoordynowane (ang. concurrent and coordinated) wykonanie w środowisku rozproszonym zbioru P procesów sekwencyjnych P 1, P 2, P 3,..., P n współdziałających w realizacji wspólnego celu przetwarzania. Nieformalnie, każdy proces sekwencyjny jest działaniem wynikającym z wykonywania w pewnym środowisku (kontekście) programu sekwencyjnego (algorytmu sekwencyjnego), który składa się z ciągu operacji (instrukcji, wyrażeń) atomowych (nieprzerywalnych). (3) (4)
Klasy operacji Komunikat - definicja Wyróżnia się dwie podstawowe klasy operacji: wewnętrzne (ang. internal) odnoszą się tylko do zmiennych lokalnych programu komunikacyjne (ang. communication) odnoszą się do środowiska i dotyczą komunikatów (ang. messages) oraz kanałów (ang. channels) Komunikat (wiadomość) jest dynamiczną strukturą danych: M = tag, mid, sid, rid, data identyfikator typu wiadomości identyfikator wiadomości identyfikator procesu nadawcy (ang. sender) identyfikator procesu odbiorcy (ang. receiver) dane (5) (6) Kanał - definicja Kanały incydentne, wejściowe i wyjściowe Kanał jest obiektem (zmienną) skojarzonym z uporządkowaną parą procesów, P j, modelującym jednokierunkowe łącze transmisyjne. Typem tego obiektu jest zbiór wiadomości, którego rozmiar nazywany jest pojemnością kanału. Kanał skojarzony z parą procesów, P j, oznaczamy przez C i,j oraz nazywamy kanałem incydentnym z procesem i z procesem P j. Ponadto, kanał C i,j nazywamy kanałem wyjściowym procesu oraz kanałem wejściowym procesu P j. P j C i,j (7) (8)
Zbiory kanałów Zbiory procesów sąsiednich Zbiór kanałów wejściowych i wyjściowych tego procesu odpowiednio przezc i IN ic i OUT. Zbiór wszystkich kanałów incydentnych procesu oznaczymy przezc i. Tak więc: C i =C i IN C i OUT (2.1) C i IN Zbiór sąsiednich procesów wejściowych procesu P IN i = {P j : P j, C IN i } (2.2) Zbiór sąsiednich procesów wyjściowych procesu P OUT i = {P j :, P j C OUT i } (2.3) OUT C i OUT IN (9) (10) Stan kanału Modelowanie opóźnienia w kanale Przez stan L i,j kanału C i,j rozumieć będziemy zbiór, lub uporządkowany zbiór, wiadomości wysłanych przez proces lecz jeszcze nie odebranych przez proces P j. W celu modelowania w kanale opóźnień komunikacyjnych, w zbiorze wiadomości L i,j wyróżnia się dwa rozłączne podzbiory: zbiór wiadomości transmitowanych L i,j T (ang. in-transit) zbiór wiadomości dostępnych L i,j A (ang. available, arrived, ready) Oczywiście, w każdej chwili L i,j = L i,jt L i,j A (2.4) (11) (12)
Stan kanału przykład Predykaty opisujące stan kanału L i,j L i,j A empty(c i,j ) L i,j T in-transit(c i,j ) C i,j P j available(c i,j ) (13) (14) Predykat empty Predykat in-transit empty(c i,j ) L i,j = (2.5) in-transit(c i,j ) L i,j T (2.6) C i,j P j C i,j P j (15) (16)
Predykat available Indywidualne operacje komunikacyjne (1) available(c i,j ) L i,j A (2.7) send(, P j, M) C i,j P j Efektem wykonania tej operacji jest umieszczenie wiadomości M w kanale C i,j, a więc wykonanie podstawienia L i,j := L i,j {M} (2.8) (17) (18) Indywidualne operacje komunikacyjne (2) Grupowe operacje komunikacyjne (1) receive(, P j, inm) Jeżeli kanał C i,j nie jest pusty i pewna wiadomość M jest bezpośrednio dostępna (available(c i,j ) ma wartość True), to efektem wykonania tej operacji jest pobranie wiadomości M z kanału C i,j, a więc wykonanie podstawienia: L i,j := L i,j \ {M} oraz inm := M (2.9) send(,r, M) Efektem wykonania tej operacji jest umieszczenie wiadomości we wszystkich kanałach C i,j, takich że P j R, a więc podstawienie dla wszystkich tych kanałów: L i,j := L i,j {M} (2.10) (19) (20)
Grupowe operacje komunikacyjne (2) Rodzaje komunikacji receive(p js, P j, sinm) Efektem wykonania operacji receive(p js, P j, sinm) jest atomowe pobranie wiadomości M i od procesów P js i umieszczanie ich w sinm. Tym samym, dla każdego procesu P js, wykonywane jest kolejno podstawienie L i,j := L i,j \ {M i } oraz sinm := sinm {M i } (2.11) Kanały o niezerowej pojemności umożliwiają realizację operacji następujących typów komunikacji: nieblokowanej blokowanej (21) (22) Komunikacja synchroniczna Komunikacja asynchroniczna W komunikacji synchronicznej, nadawca i odbiorca są blokowani aż odpowiedni odbiorca odczyta przesłaną do niego wiadomość (ang. rendez-vous). W przypadku komunikacji asynchronicznej, nadawca lub odbiorca komunikuje się w sposób nieblokowany. send( ) receive( ) send( ) receive( ) P j P j (23) (24)
Model formalny procesu sekwencyjnego Stan procesu (1) Formalnie, proces sekwencyjny może być opisany (modelowany) przez uporządkowaną czwórkę: = S i, S i0, E i, F (2.12) gdzie S i jest zbiorem stanów S i procesu S i0 jest zbiorem stanów początkowych,s i0 S i E i jest zbiorem zdarzeń procesu F jest funkcją tranzycji, takąże:f i S i E i S i, a S, E, S F i, (2.13) jeżeli zajście zdarzenia E w stanie S jest możliwe i prowadzi do zmiany stanu na S (25) Stan S i (t) procesu w chwili t czasu lokalnego jest w ogólności zbiorem wartości wszystkich zmiennych lokalnych skojarzonych z procesem w chwili t oraz ciągów wiadomości wysłanych (wpisanych) do incydentnych kanałów wyjściowych i ciągów wiadomości odebranych z incydentnych kanałów wejściowych do chwili t. (26) Stan procesu (2) Definicja zdarzenia Dla każdego t, S i (t) S i. W celu uproszczenia notacji, zależność stanu od czasu można przyjąć za domyślną i jeśli nie prowadzi to do niejednoznaczności, oznaczać stan w pewnej chwili t przez S i. ZbiórS i0 jest zbiorem stanów początkowych, których wartości są zadawane wstępnie, bądź są wynikiem zajścia wyróżnionego zdarzenia inicjującego E i0. Zdarzenie E ik odpowiada unikalnemu wykonaniu operacji atomowej, zmieniającemu stan S i procesu i ewentualnie stan incydentnych z procesem kanałów C i,j lub C j,i. Jeżeli operacja odpowiadająca zdarzeniu została wykonana, to powiemy,że zdarzenie zaszło. (27) (28)
Klasy zdarzeń Zdarzenie e_send e_send e_receive e_internal e_send (, P j, M) zachodzi w procesie, w wyniku wykonania przez ten proces operacji send(, P j, M) e_send (,R, M) zachodzi w procesie, w wyniku wykonania przez ten proces operacji send(, R, M) (29) (30) Zdarzenie e_receive Zdarzenie e_internal e_receive (, P j, M) zachodzi w procesie P j, gdy P j wykonał operację receive(, P j, inm), a odczytana do zmiennej lokalnej inm wiadomość M pochodziła od procesu e_receive (P js, P j, M js ) zachodzi w procesie P j, gdy P j wykonał operację receive(p js, P j, sinm), a odczytane do zmiennej lokalnej sinm wiadomości M i M S j pochodzą od procesów P S j e_internal ( ) zachodzi gdy proces wykonał operację, która nie zmienia stanu jego kanałów incydentnych. Do zdarzeń lokalnych zalicza się między innymi zdarzenia: e_init(, S ik ) które nadaje procesowi P j stan S i k (w szczególności stan początkowy) e_stop( ) które kończy wykonywanie procesu (31) (32)
Dostępność wiadomości Funkcja tranzycji Dostępność wiadomości utożsamiać można z zajściem zdarzeń w środowisku komunikacyjnym: zdarzenie dostarczenia wiadomości M e_deliver(, P j, M) zdarzenia nadejścia wiadomości M e_arrive(, P j, M) Przez P ja oznaczać będziemy zbiór procesów, których wiadomości dotarły i są dostępne dla P j. Funkcja tranzycjif i S i E i S i opisuje reguły zmiany stanu S na S w wyniku zajścia zdarzenia E. Elementy S, E, S 2 F i nazwiemy tranzycjami lub krokami. W zależności od zachodzącego zdarzenia E, tranzycję nazwiemy odpowiednio tranzycją wejścia, wyjścia lub lokalną. (33) (34) Zdarzenia dopuszczalne Zdarzenia gotowe Funkcja tranzycji dopuszcza możliwość zajścia zdarzenia E tylko w tych stanach S, dla których S, E, S 2 F i. Dlatego też, w wypadku gdy S, E, S 2 F i, powiemyże zdarzenie jest dopuszczalne (ang. allowed) w stanie S. Wprowadzimy też predykat allowed(e) oznaczający, że w danej chwili zdarzenie E jest dopuszczalne. Oprócz czynnika wewnętrznego (stanu procesu), zajście zdarzenia może być dodatkowo uwarunkowane stanem kanałów wejściowych (środowiska). Jeśli zdarzenie może zajść ze względu na warunki zewnętrzne (stan kanałów), to powiemy że zdarzenie jest przygotowane lub gotowe (ang. ready). Fakt gotowości zdarzenia E w danej chwili wyrażać będzie predykat ready(e). (35) (36)
Predykat enable Procesy zakończone, wstrzymane Powiemy, że proces jest w stanie końcowym S ie, jeżeli zbiór zdarzeń dopuszczalnych w tym stanie jest pusty. Predykat enable(e), oznacza, że zdarzenie jest aktywne, czyli jednocześnie gotowe i dopuszczalne. Stąd też: enable(e) ready(e) allowed(e) (2.14) Jeżeli natomiast niepusty zbiór zdarzeń dopuszczalnych zawiera wyłącznie zdarzenia odbioru i żadne z tych zdarzeń nie jest aktywne (gotowe), to powiemy że proces jest wstrzymany (zablokowany). (37) (38) Procesy aktywne, pasywne Proces aktywny Proces wstrzymany lub zakończony nazwiemy pasywnym. Przez proces aktywny będziemy natomiast rozumieć proces, który nie jest pasywny. Przyjmujemy, że w każdej chwili t stan procesu reprezentuje zmienna logiczna passive i, przyjmująca wartość Aktywny proces (passive i =False) może wysyłać i odbierać wiadomości, wykonywać tranzycje lokalne, a więc potencjalnie może również spontanicznie (w dowolnej chwili) zmienić swój stan na pasywny. True, gdy proces jest pasywny False, gdy proces jest aktywny (39) (40)
Proces pasywny Warunek uaktywnienia W stanie pasywnym procesu (passive i =True) dopuszczalne są natomiast co najwyżej zdarzenia odbioru. Zmiana stanu procesu z pasywnego na aktywny uwarunkowana jest osiągnięciem gotowości przez choćby jedno z dopuszczalnych zdarzeń odbioru, czyli spełnieniem tak zwanego warunku uaktywnienia. Warunek uaktywnienia (ang. activation condition) procesu związany jest ze zbiorem warunkującymd i, zbiorema, oraz predykatem activate i (X). (41) (42) Zbiór warunkujący Predykat activate Predykat activate i (X) zdefiniowany jest w sposób następujący: Zbiór warunkujący (ang. dependent set), jest sumą mnogościową zbiorów S wszystkich zdarzeń odbioru dopuszczalnych w danej chwili. 1. jeżelix =D i, to activate i (X) = True 2. jeżelix =, to activate i (X) = False 3. jeżelix D i ix, to: activate i (X) X :: X X X (A =X ( passive i passive i )) (2.15) gdzie passive i passive i oznacza, że pasywny proces zmieni swój stan na aktywny w skończonym, choć nieprzewidywalnym czasie. (43) (44)
Predykat ready Modele żądań Warunek uaktywnienia procesu formalnie wyraża predykat ready i (X): ready i (X) (A X) activate i (X) (2.17) Gdy proces jest uaktywniany, to wiadomości, których dostarczanie doprowadziło do spełnienia warunku uaktywnienia, są atomowo pobierane z buforów wejściowych i dalej przetwarzane. model jednostkowy model AND model OR podstawowy model k spośród r model OR-AND dysjunkcyjny model k spośród r model predykatowy (45) (46) Model jednostkowy Model AND W modelu jednostkowym warunkiem uaktywnienia pasywnego procesu jest przybycie wiadomości od jednego, ściśle określonego nadawcy. W tym przypadku D i = 1, dla każdego naturalnego i, 1 i n. Model ten odpowiada szerokiej klasie systemów, w których procesy żądają kolejno po jednym tylko zasobie. D i W modelu AND proces pasywny staje się aktywnym, jeżeli dotarły wiadomości od wszystkich procesów tworzących zbiór warunkujący. Model ten nazywany jest również modelem zasobowym. D i (47) (48)
Model OR Podstawowy model k spośród r W modelu OR do uaktywnienia procesu wystarczy jedna wiadomość od któregokolwiek z procesów ze zbioru warunkującego. Model ten nazywany jest również modelem komunikacyjnym. D i W podstawowym modelu k spośród r, z pasywnym procesem skojarzony jest zbiór warunkujący D i, liczba naturalna k i, 1 k i D i, oraz liczba r i = D i. W modelu tym proces staje się aktywny tylko wówczas, gdy uzyska wiadomości od co najmniej k i różnych procesów ze zbioru warunkującegod i. (49) (50) Podstawowy model k spośród r przykład Model OR-AND D i W modelu OR-AND zbiór warunkujący D i pasywnego procesu jest zdefiniowany jakod i1 D i2... D qi i, gdzie dla każdego naturalnego u, 1 u q i,d iu P. r i =5 k i =2 Proces staje się aktywny po otrzymaniu wiadomości od każdego z procesów tworzących zbiórd i1 lub od każdego z procesów tworzących zbiór D i2 lub... lub od każdego z procesów tworzących zbiórd i qi. (51) (52)
Model OR-AND przykład Dysjunkcyjny model k spośród r D i 1 D i 2 W modelu dysjunkcyjnym k spośród r z każdym pasywnym procesem skojarzony jest zbiór warunkujący D i =D i1 D i2... D qi i, liczby naturalne k i1, k i2,..., k i qi, oraz liczby naturalne r i1, r i2,..., r i qi, gdzie dla każdego naturalnego u, 1 u q i,d iu P, 1 k iu r iu = D iu. D i 3 Proces staje się aktywny po otrzymaniu wiadomości od k 1 i różnych procesów ze zbioru D i1, lub k i2 wiadomości od różnych procesów ze zbiorud i2, lub... lub k iu wiadomości od różnych procesów ze zbiorud i qi. (53) (54) Dysjunkcyjny model k spośród r Model predykatowy Model dysjunkcyjny k spośród r redukuje się do: modelu OR-AND, gdy k iu = D iu dla każdego u modelu podstawowego k spośród r, gdy q i =1 modelu AND, gdy q i =1 i k i1 = D i1 modelu OR, gdy q i =1 i k i1 =1 W modelu predykatowym, dla każdego pasywnego procesu ze zbiorem warunkującym D i określony jest predykat activate i (X), gdziex P. Jak łatwo zauważyć, stosownie definiując predykat activate i (X) można oczywiście uzyskać wszystkie wcześniej omówione modeleżądań. (55) (56)