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

Podobne dokumenty
Programownie współbieżne i rozproszone Jędrzej Ułasiewicz 1. Komunikacja. Model procesów komunikujących się poprzez pamięć dzieloną

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

Klient-Serwer Komunikacja przy pomocy gniazd

IPC: Kolejki komunikatów

Opis protokołu RPC. Grzegorz Maj nr indeksu:

Przesyłania danych przez protokół TCP/IP

Akademia Techniczno-Humanistyczna w Bielsku-Białej

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

Protokoły sieciowe - TCP/IP

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

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

Wprowadzenie. Dariusz Wawrzyniak 1

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Windows.

TCP/IP formaty ramek, datagramów, pakietów...

Sieci komputerowe Warstwa transportowa

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

Algorytmy Równoległe i Rozproszone Część VI - Systemy rozproszone, podstawowe pojęcia

Jadro monolityczne vs. mikrojadro. Mikrojadro. Olga Kowalczuk. 9 grudnia 2008

Systemy operacyjne III

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej

SEGMENT TCP CZ. II. Suma kontrolna (ang. Checksum) liczona dla danych jak i nagłówka, weryfikowana po stronie odbiorczej

Referencyjny model OSI. 3 listopada 2014 Mirosław Juszczak 37

Podstawy Transmisji Danych. Wykład IV. Protokół IPV4. Sieci WAN to połączenia pomiędzy sieciami LAN

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ

Architektura komputerów. Układy wejścia-wyjścia komputera

Protokoły sieciowe model ISO-OSI Opracował: Andrzej Nowak

Middleware wprowadzenie października 2010

Aplikacja Sieciowa wątki po stronie klienta

Middleware wprowadzenie października Dariusz Wawrzyniak (IIPP) 1

Zdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1

Przetwarzanie rozproszone

Oprogramowanie modułu przycisk UNIV

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

4. Procesy pojęcia podstawowe

Zdalne wywoływanie procedur RPC

Zdalne wywoływanie procedur RPC

Proces y i y w i ąt ą ki

Multiprocessor Shared-Memory Information Exchange. Damian Klata, Adam Bułak

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

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

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

Problemy niezawodnego przetwarzania w systemach zorientowanych na usługi

Systemy operacyjne System sieciowy UNIX-a

Wprowadzenie do programowania współbieżnego

Zdalne wywoływanie procedur RPC 27. października Dariusz Wawrzyniak (IIPP) 1

Oprogramowanie przekaźnika monostabilnego UNIV

Stan globalny. Krzysztof Banaś Systemy rozproszone 1

Zdalne wywoływanie procedur RPC 27. października 2010

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

Architektura komputerów

Kolejkowanie wiadomości Standard MQ (JMS)

2.1 Pojęcie wątku Modele wielowątkowości Wybrane zagadnienia wielowątkowości Wątki POSIX... 18

Jedrzej Ułasiewicz Komputerowe systemy sterowania 1

4. Procesy pojęcia podstawowe

Zadania jednorodne 5.A.Modele przetwarzania równoległego. Rafał Walkowiak Przetwarzanie równoległe Politechnika Poznańska 2010/2011

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

Wywoływanie procedur zdalnych

OPROGRAMOWANIE STEROWNIKA ROLET UNIV

Architektura komputerów

Model OSI. mgr inż. Krzysztof Szałajko

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

Działanie systemu operacyjnego

ξ II.UWr Wprowadzenie do STM

4. Procesy pojęcia podstawowe

Program jest więc strukturą statyczną zapisaną na jakimś nośniku. Natomiast proces jest wykonującym się programem.

Projektowanie algorytmów równoległych. Zbigniew Koza Wrocław 2012

76.Struktura oprogramowania rozproszonego.

asix4 Podręcznik użytkownika CAN_AC_PCI - drajwer protokołu CANBUS dla karty CAN_ACx_PCI Podręcznik użytkownika

MODEL WARSTWOWY PROTOKOŁY TCP/IP

MODEL OSI A INTERNET

Algorytmy równoległe: prezentacja i ocena efektywności prostych algorytmów dla systemów równoległych

9. Problem wzajemnego wykluczania i sekcji krytycznej

Aby lepiej zrozumieć działanie adresów przedstawmy uproszczony schemat pakietów IP podróżujących w sieci.

Laboratorium Sieci Komputerowych - 2

Wywoływanie procedur zdalnych

Pomoc dla użytkowników systemu asix 6. Strategia buforowa

Sieciowe Systemy Operacyjne

Czas w systemach rozproszonych. Krzysztof Banaś Systemy rozproszone 1

Spis treści. 1 Wprowadzenie. 1.1 Podstawowe pojęcia. 1 Wprowadzenie Podstawowe pojęcia Sieci komunikacyjne... 3

Architektura komputerów

Sieci komputerowe - warstwa transportowa

Programowanie współbieżne i równoległe. dr inż. Marcin Wilczewski 2013

