• Nie Znaleziono Wyników

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

N/A
N/A
Protected

Academic year: 2021

Share "5. Model komunikujących się procesów, komunikaty Obecnie stosuje si"

Copied!
11
0
0

Pełen tekst

(1)

5. Model komunikujących się procesów, komunikaty Obecnie stosuje się następujące modele przetwarzania:

• Model procesów i komunikatów

• Model procesów komunikujących się poprzez pamięć dzieloną

5.1 Model procesów komunikujących się poprzez pamięć współdzieloną

Model procesów komunikujących się poprzez pamięć współdziloną skonstruowany jest w oparciu o następujące reguły:

• Aplikacja składa się ze zbioru procesów lub (i) wątków

wykonywanych współbieżnie. Gdy sprzęt na to pozwala procesy i wątki mogą być wykonywane równolegle.

• Proces wykonuje się sekwencyjnie i używa swej pamięci lokalnej L lecz może tworzyć działające współbieżnie wątki.

• Proces komunikuje się z innymi procesami za pomocą obszarów W pamięci współdzielonej. Gdy sprzęt na to pozwala komunikacja może zachodzić pomiędzy komputerami.

• Dostęp do pamięci współdzielonej jest synchronizowany za pomocą różnych narzędzi (muteksy, semafory, itd.)

• Procesy mogą być przydzielone do procesorów w różny sposób.

Poprawność działania aplikacji nie powinna zależeć od tego podziału.

odczyt/zapis

L Pamięć lokalna

Proces P1

Proces P2

Proces PN

P1 P2 PN

L1 v

L2 LN

W1 W2

v W

Pamięć wspódzielona

Rys. 5-1Model procesów komunikujących się przez pamięć współdzieloną

(2)

Własności modelu:

• Komunikacja ogranicza się typowo do jednej maszyny

• Konieczność ochrony sekcji krytycznej przy dostępie do obszarów pamięci dzielonej

• Duża szybkość działania

5.2 Model procesów i komunikatów

Model procesów i komunikatów skonstruowany jest w oparciu o następujące reguły:

• Aplikacja składa się ze zbioru procesów sekwencyjnych. Procesy mogą być wykonywane równolegle na jednej lub wielu węzłach

• Proces wykonuje się sekwencyjnie i używa swej pamięci lokalnej.

• Proces komunikuje się z otoczeniem za pomocą komunikatów. Są dwie podstawowe operacje komunikacyjne: wysłanie komunikatu i odbiór komunikatu.

• Procesy mogą być przydzielone do procesorów w różny sposób.

Poprawność działania aplikacji nie powinna zależeć od tego podziału.

Proces P1

Proces P4 Proces

P3

Proces P2

Proces P5

Proces P6 Komunikat

Proces

komputer 1 komputer 2 komputer 3

Rys. 5-1 Aplikacja rozproszona jako zbiór komunikujących się procesów

PDF created with pdfFactory trial version www.pdffactory.com

(3)

5.3 Komunikaty

Możliwość przekazywania komunikatów pomiędzy procesami jest fundamentalną własnością większości systemów operacyjnych.

Jeśli pomiędzy dwoma maszynami istnieje jakikolwiek sposób

komunikacji (sieć lokalna, sieć rozległa, bezpośrednie łącze, wspólna pamięć, itd.) na pewno daje się przesłać komunikat pomiędzy procesami wykonywanymi na tych maszynach.

Przesłanie komunikatu pomiędzy procesami jest przesłaniem pomiędzy nimi pewnej liczby bajtów według ustalonego protokołu. Przesłanie komunikatu jest operacją atomową.

Typy komunikacji ze względu na liczbę odbiorców:

• Klient – serwer (jeden do jednego)

• Komunikacja grupowa

W komunikacji klient / serwer komunikaty wymieniane były pomiędzy dwoma procesami. Typ komunikacji jeden do jednego.

Grupa – zbiór procesów działających wspólnie w sposób określony poprzez system lub użytkownika.

Komunikacja grupowa – jeden proces wysyła komunikat odbierany przez wiele procesów należących do grupy.

grupa

N O

N O

O

O

O

jeden do jednego jeden do wielu

Rys. 5-2 Komunikacja jeden do jednego i jeden do wielu

(4)

Problemy jakie należy rozwiązać projektując komunikację:

• problem synchronizacji nadawcy i odbiorcy (kto i kiedy czeka),

• problem adresowania (jaki system adresacji),

• problem identyfikacji (czy procesy znają swoje identyfikatory),

