Zdalne Wywoływanie
Zdalne Wywoływanie
Procedur RPC
Procedur RPC
(Remote Procedure Calling)
(Remote Procedure Calling)
aplikacje klient-serwer
aplikacje klient-serwer
Lab 6
Lab 6
Wprowadzenie
Wprowadzenie
Zdalne wywoływanie procedur
Zdalne wywoływanie procedur
wprowadzenie (1)
wprowadzenie (1)
Pierwszą decyzją, gdy tworzymy program
użytkowy, jest wybór, czy:
1. zbudować jeden duży program, który
będzie robił wszystko ,
2. rozdzielić program między liczne,
komunikujące się ze sobą procesy.
RPC jako zbiór oprogramowania
RPC jako zbiór oprogramowania
pozwalającego na zdalne wykonywanie
pozwalającego na zdalne wykonywanie
procedur na serwerach sieciowych
procedur na serwerach sieciowych
RPC (ang. Remote Procedure Calling) jest zbiorem
oprogramowania pozwalającego na zdalne wykonywanie
procedur (np.: procedur obliczeniowych) na serwerach
sieciowych, stacjach roboczych, superkomputerach
dostępnych w sieci itp. Jest on podstawą dla większości
dystrybuowanych obecnie sieciowych systemów
użytkowych jak np. NFS, NIS. Jednocześnie traktować go
można jako efektywne narzędzie programowania, czyniące
model klient-serwer bardziej efektywnym i łatwiejszym do
oprogramowania niż wcześniejsze, niskopoziomowe
interfejsy sieciowe.
Zdalne wywoływanie procedur
Zdalne wywoływanie procedur
wprowadzenie (2)
wprowadzenie (2)
Zdalne wywoływanie procedur
Zdalne wywoływanie procedur
wprowadzenie (3)
wprowadzenie (3)
Jeżeli wybierzemy drugą opcję, staje przed nami
kolejny problem:
1. wszystkie procesy będą uruchamiane na tej samej
stacji (wówczas zezwalamy na stosowanie metod
komunikacji międzyprocesowej do wymiany
informacji między procesami) albo
2. niektóre z procesów będą uruchamiane na innych
stacjach (wówczas jest potrzebna technika
komunikacji sieciowej między procesami).
Zdalne wywoływanie procedur
Zdalne wywoływanie procedur
wprowadzenie (4)
wprowadzenie (4)
O zdalnym wywoływaniu procedur (RPC) (remote procedure call)
zdalnym wywoływaniu procedur
mówimy, gdy wywoływana procedura oraz procedura
wywołująca ją są umieszczone w różnych procesach.
Zazwyczaj procedurę wywołującą nazywamy klientem a procedurę
wywoływaną serwerem.
Zdalne wywoływanie procedur
Zdalne wywoływanie procedur
wprowadzenie (5)
wprowadzenie (5)
Technika kanałów komunikacji doors: daje możliwości
wywołania przez dany proces procedury (funkcji) innego
procesu, który pracuje na tej samej stacji.
Jeden proces (serwer) tworzy kanał door dla dowolnej swojej
procedury i w ten sposób udostępnia ją innym procesom
(klientom). Możemy traktować kanał door jako specjalny typ
metody komunikacji międzyproccsowej
Zdalne wywoływanie procedur
Zdalne wywoływanie procedur
wprowadzenie (6)
wprowadzenie (6)
Zdalne wywoływanie procedur umożliwia klientowi, który
pracuje na jednej stacji, wywoływanie procedur serwera
dostępnych na innej stacji przy założeniu, że obie stacje są
połączone jakiegoś rodzaju siecią komputerową
Własności zdalnych wywołań procedur
Własności zdalnych wywołań procedur
definicja procedury
definicja procedury
Definicja zdalnej procedury określa parametry wejściowe i
wyjściowe.
1. Parametry wejściowe są przekazywane serwerowi jako
wartości argumentów w komunikacie zamawiającym i
kopiowane do zmiennych, które są przekazywane jako
parametry do procedury w środowisku wykonawczym
serwera.
2. Parametry wyjściowe są zwracane klientowi w komunikacie z
odpowiedzią, gdzie używa się ich do zastąpienia wartości
odpowiednich zmiennych w środowisku wywołania. Jeśli
parametr jest używany jako wejściowy i wyjściowy, to jego
wartość musi być przesyłana zarówno w zamówieniu, jak i w
odpowiedzi.
Właściwości zdalnych wywołań procedur
Właściwości zdalnych wywołań procedur
parametry
parametry
Parametry wejściowe są bezpośrednimi równoważnikami
parametrów przekazywanych przez wartość w zwykłych
wywołaniach procedur.
Aby jednak zrealizować przekazywanie parametru przez odniesienie
w językach takich jak Modula-2 (lub użycie w argumentach
wskazników do zmiennych w językach takich jak C), są potrzebne
dalsze informacje, powiadamiające o tym, czy parametr jest używany
na wejściu, wyjściu, czy w obu przypadkach,
Konieczność określania tych możliwości jest jedną z przyczyn, które
stanowią o istotności języka opisu interfejsu jako składowej każdego
systemu RPC.
Właściwości zdalnych wywołań procedur
Właściwości zdalnych wywołań procedur
środowisko
środowisko
Procedura zdalna jest wykonywana w środowisku
odmiennym od miejsca jej wywołania, toteż nie ma
dostępu do zmiennych w środowisku wywołania, takich
jak zmienne globalne zadeklarowane w środowisku
wywołującym.
Właściwości zdalnych wywołań procedur
Właściwości zdalnych wywołań procedur
adresy
adresy
Przekazywanie przez proces w komunikacie do innych
procesów adresów komórek pamięci lub ich
równoważników jest bezcelowe.
Tak wiec argumenty i wyniki procedur zdalnych nie
mogą zawierać struktur danych ze wskaznikami do
komórek pamięci.
Realizacja mechanizmu RPC (1)
Realizacja mechanizmu RPC (1)
Oprogramowanie realizujące wywoływanie procedury
zdalnej składa się z trzech głównych zadań. Są to:
1. Przetwarzanie interfejsu - Integrowanie
mechanizmu RPC z programami klienta i serwera
w konwencjonalnych językach programowania. Co
obejmuje przetaczanie i odwrotne przetaczanie
argumentów u klienta i serwera oraz kierowanie
komunikatów z zamówieniami do odpowiedniej
procedury
2. Obsługa komunikacji - Przesyłanie i przyjmowanie
komunikatów z zamówieniami i odpowiedziami.
Realizacja mechanizmu RPC (2)
Realizacja mechanizmu RPC (2)
1. Wiązanie - Odnajdywanie serwera odpowiedniego dla
danej usługi Zarówno klient, jak i serwer zaopatrują
każdą procedurę w interfejsie w niepowtarzalny
identyfikator (zwykle są to numery porządkowe: l, 2,
...), który jest włączany do komunikatów z
zamówieniami.
Realizacja mechanizmu RPC (3)
Realizacja mechanizmu RPC (3)
Tworzenie programu klienta
System RPC będzie dostarczać środków do zbudowania kompletnego
programu klienta" przez instalowanie dla każdej procedury zdalnej
wywoływanej przez program klienta tzw. namiastki procedury (ang.
stub procedurę).
Zadaniem namiastki procedury klienta jest zamiana lokalnego
wywołania procedury w zdalne wywołanie procedury na serwerze.
Typy argumentów i wyników w namiastce klienta muszą być zgodne z
oczekiwanymi przez procedurę zdalną. Osiąga się to za pomocą
wspólnej definicji interfejsu. Namiastka procedury klienta musi
przetoczyć argumenty i umieścić je wraz z identyfikatorem procedury
w komunikacie, wysłać komunikat do serwera, poczekać na
komunikat z odpowiedzią, dokonać jego odwrotnego przetoczenia i
zwrócić wyniki.
Realizacja mechanizmu RPC (4)
Realizacja mechanizmu RPC (4)
Tworzenie programu serwera
System RPC będzie dostarczał ekspedytora (ang.
despatcher) oraz instalował namiastki procedur serwera.
Ekspedytor korzysta z identyfikatora procedury w
komunikacie z zamówieniem, aby wybrać jedną z
namiastek procedur serwera i przekazać dalej argumenty.
Zadaniem namiastki procedury serwera jest odwrotne
przetoczenie argumentów, wywołanie odpowiedniej
procedury usługowej oraz - po jej wykonaniu - przetoczenie
argumentów wynikowych (lub sygnału błędu w przypadku
awarii) do komunikatu z odpowiedzią.
Realizacja mechanizmu RPC (5)
Realizacja mechanizmu RPC (5)
proces kompilacji
Kompilator interfejsu przetwarza definicje interfejsu
zapisane w języku opisu interfejsu.
Kompilatory interfejsów są tak projektowane, aby
tworzyć składowe, które można łączyć z
programami klienta i serwera bez wykonywania
jakichkolwiek zmian w istniejących kompilatorach.
Realizacja mechanizmu RPC (6)
Realizacja mechanizmu RPC (6)
proces kompilacji
Kompilator interfejsu z reguły wykonuje następujące zadania:
" Generuje namiastki procedur klienta odpowiadające
sygnaturom procedur w interfejsie. Namiastki procedur
zostaną skompilowane i połączone z programem klienta.
" Generuje namiastki procedur serwera odpowiadające
sygnaturom procedur w interfejsie. Ekspedytor oraz
namiastki procedur serwera zostaną skompilowane i
połączone z programem serwera.
Realizacja mechanizmu RPC (7)
Realizacja mechanizmu RPC (7)
proces kompilacji
3. Używając sygnatur procedur z interfejsu - określających
typy argumentów i wyniku - generuje odpowiednie
operacje przetaczania oraz odwrotnego przetaczania w
każdej namiastce procedury.
4. Dla każdej procedury usługowej generuje nagłówek na
podstawie definicji interfejsu. Programista usługi
dostarcza treści tych procedur.
Realizacja mechanizmu RPC (8)
Realizacja mechanizmu RPC (8)
przykład interfejsu
Realizacja mechanizmu RPC (9)
Realizacja mechanizmu RPC (9)
pliki utworzone przez kompilator
Kompilator interfejsu - rpcgen na podstawie interfejsu generuje
następujące elementy:
1. Namiastki procedur klienta.
2. Procedure główną (ang. main) serwera, ekspedytora oraz
namiastkę procedury serwera. Ekspedytor może przekazywać
do procedur serwera informacje dotyczące tożsamości
(identyfikatory użytkownika i grupy).
Realizacja mechanizmu RPC (10)
Realizacja mechanizmu RPC (10)
pliki utworzone przez kompilator
3. Procedury XDR przetaczania i odwrotnego przetaczania
danych na użytek ekspedytora oraz namiastek serwera i
klienta.
4. Plik nagłówkowy, na przykład Czytaj Pisz, z definicjami
wspólnych zmiennych i typów do użytku w programach
klienta i serwera. Sygnatury procedur usługowych są podane
w postaci prototypów funkcji języka C. Twórca usługi
dostarcza implementacji tych procedur, zgodnych z
prototypami.
Realizacja mechanizmu RPC (11)
Realizacja mechanizmu RPC (11)
pliki utworzone przez kompilator
Program klienta importuje interfejs odpowiedniej
usługi i wywołuje procedury zdalne, na przykład
CZYTAJ i PISZ.
Pomagają mu w tym procedury-namiastki klienta
oraz procedury przetaczania parametrów
wygenerowane przez kompilator interfejsu rpcgen.
Realizacja mechanizmu RPC (11)
Realizacja mechanizmu RPC (11)
program klienta - przykład
Realizacja mechanizmu RPC (11)
Realizacja mechanizmu RPC (11)
procedury serwera - przykład
Przykład 1 specyfikacja interfejsu (1)
Przykład 1 specyfikacja interfejsu (1)
Przykład 1 specyfikacja interfejsu (2)
Przykład 1 specyfikacja interfejsu (2)
Przykład 1 funkcja klienta (3)
Przykład 1 funkcja klienta (3)
Przykład 1 funkcja klienta (4)
Przykład 1 funkcja klienta (4)
Przykład Funkcja klienta wywołująca zdalną procedurę (5)
Przykład Funkcja klienta wywołująca zdalną procedurę (5)
Przykład Funkcja klienta wywołująca zdalną procedurę (6)
Przykład Funkcja klienta wywołująca zdalną procedurę (6)
Przykład Funkcja Serwera (7)
Przykład Funkcja Serwera (7)
Przykład Funkcja Serwera (8)
Przykład Funkcja Serwera (8)
Przykład kompilacja (9)
Przykład kompilacja (9)
Przykład kompilacja (10)
Przykład kompilacja (10)
Przebieg tworzenia aplikacji Klient-Serwer na
Przebieg tworzenia aplikacji Klient-Serwer na
podstawie RPC
podstawie RPC
Realizacja zdalnego wywołania procedury
Realizacja zdalnego wywołania procedury
Realizacja zdalnego wywołania procedury opis (1)
Realizacja zdalnego wywołania procedury opis (1)
Realizacja zdalnego wywołania procedury opis (2)
Realizacja zdalnego wywołania procedury opis (2)
Realizacja zdalnego wywołania procedury opis (3)
Realizacja zdalnego wywołania procedury opis (3)
Kanały komunikacyjne doors, a mechanizm RPC
Kanały komunikacyjne doors, a mechanizm RPC
reprezentacja danych
reprezentacja danych
Protokół
Protokół
XDR
XDR
(eXternal Data Representation)
(eXternal Data Representation)
XDR - zewnętrzna reprezentacja danych (1)
XDR - zewnętrzna reprezentacja danych (1)
XDR Typy danych (1)
XDR Typy danych (1)
XDR Typy danych (2)
XDR Typy danych (2)
XDR Typy danych (3)
XDR Typy danych (3)
XDR Typy danych (4)
XDR Typy danych (4)
XDR przykład - definicja danych w pliku .x
XDR przykład - definicja danych w pliku .x
specyfikacji XDR
specyfikacji XDR
XDR przykład plik nagłówkowy wygenerowany przez
XDR przykład plik nagłówkowy wygenerowany przez
rpcgen na podstawie specyfikacji (1)
rpcgen na podstawie specyfikacji (1)
XDR przykład plik nagłówkowy wygenerowany przez
XDR przykład plik nagłówkowy wygenerowany przez
rpcgen na podstawie specyfikacji (2)
rpcgen na podstawie specyfikacji (2)
XDR przykład write (1)
XDR przykład write (1)
XDR przykład write (2)
XDR przykład write (2)
XDR przykład read (1)
XDR przykład read (1)
XDR przykład read (2)
XDR przykład read (2)
XDR przykład rezultat (1)
XDR przykład rezultat (1)
XDR przykład rezultat (2)
XDR przykład rezultat (2)
Przykłady
Przykłady
Podstawowe polecenia systemu UNIX
Podstawowe polecenia systemu UNIX
kompilacja programów (gcc) w przypadku użycia
kompilacja programów (gcc) w przypadku użycia
wątków
wątków
gcc -lpthread -o Watek W1.c W2.c
W1.c W2.c nazwy plików
zródłowych
Plik o nazwie Watek który
zostanie utworzony podczas
procesu kompilacji
Dołączenie biblioteki
zawierającej funkcje
zarządzające wątkami
Przykład 2 zdalne obliczenia (1)
Przykład 2 zdalne obliczenia (1)
Definicja funkcji może
zawierać tylko jeden
parametr wejściowy
Przykład 2 zdalne obliczenia (2)
Przykład 2 zdalne obliczenia (2)
rpcgen generacja plików klienta i serwera na podstawie pliku
zawierającego definicje interfejsu
rpcgen -a kalkulator.x
Pliki wspólne dla klienta i serwera:
kalkulator.h
definicje i typy zmienny, utworzone na podstawie
definicji interfejsu (wspólne dla klienta i serwera)
kalkulator_xdr.c
funkcje odpowiedzialne za przetaczanie danych od
klienta do serwera i od serwera do klienta
Makefile.kalkulator > gmake f Makefile.kalkulator
Przykład 2 zdalne obliczenia (3)
Przykład 2 zdalne obliczenia (3)
Plik dla klienta:
kalkulator_clnt.c
funkcje odpowiedzialne za realizacje połączenie
pomiędzy serwerem
kalkulator_client.c
Zawiera szkielet pliku do zaimplementowania
przez użytkownika
Przykład 2 zdalne obliczenia (4)
Przykład 2 zdalne obliczenia (4)
Plik dla serwera:
kalkulator_svc.c
funkcje odpowiedzialne za realizacje połączenie
pomiędzy serwerem
kalkulator_server.c
Zawiera szkielet pliku do zaimplementowania
przez użytkownika
Przykład 2 plik kalkulator.h
Przykład 2 plik kalkulator.h
Przykład 2 plik kalkulator_xdr.c
Przykład 2 plik kalkulator_xdr.c
Przykład 2 plik kalkulator_clnt.c
Przykład 2 plik kalkulator_clnt.c
Przykład 2 plik kalkulator_client.c
Przykład 2 plik kalkulator_client.c
Przykład 2 plik kalkulator_server.c
Przykład 2 plik kalkulator_server.c
Przykład 2 plik kalkulator_svc.c
Przykład 2 plik kalkulator_svc.c
Kreowanie gniazda typu udp
Rejestracja usługi
Kreowanie gniazda typu tcp
Port może być dowolny (za
połączenie klient-server
odpowiedzialny jest portmap)
Rejestracja usługi
Oczekiwanie na zlecenia klientów
Przykład 2 repozytorium 1
Przykład 2 repozytorium 1
(proces wiązania)
(proces wiązania)
Wiązanie - Odnajdywanie serwera odpowiedniego dla
danej usługi Zarówno klient, jak i serwer zaopatrują
każdą procedurę w interfejsie w niepowtarzalny
identyfikator (zwykle są to numery porządkowe: l, 2,
...), który jest włączany do komunikatów z
zamówieniami.
Przykład 2 repozytorium 2
Przykład 2 repozytorium 2
(proces wiązania)
(proces wiązania)
Przykład 3 plik SumWektor.x
Przykład 3 plik SumWektor.x
Przykład 3 generacja aplikacji
Przykład 3 generacja aplikacji
rpcgen generacja plików klienta i serwera na podstawie pliku
zawierającego definicje interfejsu
rpcgen -a SumWektor.x
UWAGA:
Opcja -a powoduje wygenerowanie wszystkich plików łącznie
z plikami SumWektor_client.c oraz SumWektor_server.c
Jeśli pliki SumWektor_client.c oraz SumWektor_server.c były
modyfikowane to użycie opcji -a spowoduje ich nadpisanie.
Przykład 3 plik SumWektor.h
Przykład 3 plik SumWektor.h
Przykład 3 plik SumWektor_client.c
Przykład 3 plik SumWektor_client.c
Zmodyfikować ciało funkcji
klienta
Przykład 3 plik SumWektor_server.c
Przykład 3 plik SumWektor_server.c
Zmodyfikować ciało funkcji
serwera
Przykład 3 Kompilacja
Przykład 3 Kompilacja
Do kompilacji plików serwera i klienta należy użyć programu
gmake w sposób następujący:
gmake -f Makefile.SumWektor
Plik, który został wygenerowany
przez rpcgen zawiera reguły
komplikacji dla programu
klienta i programu serwera
Przykład 4 Równoległe obliczenia (1)
Przykład 4 Równoległe obliczenia (1)
Przykład ten pokazuje w jaki sposób, korzystają z
mechanizmu RPC można w prosty sposób
zbudować aplikacje realizującą obliczenia
równoległe na komputerach, które są dostępne w
sieci komputerowej.
Przykład 4 Równoległe obliczenia (2)
Przykład 4 Równoległe obliczenia (2)
Ilustracja zastosowania mechanizmu RPC do
przetwarzania równoległego zostania pokazana na
przykładzie obliczania sumy elementów dwóch lub
więcej wektorów.
Obliczenie sumy dla każdego wektora odbywa się
równolegle suma dla poszczególnego wektora
liczona jest na oddzielnym komputerze który jest
dostępny w sieci.
Przykład 4 Równoległe obliczenia (3)
Przykład 4 Równoległe obliczenia (3)
Należy zmodyfikować następujące pliki:
1. SumWektor_client.c tak jak to zostało
pokazane na kolejnych slajdach i zapisać po
nazwą SumMatrix_client.c
2. Makefile.SumWektor - tak jak to zostało
pokazane na kolejnych slajdach i zapisać po
nazwą Makefile.SumMatrix
Przykład 4 Równoległe obliczenia
Przykład 4 Równoległe obliczenia
(modyfikacja pliku klienta(1) )
(modyfikacja pliku klienta(1) )
Przykład 4 Równoległe obliczenia
Przykład 4 Równoległe obliczenia
(modyfikacja pliku klienta(2) )
(modyfikacja pliku klienta(2) )
Przykład 4 Równoległe obliczenia
Przykład 4 Równoległe obliczenia
(modyfikacja pliku klienta(3) )
(modyfikacja pliku klienta(3) )
Liczba Komputerów
Przykład 4 Równoległe obliczenia
Przykład 4 Równoległe obliczenia
(modyfikacja pliku klienta(4) )
(modyfikacja pliku klienta(4) )
Przykład 4 Równoległe obliczenia
Przykład 4 Równoległe obliczenia
(modyfikacja pliku Makefile.SumWektor )
(modyfikacja pliku Makefile.SumWektor )
Modyfikacja pliku
Makefile.SumWektor i
zapisanie go pod nazwą
Makefile.SumMatrix
Wyszukiwarka
Podobne podstrony:
lab6Mathcad lab6 2Lab6Wyklad SR 4BD 1st 2 4 lab6 tresc 1 110 Facit till Svenska för Utländska Studenter(1)SR dce WATlab6Zoltan Laba Selected Chess Compositions III (1993 1999) Gabriel Töröki, 2003Lab6 2 SW2 lab62W2 3 Śr Podstawy metrologii elekt2010 LAB6 SprawozdanieDie Prinzen Kannst du mich nicht hör´nSR W05 JavaRMIrozne [sr , 26 kwi 2017] calibrewięcej podobnych podstron