Zdalne wywołanie procedury

11
© DSRG 2004 Systemy Rozproszone - Zdalne wywołanie procedury 1 www.cs.agh.edu.pl Zdalne wywołanie procedury Implementacja Sun RPC Ćwiczenie laboratoryje: Jacek Cała <[email protected]> Aleksander Motyka <[email protected]>

description

Zdalne wywołanie procedury. Implementacja Sun RPC. Ćwiczenie laboratoryje: Jacek Cała Aleksander Motyka . Pytania. Zadania mechanizmu RPC? Co to jest operacja powtarzalna (ang. idempotent ) ? Cele wprowadzenia specyfikacji XDR? - PowerPoint PPT Presentation

Transcript of Zdalne wywołanie procedury

Page 1: Zdalne wywołanie procedury

© DSRG 2004

Systemy Rozproszone - Zdalne wywołanie procedury 1

www.cs.agh.edu.pl

Zdalne wywołanie procedury

Implementacja Sun RPC

Ćwiczenie laboratoryje:Jacek Cała <[email protected]>Aleksander Motyka

<[email protected]>

Page 2: Zdalne wywołanie procedury

www.cs.agh.edu.pl

Systemy Rozproszone - Zdalne wywołanie procedury 2

© DSRG 2004

Pytania• Zadania mechanizmu RPC?• Co to jest operacja powtarzalna

(ang. idempotent) ?• Cele wprowadzenia specyfikacji XDR?• Czym jest łącznik (ang. stub)

klienta/serwera?

Page 3: Zdalne wywołanie procedury

www.cs.agh.edu.pl

Systemy Rozproszone - Zdalne wywołanie procedury 3

© DSRG 2004

Specyfikacja usług RPC• Numer programu – liczba 32-bitowa

– 0000 0000–1fff ffff – SunRPC– 2000 0000–3fff ffff – definiowane przez

użytkownika– 4000 0000–5fff ffff – tymczasowe– 6000 0000–ffff ffff – zarezerwowane

• Numer wersji – liczba 32-bitowa• Numer procedury – liczba 32-bitowa

Page 4: Zdalne wywołanie procedury

www.cs.agh.edu.pl

Systemy Rozproszone - Zdalne wywołanie procedury 4

© DSRG 2004

Program rpcbind• Serwer dokonujący konwersji numerów

programów RPC na numer portu tzw. portmapper; port 111

demon rpcbind

serwer

klient

[1]

[2] [3]

rejestracja usługi

odwzorowanie adresu wywołanie

Page 5: Zdalne wywołanie procedury

www.cs.agh.edu.pl

Systemy Rozproszone - Zdalne wywołanie procedury 5

© DSRG 2004

Polecenie rpcinfo• Informacje nt. usług zarejestrowanych w rpcbind.– wyświetlenie wszystkich usług na

wskazanym serwerze– wyświetlenie usług w sposób zwarty [-s]– wyświetlenie wybranej usługi [-l]– usunięcie wybranego serwisu [-d]

Page 6: Zdalne wywołanie procedury

www.cs.agh.edu.pl

Systemy Rozproszone - Zdalne wywołanie procedury 6

© DSRG 2004

Polecenie rpcgen• Jako wejście pobiera plik specyfikacji usług

w formacie XDR.• Jako wyjście generuje kod stuba serwera

i klienta w języku C.

service.x

client.c

service_proc.c

service.h

service_cltn.c

service_svc.c

libnsl

service

client

cc

cc

rpcgen

Page 7: Zdalne wywołanie procedury

www.cs.agh.edu.pl

Systemy Rozproszone - Zdalne wywołanie procedury 7

© DSRG 2004

Polecenie rpcgen• Ukrywa niskopoziomowe wywołania

biblioteki RPC:– clnt_*– svc_*– rpc_*– xdr_*

• Generuje gotowe funkcje na potrzeby serwisu oraz klienta

Page 8: Zdalne wywołanie procedury

www.cs.agh.edu.pl

Systemy Rozproszone - Zdalne wywołanie procedury 8

© DSRG 2004

Ważniesze funkcje• CLIENT* clnt_create(

const char* host,const rpcprog_t prognum,const rpcvers_t versnum,const char* nettype)

– zwraca zmienną typu CLIENT, która będzie używana przy generowaniu wywołań do serwera.

• bool_t clnt_control(CLIENT* clnt, const uint_t req, char* info)

– pozwala na odczyt/zmianę parametrów zmiennej typu CLIENT

• void clnt_destroy(CLIENT* clnt)– usuwa utworzoną strukturę klienta

Page 9: Zdalne wywołanie procedury

www.cs.agh.edu.pl

Systemy Rozproszone - Zdalne wywołanie procedury 9

© DSRG 2004

Zadanie 1• Użycie rpcgen dla przykładowej

specyfikacji db.x– rpcgen -a -C db.x– gmake -f makefile.db

• Analiza wygenerowanych plików– plik nagłówkowy– przykładowe implementacje klienta i

serwera

Page 10: Zdalne wywołanie procedury

www.cs.agh.edu.pl

Systemy Rozproszone - Zdalne wywołanie procedury 10

© DSRG 2004

Zadanie 2• Opracowanie klienta odczytującego z

bazy rekord:– RecordName == autor-02– RecordID == 1

• Baza umieszczona została na komputerze galaxy oraz jasmin

Page 11: Zdalne wywołanie procedury

www.cs.agh.edu.pl

Systemy Rozproszone - Zdalne wywołanie procedury 11

© DSRG 2004

Zadanie 3• Napisanie własnego programu usługi:

– podnoszącego przekazaną liczbę rzeczywistą do kwadratu,

– procedura usługowa powinna generować na standardowe wyjście komunikat o jej wywołaniu.

• Program powinien umieszczony w pliku db.x

• UWAGA! Numery programów muszą być unikalne