• problem przepływu danych (w jedną czy dwie strony),

• problem zapewnienia niezawodnego przesłania przez zawodny kanał komunikacyjny.

Do zapewnienia komunikacji potrzebne są przynajmniej dwie funkcje interfejsowe – wysyłająca i odbierająca komunikat.

Wysłanie komunikatu: send(id_odb, void *bufor, int ile) Odbiór komunikatu: receive(id_nad, void *bufor, int ile) Gdzie:

id_odb identyfikator odbiorcy id_nad Identyfikator nadawcy

*bufor Adres bufora

ile Liczba bajtów do przesłania

P1 P2

Proces nadający

Komunikat

send(P2,&bufor, ile) receive(P1,&bufor, ile)

Proces odbierający

Rys. 5-3 Przesyłanie komunikatów pomiędzy procesami P1 i P2

PDF created with pdfFactory trial version www.pdffactory.com

(5)

5.4 Komunikacja synchroniczna i asynchroniczna

5.4.1 Synchronizacja

Komunikacja synchroniczna

• Proces wysyłający jest blokowany do czasu otrzymania potwierdzenia że proces docelowy otrzymał wysyłany komunikat

• Gdy w momencie wykonania funkcji receive brak jest oczekującego komunikatu, proces odbierający jest wstrzymywany do czasu

nadejścia jakiegoś komunikatu. Gdy jakiś komunikat oczekuje, proces odbierający nie jest blokowany.

P1 P2

Komunikat send

receive

Potwierdzenie odbioru

P1 P2

Komunikat

send

receive

Potwierdzenie odbioru Przypadek 1

Przypadek 2

Blokada Blokada

Rys. 5-4 Komunikacja synchroniczna pomiędzy procesami P1 i P2

(6)

Komunikacja asynchroniczna

• Proces wysyłający komunikat nie jest blokowany.

• Proces odbierający jest wstrzymywany do czasu nadejścia

komunikatu (wersja blokująca) lub też nie jest wstrzymywany (wersja nie blokująca). Informacja czy odebrano komunikat czy też nie, przekazywana jest jako kod powrotu funkcji odbierającej.

• Wymagane jest buforowanie

P1 P2

Komunikat send

receive

P1 P2

Komunikat send

receive

Blokada

Przypadek 1 Przypadek 2 - wersja

blokujaca

Rys. 5-5 Komunikacja asynchroniczna pomiędzy procesami P1 i P2

Rodzaj komunikacji

Blokada przy wysyłaniu

Blokada przy odbiorze

Synchroniczna Tak Tak

Asynchroniczna Nie Tak - wersja blokująca Nie - wersja nie blokująca Tab. 1 Definicja komunikacja synchronicznej i asynchronicznej

PDF created with pdfFactory trial version www.pdffactory.com

(7)

5.4.2 Buforowanie

Przy transmisji asynchronicznej konieczne jest buforowanie po stronie wysyłającej. Powstaje pytanie:

• Jaka powinna być pojemność tego bufora ?

• Co zrobić gdy bufor się przepełni ?

Postępowanie w przypadku przepełnienia bufora:

• Zablokować proces wysyłający.

• Funkcja wysyłająca komunikat kończy się błędem.

Synchroniczna Asynchroniczna Obsługa błędów Testowanie kodu

powrotu

Konieczna obsługa wyjątków

Buforowanie po stronie wysyłającej

Nie Tak

Szybkość przetwarzania

Mniejsza Większa

Porównanie komunikacji synchronicznej i asynchronicznej

(8)

5.5 Komunikacja połączeniowa i bezpołączeniowa Komunikacja połączeniowa:

1. Dwa procesy ustanawiają połączenie w którym występuje informacja adresowa

2. Wymieniają dane używając tylko identyfikatora połączenia 3. Rozłączają się

Często połączenie jest kontrolowane w sensie:

Możliwości przesyłania danych

Poprawności danych

Komunikacja bezpołączeniowa

W każdym przesłaniu występuje pełna informacja adresowa

P1 P2

Komunikaty Polaczenie

Czekanie

P1 P2

Komunikat send

receive

Komunikacja polączeniowa Rozlączenie

Komunikacja bezpolączeniowa

Rys. 5-6 Komunikacja połączeniowa i bezpołączeniowa

PDF created with pdfFactory trial version www.pdffactory.com

(9)

5.6 Przeterminowania

Konieczność synchronizowania procesów wymusza konieczność ich blokowania. Procesy są blokowane w oczekiwaniu na pewne zdarzenie.

