sr lab6


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:
lab6
Mathcad lab6 2
Lab6
Wyklad SR 4
BD 1st 2 4 lab6 tresc 1 1
10 Facit till Svenska för Utländska Studenter(1)
SR dce WAT
lab6
Zoltan Laba Selected Chess Compositions III (1993 1999) Gabriel Töröki, 2003
Lab6 2 SW2 lab62
W2 3 Śr Podstawy metrologii elekt
2010 LAB6 Sprawozdanie
Die Prinzen Kannst du mich nicht hör´n
SR W05 JavaRMI
rozne [sr , 26 kwi 2017] calibre

więcej podobnych podstron