Temat zajęć: Tworzenie i obsługa wątków.

Skąd dostać adres? Metody uzyskiwania adresów IP. Statycznie RARP. Część sieciowa. Część hosta

asix5 Podręcznik użytkownika Strategia buforowa

asix4 Podręcznik użytkownika DMS500 - drajwer protokołu analizatorów DURAG DMS 500 Podręcznik użytkownika

Urządzenia zewnętrzne

OPROGRAMOWANIE PRZEKAŹNIKA BISTABILNEGO UNIV

Procedura Walidacyjna Interfejs

Sieci komputerowe. -Sterownie przepływem w WŁD i w WT -WŁD: Sterowanie punkt-punkt p2p -WT: Sterowanie end-end e2e

OPROGRAMOWANIE PRZEKAŹNIKA MONOSTABILNEGO UNIV

Test sprawdzający wiadomości z przedmiotu Systemy operacyjne i sieci komputerowe.

Analiza ilościowa w przetwarzaniu równoległym

Wykład 2 Podstawowe pojęcia systemów równoległych, modele równoległości, wydajność obliczeniowa, prawo Amdahla/Gustafsona

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Numeryczna algebra liniowa

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

Wstęp do informatyki. Architektura co to jest? Architektura Model komputera. Od układów logicznych do CPU. Automat skończony. Maszyny Turinga (1936)

Transkrypt:

Jędrzej Ułasiewicz str. 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. wykonuje się sekwencyjnie i używa swej pamięci lokalnej L lecz może tworzyć działające współbieżnie wątki. 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.) y 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 PN L L1 L2 LN Pamięć lokalna v Pamięć wspódzielona W PN v W1 W2 Rys. 5-1Model procesów komunikujących się przez pamięć współdzieloną

Jędrzej Ułasiewicz str. 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. y mogą być wykonywane równolegle na jednej lub wielu węzłach wykonuje się sekwencyjnie i używa swej pamięci lokalnej. komunikuje się z otoczeniem za pomocą komunikatów. Są dwie podstawowe operacje komunikacyjne: wysłanie komunikatu i odbiór komunikatu. y mogą być przydzielone do procesorów w różny sposób. Poprawność działania aplikacji nie powinna zależeć od tego podziału. P5 P3 P4 P6 komputer 1 komputer 2 komputer 3 Rys. 5-1 Aplikacja rozproszona jako zbiór komunikujących się procesów

Jędrzej Ułasiewicz str. 3 5.3 y 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. O grupa N O O N O O jeden do jednego jeden do wielu Rys. 5-2 Komunikacja jeden do jednego i jeden do wielu

Jędrzej Ułasiewicz str. 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 Gdzie: id_odb id_nad *bufor ile komunikatu: (id_nad, void *bufor, int ile) identyfikator odbiorcy Identyfikator nadawcy Adres bufora Liczba bajtów do przesłania send(,&bufor, ile) nadający (,&bufor, ile) odbierający Rys. 5-3 Przesyłanie komunikatów pomiędzy procesami i

Jędrzej Ułasiewicz str. 5 5.4 Komunikacja synchroniczna i asynchroniczna 5.4.1 Synchronizacja Komunikacja synchroniczna wysyłający jest blokowany do czasu otrzymania potwierdzenia że proces docelowy otrzymał wysyłany komunikat Gdy w momencie wykonania funkcji 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. send Blokada Blokada send Potwierdzenie odbioru Przypadek 1 Potwierdzenie odbioru Przypadek 2 Rys. 5-4 Komunikacja synchroniczna pomiędzy procesami i

Jędrzej Ułasiewicz str. 6 Komunikacja asynchroniczna wysyłający komunikat nie jest blokowany. 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 send Blokada send Przypadek 1 Przypadek 2 - wersja blokujaca Rys. 5-5 Komunikacja asynchroniczna pomiędzy procesami i 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

Jędrzej Ułasiewicz str. 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 Konieczna obsługa powrotu wyjątków Buforowanie po Nie Tak stronie wysyłającej Szybkość przetwarzania Mniejsza Większa Porównanie komunikacji synchronicznej i asynchronicznej

Jędrzej Ułasiewicz str. 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 Polaczenie Czekanie Rozlączenie y send Komunikacja polączeniowa Komunikacja bezpolączeniowa Rys. 5-6 Komunikacja połączeniowa i bezpołączeniowa

Jędrzej Ułasiewicz str. 9 5.6 Przeterminowania Konieczność synchronizowania procesów wymusza konieczność ich blokowania. y 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: (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. Blokada odblokowanie przez komunikat komunikat odblokowanie przez timeout timeout Rys. 5-7 Odblokowanie procesu przez komunikat, procesu przez timeout

Jędrzej Ułasiewicz str. 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

Jędrzej Ułasiewicz str. 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: y komunikują się przez wspólną pamięć