Z różnych powodów (błędy, uszkodzenia) zdarzenie to może nigdy nie nadejść. Spowoduje to trwałą blokadę procesu. Aby temu zaradzić stosuje się przeterminowanie (ang. Timeout) oczekiwania.

Wysłanie komunikatu:

send(id_odb, void *bufor, int ile, timespec timeout) Odbiór komunikatu:

receive(id_nad,void *bufor,int ile, timespec timeout) Gdy proces nie zostanie samoistnie odblokowany po czasie timeout zrobi to system operacyjny. Funkcja zwróci kod błędu.

P1 P2

receive

timeout receive

Blokada

komunikat

odblokowanie przez komunikat

odblokowanie przez timeout

Rys. 5-7 Odblokowanie procesu P1 przez komunikat, procesu P2 przez timeout

(10)

5.7 Reprezentacja danych

Wysyłający dane używa specyficznych typów danych jak:

znaki, liczby int, liczby real, stałe boolean, struktury, tablice, teksty róznych formatów, obiekty. Na poziomie sieci transmitowane są bajty które muszą być przesyłane jeden po drugim

Przykład:

Maszyna M1 - 32 bitowa, system "big endian"

Maszyna M2 - 16 bitowa, system "little endian"

Wniosek: transformacja danych jest konieczna gdy systemy są heterogeniczne.

Transformacja postaci danych przy IPC nazywa się przetaczaniem danych (ang. data marshalling)

Kroki przetaczania danych Przy nadawaniu

Serializacja danych

Konwersja do zewnętrznej reprezentacji Przy odbiorze

Konwersja z zewnętrznej do wewnętrznej reprezentacji

Deserializacja danych

PDF created with pdfFactory trial version www.pdffactory.com

(11)

5.8 Własności modelu procesów i komunikatów Wydajność

Model procesu sekwencyjnego posiada wydajne narzędzia

implementacyjne (kompilatory itd.). Gdy procesy wykonywane są na różnych procesorach, sprzęt jest dobrze wykorzystany.

Niezależność od fizycznej struktury maszyny.

Model procesów i komunikatów jest niezależny od tego czy procesy wykonywane są w systemie jedno, wieloprocesorowym czy

rozproszonym.

Skalowalność

Model jest niezależny od liczby dostępnych procesorów.

Modularność

Problem może być podzielony na tworzone niezależnie moduły (procesy), komunikujące się poprzez dobrze zdefiniowane interfejsy (komunikaty, kanały).

Determinizm

Program jest deterministyczny gdy takie same sekwencje na wejściu, powodują takie same sekwencje na wyjściu. W modelu procesów i komunikatów łatwo osiągnąć determinizm.

Inne modele przetwarzania:

Procesy komunikują się przez wspólną pamięć

Cytaty

Powiązane dokumenty

Jednym z naukowych programów Mariana Szarmacha, profesora zwyczajnego Uniwersytetu Mikołaja Kopernika w Toruniu, jest udost!pnienie polskiemu czytelni- kowi

Oświatowy; Szkoła Specjalna; Wszystko dla Szkoły; Wychowanie Fizyczne i Zdrowotne; Wychowanie Komunikacyjne; Wychowanie na co Dzień; Wychowawca: Miesięcznik Nauczycieli

Krakowski bioetyk i na to pytanie znajduje odpowiedź: „O przyzwoity stan przyrody nie dba się już nie tylko dlatego, że się nie ma zrozumienia dla jej wielora- kich

Linia intersekcji, wykreœlona na podstawie orientacji uskoku w jaskini, przebiega przez stromy ¿leb w œcianie, w której znajduj¹ siê otwory systemu jaskiniowego Wysokiej, i dalej

W Gdañsku-Jelitkowie odbêdzie siê IV Ogólnopolskie Sympozjum z cyklu Wspó³czesne Proble- my Geologii In¿ynierskiej w Polsce, organizowane przez Pañstwowy Instytut Geologiczny

Wreszcie autor rozważa zagadnienia staw ania się i utraty, w zrostu i zm niejszania się łaski, jak również stosunku natury do nadnatury.. Problem łaski aktualnej

1) Jacek Ryszard Przygodzki, bratanek ppłk. Rzewuska obecnie emerytowana lekarka - córka ppłk. Kasprzycka, siostra matki ppłk. E.R., właścicielka składu mate- riałów budowlanych

Dobrochna Jankowska,Jacek Wierzbicki..