6. Strumenti per l IPC : dalle socket a RPC/RMI

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "6. Strumenti per l IPC : dalle socket a RPC/RMI"

Transcript

1 CdL MAGISTRALE in INFORMATICA A.A corso di Sistemi Distribuiti 6. Strumenti per l IPC : dalle socket a RPC/RMI Prof. S.Pizzutilo

2 Le Socket Una socket è una astrazione software rappresentante un punto terminale di interfacciamento per la comunicazione in rete. Mediante tale astrazione software è cioè possibile creare e rappresentare un terminale (interfaccia) di connessione con una semplice chiamata di funzione, al cui valore di ritorno viene associato un nome. Esempio di comunicazione connection-oriented usando le socket CdL in Informatica- Magistrale Università di Bari Sistemi Distribuiti -

3 Relazione tra protocolli, applicazioni e API socket Agli inizi degli anni 80, l ARPA (con l Università di Berkeley) crea un'interfaccia per far comunicare applicazioni che giravano su macchine UNIX connesse in rete: l interfaccia socket BSD (Berkeley Software Distribution) UNIX. Nel 1991 la Microsoft decise di definire un'api (Application Program Interface) standard per applicazioni TCP/IP in ambiente Windows. Applicazione Socket API Implementazione dei protocolli (S.O.) Applicazione Socket API TCP TCP IP HOST canale IP canale Es: ethernet Router IP HOST

4 Una Socket: una visione di insieme Una socket è un dispositivo software che consente la comunicazione (trasferimento di dati) tra due processi su internet in una LAN Æ Interfaccia indipendente dalla rete Æ Uso di un astrazione unica per i nodi comunicanti Æ Schema di naming a due livelli Processo utente Socket system call Protocollo di trasporto e di rete (TCP/IP) kernel Gestore di data link (ethernet) CdL in Informatica- Magistrale Università di Bari Sistemi Distribuiti

5 Una Socket: una visione di insieme Ø Nel gergo socket uno dei processi che comunicano è chiamato Server (il receiver) e l altro Client (il sender). Ø Tra i due processi il server è quello che ha controllo maggiore, poiché è il processo che inizialmente crea la socket. Ø Più client possono comunicare attraverso la stessa socket, ma solo un server può essere associato ad una definita socket. Il Client(il sender) ha bisogno di conoscere l indirizzo del server (ma non il viceversa) Il Server (il receiver) può apprendere informazioni sull indirizzo del client una volta stabilita la connessione CdL in Informatica- Magistrale Università di Bari Sistemi Distribuiti -

6 Le famiglie di Socket Le famiglie di SOCKET Ø Unix Domain socket: file in una directory di un computer local host. Consentono il trasferimento di dati tra processi sulla stessa macchina Unix Ø Internet socket (AF_INET): consentono il trasferimento di dati tra processi posti su macchine remote connesse tramite una LAN Ogni famiglia di socket: riunisce le socket che utilizzano gli stessi protocolli (Protocol Family) sottostanti, supporta un sottoinsieme di stili di comunicazione, possiede un proprio formato di indirizzamento (Address Family) CdL in Informatica- Magistrale Università di Bari Sistemi Distribuiti -

7 I tipi di Socket Il tipo di una socket definisce una modalità di comunicazione che una socket usa per inviare dati: q Streaming Socket (SOCK_STREAM): Fornisce una connessione sequenziale, affidabile e full-duplex. Il protocollo TCP supporta questo tipo di socket. q Datagram socket (SOCK_DGRAM): Supporta i datagrammi (privo di connessione, messaggi inaffidabili di una lunghezza massima prefissata). Il protocollo UDP supporta questo tipo di socket AF_INET + SOCK_STREAM determineranno una connessione TCP, AF_INET + SOCK_DGRAM determineranno una trasmissione UDP CdL in Informatica- Magistrale Università di Bari Sistemi Distribuiti -

8 Socket, Protocolli e Porte su un singolo host Una socket che usa la famiglia di protocolli TCP/IP è univocamente determinata da un indirizzo internet, un protocollo di comunicazione (TCP o UDP) e un numero di porta. Applicazioni Applicazioni Socket TCP Socket UDP Porte TCP Porte UDP TCP UDP IP Sockets bound to ports Host Descriptor reference CdL in Informatica- Magistrale Università di Bari Sistemi Distribuiti -

9 Programmazione socket Per consentire al client di contattare il server: Il programma server deve essere in esecuzione come processo di background. Il programma server deve avere una porta (socket) che dia il benvenuto al contatto iniziale stabilito dal client. Il client contatta il server tramite: la creazione di una socket locale; la specifica di un indirizzo del processo server (IP, numero di porta relativi al processo); Dopo la creazione della socket nel client, TCP avvia un handshake a tre vie (tre messaggi di SYNC e ACK) e stabilisce una connessione TCP con il server. Durante l handshake a tre vie il TCP server crea un nuova socket (di connessione) dedicata a quel particolare client CdL in Informatica- Magistrale Università di Bari Sistemi Distribuiti -

10 BSD Sockets used for datagrams Sending a message Receiving a message s = socket(af_inet, SOCK_DGRAM, 0) s = socket(af_inet, SOCK_DGRAM, 0) bind(s, ClientAddress) sendto(s, "message", ServerAddress) bind(s, ServerAddress) amount = recvfrom(s, buffer, from) ServerAddress and ClientAddress are socket addresses Tratto da: Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3 Addison-Wesley Publishers 2000

11 Interazione TCP Client/Server con WSA Le Windows Sockets API (WSA) sono una specifica estensione delle socket BSD UNIX elaborata per l'ambiente operativo Microsoft Windows. STREAM SOCKET Server 1. (Inizializzare una WSA Winsock API), 2. Creare una socket, 3. Assegnare un local address alla socket, 4. Settare la socket all ascolto, 5. Iterativamente (processo di background): a. Accettare una nuova connessione, b. Inviare e ricevere dati, c. Chiudere la connessione. Client 1. (Inizializzare una WSA) 2. Creare una Socket 3. Connettersi al server 4. Inviare e ricevere dati 5. Chiudere la connessione

12 BSD Sockets used for streams Requesting a connection Listening and accepting a connection s = socket(af_inet, SOCK_STREAM,0) connect(s, ServerAddress) write(s, "message", length) s = socket(af_inet, SOCK_STREAM,0) bind(s, ServerAddress); listen(s,5); snew = accept(s, ClientAddress); n = read(snew, buffer, amount) ServerAddress and ClientAddress are socket addresses Tratto da : Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3 Addison-Wesley Publishers 2000

13 Interazione UDP Client/Server con WSA DATAGRAM SOCKET Server 1. (Inizializzare una WSA) 2. Creare una socket 3. Assegnare un local address alla socket 4. Iterativamente: a. Inviare e ricevere dati b. Chiudere la connessione Client 1. (Inizializzare una WSA) 2. Creare una Socket 3. Inviare e ricevere dati 4. Chiudere la connessione CdL in Informatica- Magistrale Università di Bari Sistemi Distribuiti -

14 Da message passing a procedure call ü L IPC basato sui messaggi consente due operazioni: Ø Send (messaggio) la dimensione del messaggio può essere fissa o variabile Ø Receive (messaggio) ü Se P e Q vogliono comunicare, hanno bisogno di: q stabilire un canale di comunicazione fra di loro, fisicamente (es. memoria condivisa, bus hardware) logicamente (es. proprietà logiche) q scambiare messaggi per mezzo di send e receive Università di Bari Informatica magistrale Corso di sistemi distribuiti

15 Encoding e decoding dei messaggi Conservazione della semantica dei messaggi tra sistemi disomogenei Nodo A Nodo B buffer messaggio encoding Messaggio codificato I valori dei puntatori perdono il loro significato quando sono trasferiti da uno spazio degli indirizzi di un processo ad un altro. Oggetti diversi di un programma occupano spazio di memoria diverso a seconda delle architetture messaggio decoding Messaggio codificato buffer Tagged representation : nel messaggio vengono codificati il tipo ed il valore degli oggetti Untagged representation : il messaggio contiene solo il valore dell oggetto senza alcuna specifica del tipo. Presuppone che il programma ricevente sappia decodificare i dati ricevuti. Università di Bari Informatica magistrale Corso di sistemi distribuiti

16 Istruzioni di chiamata a procedura locale ü ü L istruzione di chiamata ( Call ) è un istruzione di salto, il cui operando è l indirizzo della prima istruzione della procedura, detto entry-point address L istruzione di ritorno ( Return ), al termine della esecuzione della procedura chiamata, è una istruzione di salto alla procedura chiamante, alla istruzione che segue immediatamente la istruzione di call: Necessità di conservare l indirizzo di tale istruzione, detto return address main. call A.. call A Proc A call B... return Proc B... return Il return address può essere conservato in: Registri o locazioni di memoria Difficoltà nel chiamare un altra procedura all interno di quella chiamata (procedure nidificate) Locazione di memoria associata alla procedura L istruzione di return è una istruzione di salto alla locazione di memoria che conserva l indirizzo della istruzione della procedura chiamante È possibile la nidificazione delle procedure Stack È possibile sia la nidificazione delle procedure che la ricorsività (abilità di una procedura a chiamare se stessa)

17 Passaggio dei parametri tra procedure Ø La procedura chiamante può passare alla procedura chiamata dei valori detti parametri (o argomenti o dati ). Ø La procedura chiamata fornisce dei parametri ( o risultati) alla procedura chiamante. La procedura chiamante pone i parametri nello stack, prima di effettuare la chiamata (trasmissione per valore), da dove vengono letti dalla procedura chiamata. La procedura chiamante pone gli indirizzi dei parametri nello stack (trasmissione per indirizzo o referenza), la procedura chiamata legge gli indirizzi per accedere ai valori e modificarli o calcolarne di nuovi. Trasmissione per copia/ripristino : il client pone i parametri nello stack,, il server li legge dallo stack e, dopo il calcolo, pone i risultati nuovamente nello stack, il client legge dallo stack i dati inviati dal server e ricopia i dati in memoria sovrascrivendo i parametri precedentemente trasmessi.

18 I protocolli per la comunicazione tra processi remoti Le caratteristiche principali di un DCE (Distributed Computing Environment) sono: p. Un tool di rappresentazione dei dati indipendente dalla macchina (per permettere a macchine diverse di scambiarsi i dati), p. un protocollo per specificare responsabilità a basso livello del client e del server durante la comunicazione, p. un compilatore di protocollo che generi le componenti necessarie alla comunicazione, p. servizi di autenticazione per migliorare la sicurezza, p. servizi di naming di rete, p. servizio di DFS (Distributed File System) per eliminare ridondanza di files. Client Risposta Richiesta Client Richiesta Risposta Richiesta Server Client Risposta Università di Bari Informatica magistrale Corso di sistemi distribuiti

19 RPC (Remote Procedure Call) L'RPC permette la chiamata di procedure esterne che risiedono su diversi spazi di indirizzi in modo simile ad una chiamata locale. u Gli argomenti e i valori di ritorno sono automaticamente impacchettati e inviati dalle procedure locali a quelle esterne, in modo da mantenere la semantica delle chiamate delle procedure remote simile a quella delle chiamate locali. u L'RPC è stato progettato per la creazione di applicazioni distribuite su ambienti eterogenei, quindi l attività di marshalling dei dati è fondamentale : i parametri trasmessi tra le procedure in RPC devono essere impacchettati in un formato canonico indipendente dall'architettura prima di essere passati alle procedure remote. u Una tipica applicazione RPC è costituita da un client ed un server che comunicano tra loro per mezzo dei rispettivi stub che si occupano di convertire i dati dal formato della macchina a quello generale e viceversa.

20 RPC (Remote Procedure Call) L RPC opera a livello di sessione del modello ISO-OSI, utilizzando l XDR a livello di presentazione come modo di rappresentazione dei dati. In una chiamata a procedura remota il chiamante (client) e il chiamato (server) interagiscono nel seguente modo: Il client esegue una chiamata ad una funzione disponibile server e si blocca sino a che non ottiene il risultato. Un processo di gestione delle RPC raccoglie i valori dei parametri, forma un messaggio (stub) e lo invia al server remoto. Il kernel del server riceve la richiesta, spacchetta i parametri, invoca la procedura e invia indietro la risposta al client. Università di Bari Informatica magistrale Corso di sistemi distribuiti

21 Procedura Chiamante Procedure call e RPC Chiamata a procedura locale argomenti risultato Procedura Chiamata La differenza fra una call locale ed una remota consiste nello spazio di indirizzi su cui le procedure operano. argomenti messaggio richiesta Chiamata a procedura remota Client Processo Chiamante risultati Client Stub risultati Server Processo Chiamato Server Stub argomenti Il processo client effettua una call locale messaggio messaggio risposta messaggio allo stub del client ; lo stub la intercetta risposta richiesta insieme ai suoi argomenti, lo impacchetta RETE e genera un trap al kernel del client con il messaggio di richiesta. Questo viene inviato sulla rete dal kernel del client utilizzando un protocollo di trasmissione (TCP, UDP) e raggiunge lo stub del server. Il kernel della macchina server lo riceve, lo spacchetta e lo trasforma in una call locale al processo server. I risultati vengono inseriti nel messaggio di risposta, che lo stub del server invia sulla rete allo stub del client con lo stesso meccanismo.

22 Marshalling dei dati Lo stub contiene l interfaccia di comunicazione e i dati. Gli stub possono essere generati automaticamente da un compilatore di protocollo e sono trasparenti all utente. Il client stub ed il server stub si occupano di risolvere i problemi riguardanti : Ø la diversa rappresentazione dei dati (big endian, little endian, ), implementando meccanismi di marshalling in un formato canonico (XDR), Ø il passaggio dei parametri puntatore: al server viene passato il dato e non il puntatore, questo sarà memorizzato in una locazione del server e creato un puntatore alla locazione (tecnica del copia / ripristino). Università di Bari Informatica magistrale Corso di sistemi distribuiti

23 Standard di Network Computing OpenNetworkComputing RPC (Sun, AT&T, Novell, Netwise) Application Programs NFS NIS REX NLM RPC Transport Level Interface XDR Socket Low level network protocols (TCP, UDP, OSI, SPX/IPX) OpenSoftwareFoundation NCS/NCA RPC (HP, Apollo, IBM, DEC, Microsoft) Application Programs Location Broker Global Local RPC NDR Low level network protocols (TCP, UDP, OSI, SPX/IPX)

24 ONC-RPC binding ü Tutto il meccanismo avviene dopo che fra il client ed il server è stata creata una connessione (binding), che viene realizzata, durante l esecuzione del client, da un istruzione della RPC che crea un handle (un puntatore al CLIENT). ü La clnt_create() restituisce un puntatore ad un indirizzo che contiene la posizione del server. Questa viene individuata da un servizio del sistema server (il portmapper) che conserva il numero di porta di connessione su cui il processo server si è registrato ed è in ascolto (1). ü Una volta che il client ottiene il numero di porta del server (2) inviando anche l indirizzo dove ricevere le risposte, apre una connessione, che resta aperta (3) fino a quando non viene invocata la funzione clnt_destroy() che la chiude. Client Programma client Server Portmapper porte di com. Programma Server Università di Bari Informatica magistrale Corso di sistemi distribuiti

25 Il binding (cont.) RETE ü Fino a quando la connessione resta aperta, il client può invocare tutti i servizi del server (send). ü Durante una richiesta il client resta in attesa della risposta (blocked). ü Il processo server invece è sempre in attesa (in receive) e si attiva solo quando riceve una richiesta di servizio (messaggio) sulla porta di ascolto. Allora invoca la procedura richiesta e, dopo averla eseguita, assembla la risposta. Quindi la invia (send) al client, che a questo punto può riprendere la sua esecuzione, e si rimette in receive. Macchina client programma client attesa... Call rpc() con richiesta return() con risposta Macchina server demone del servizio in ascolto invoca il servizio chiamata alla procedura Return() risultato esecuzione della proc. richiesta esaurita costruzione della risposta demone del servizio in ascolto

26 Higher level RPC Higher level RPC <> Lower level RPC. In Higher level RPC la specifica dei tipi di dato trasmessi e l identificazione della procedura server remota è a carico del programmatore che genera manualmente gli stub (per il server e per il client). Ø Per la specifica dei tipi di dati si definisce un file header che verrà incluso sia nel codice client che nel codice server. Ø Per comunicare al portmapper la registrazione del programma server si usa l'istruzione Register_rpc( ) in cui sono specificate le procedure contenute, le versioni corrispondenti ed i filtri di codifica e decodifica (XDR). Ø Il portmapper assegna una porta al programma server e invia informazioni ai client circa gli indirizzi assegnati al programma server. Ø Il server con il comando Svc_run( ), si mette in ascolto sulla socket e aspetta le richieste del client. Ø Il client richiama una RPC con il comando Callrpc( ). Questo comando contiene il numero di porta dell'host remoto, il numero di programma e di versione settando il canale di comunicazione I/O per l'esecuzione in remoto della procedura richiesta.

27 Lower level RPC Nel Lower level RPC non è invece necessario inserire nel codice server e client i protocolli di trasmissione perché le relative funzioni sono implementate negli stub del server e del client. Ø Si edita un file nomefile.x in RPCL (RPC Language). L RPCL fornisce le primitive per la definizione dei dati e delle procedure delle RPC. Nel file nomefile.x Si definiscono i tipi di dati utilizzati ( se non predefiniti), ed alcune informazioni proprie delle RPC quali il nome del programma, un numero e una versione di programma per i prototipi delle funzioni remote. Ø Gli stub vengono generati automaticamente dal compilatore di protocollo con il comando RPCGEN nomefile.x. Università di Bari Informatica magistrale Corso di sistemi distribuiti

28 Lower level ONC-RPC Specifiche RPC nomefile.x RPCGEN supporta entrambi i protocolli di trasmissione (TCP e UDP), permette più flessibilità nella stesura del codice client con un piccolo aumento di tempo di esecuzione dovuto ad una maggiore complessità dei programmi generati. Oltre agli stub (nomefile_clnt.c e nomefile_svc.c) viene generato anche un file header (nomefile.h) da far condividere al client e al server e un file contenente i filtri (contenuti in una libreria RPC) per la comunicazione tra i due processi (nomefile_xdr.c). Client stub nomefile_clnt.c Header nomefile.h RPCGEN Filtri XDR nomefile_xdr.c Server stub nomefile_svc.c Compilatore C Compilatore C Compilatore C Nel file nomefile_xdr.c sono specificate le procedure di conversione del formato dei dati, affinchè i processi client e server possano comunicare ( Marshalling dei dati). Questo perché client e server devono comunicare usando una rappresentazione di dati indipendente dalla macchina. Ø La compilazione del client avviene linkando il codice sorgente della procedura client (nomefile_client.c) con lo stub del client ed il filtro XDR e generando così l eseguibile client. Client stub nomefile_clnt.o Linker Programma client nome_client.o Compilatore C Client eseguibile nome_client Filtri XDR nomefile_xdr.o Server stub nomefile_server.o Linker Programma server nome_server.o Compilatore C Ø La compilazione del server avviene linkando il codice sorgente della procedura server (nomefile_server.c) con lo stub del server ed il filtro XDR, generando così l eseguibile server. Programma client nome_client.c Server eseguibile Nome_server Programma server nome_server.c

29 Il marshalling dei dati Nello standard ONC-RPC la codifica e la decodifica sono eseguite tramite dei filtri XDR (External Data Representation), i quali operano delle conversioni di tipo sugli argomenti delle procedure. Nel file nomefile_xdr.c sono contenute le definizioni dei tipi e delle costanti che vengono utilizzati. Tale file è generato sulla base di ciò che è specificato nel file nomefile.x. Le operazioni di marshalling sono: 1. acquisizione degli argomenti dal processo client, o dei risultati dal processo server, che formeranno i dati del messaggio da inviare al processo remoto, 2. codifica dei dati del messaggio passati dal mittente, 3. decodifica dei dati del messaggio sulla macchina ricevente. L'ordine e il metodo di rappresentazione usati per i risultati e gli argomenti devono essere conosciuti sia dal client che dal server. Il processo di marshalling deve riflettere le strutture di tutti i tipi di dati usati nel programma oggetto, includere i tipi di primitive, i tipi strutturati ed i tipi definiti dall'utente.

30 Esempio di applicazione ONC-RPC (realizzato da :Cozzolongo Giovanni e Spina Maria Antonietta) I due processi possono risiedere su macchine separate o essere situate sulla stessa postazione. Questo comunque non inficia sul buon funzionamento del sistema perché all avvio del processo client sarà necessario specificare il nome dell Host su cui è attivo il processo server, e le RPC trattano i due casi allo stesso modo. Al processo server sono affidati tutti i compiti relativi alla elaborazione dei dati; al processo client sono invece affidati i compiti relativi alla interfaccia con l utente. Ricerca.x rpcgen %#define DATABASE "archivio.txt" %#define HELP "help.txt" %#define MAXSTR 130 struct LINEA { string CORRENTE<MAXSTR>; int TROVATO; }; program ANALIZZA{ version ANALIZZAV{ LINEA ANALIZZA_GH (LINEA) =1; int APRIARCHIVIO (LINEA) =2; LINEA LEGGITESTO (LINEA) =3; }=1; }=0x ; Ricerca.h Ricerca_svc.c Ricerca_clnt.c Ricerca_xdr.c Server.c #include <rpc/rpc.h> #include <stdio.h> Client.c #include <stdlib.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include "ricerca.h" #include <string.h> /* dichiarazioni delle funzioni RPC */ #include <rpc/rpc.h> LINEA *analizza_gh_1(linea *gh); #include "ricerca.h" int *apriarchivio_1(linea *testo); void menu(char *); /* interfaccia utente*/ LINEA *leggitesto_1(linea *testo); void analisi(char *); /* ricerca nell'archivio */ /* procedura locale */ void elenca (char *,char *); /* visualizza l'archivio int */ ricerca(linea *gh); void chiamata (char *); /* crea l'handle e verifica FILE la presenza *fp=null; del server */ void stampa(char *,char); /* stampa i messaggi di FILE output *hp=null; */ CLIENT *cl=null; /* variabile che contiene static l'handle LINEA per la *result=null; comunicazione RPC */ /* MAIN *****/ main (argc,argv) int argc; char *argv[]; { char *server; server = (char *)malloc (sizeof (char *)); if (argc!=2) LINEA *tempgh=null; /* definizione di analizza_gh_1 */ LINEA *analizza_gh_1(gh) LINEA *gh; { if (!tempgh) {.. { fprintf(stderr,"sintassi: %s server \ninserire nome del server:\t", argv[0]); scanf("%s",server); } else (strcpy(server,argv[1]));...

31 RPC sincrono ed asincrono 2-12 a) Interconnessione tra client e server nell RPC tradizionale b) L interazione mediante un RPC asincrono Università di Bari Informatica magistrale Corso di sistemi distribuiti

32 Dalla chiamata a procedura alla Ad esempio RMI invocazione di metodi (O-O) RMI è il meccanismo fornito da Java per invocare metodi di oggetti distribuiti su macchine virtuali diverse sparse sulla rete. Con l'rmi è possibile passare e ritornare oggetti in modo trasparente durante una chiamata a un metodo oltre che tipi di dati predefiniti.. RMI consente al programmatore di scrivere solo una volta il codice per implementare un oggetto che sarà immediatamente visibile sia al client (tramite la sua interfaccia) che al server (sul quale è implementato).. RMI permette sulle applicazioni distribuite l uso di thread da parte di un server RMI per garantire la gestione ottimale della concorrenza tra oggetti distribuiti.

33 Java Remote Object Invocation (RMI) Java RMI permette di eseguire classi di funzioni remote usando la stessa semantica delle function call locali Local Machine (Client) Remote Machine (Server) SampleServer remoteobject; int s; s = remoteobject.sum(1,2); 1,2 3 public int sum(int a,int b) { return a + b; } System.out.println(s);

34 Remote Method Invocation RMI richiede l utilizzo esclusivo di Java come linguaggio di sviluppo e consiste in: un operazione di LOCALIZZAZIONE DI OGGETTI REMOTI mediante meccanismi di REGITRY degli oggetti, Un operazione di COMUNICAZIONE con gli oggetti remoti mediante funzioni di INVOCAZIONE dei metodi appartenenti ad oggetti remoti da parte dei client, Un operazione di CARICAMENTO delle definizioni delle CLASSI degli oggetti remoti: (Dynamic Code Loading) possibilità di scaricare il bytecode di una classe se la classe non è definita nella virtual machine del ricevente, mantenendo la definizione dei tipi e il loro comportamento Perche RMI? L obiettivo è di permettere ad una applicazione in esecuzione su una macchina locale di invocare i metodi di un oggetto in esecuzione su un altro computer. Si definisce client il programma chiamante che ottiene riferimento all oggetto remoto, server il programma che crea gli oggetti remoti. Tali applicazioni sono anche denominate distributed object application. Quali vantaggi? miglioramento delle prestazione complessive semplicità nella gestione delle risorse distribuite incremento della potenza operativa Ad es: suddivisione di una computazione pesante in procedure più piccole, eseguite tutte su macchine diverse diminuendo in tal modo il tempo complessivo di esecuzione

35 Componenti base dell RMI Client (Interfaccia) Server (Implementazione) Stub Skeleton Remote Reference Layer Remote Reference Layer Transport Layer (Connessione TCP/IP) Un client è dotato dell'interfaccia dei metodi disponibili sul server remoto, ma tutta l'implementazione è lasciata sul lato server. Nel programma client i dettagli dell'implementazione dei metodi remoti sono quindi invisibili. Ciò che realmente collega il client e il server in un sistema RMI è una connessione stratificata, trasparente agli sviluppatori, effettuata dal sottosistema RMI delle due macchine virtuali coinvolte.

36 Lo Stub e lo Skeleton RMI Client Stub call skeleton RMI Server return Il client invoca un metodo remoto sul proprio stub. Lo stub è responsabile della spedizione del call remoto allo skeleton del server. Lo stub apre una socket con il server, facendo il marshalling (serializzazione) dei parametri ed inviando allo skeleton del server un data stream. Lo skeleton del server contiene un metodo per ricevere i remote call dai client, per deserializzare (unmarshalling) i parametri ed invocare l implementazione dell oggetto remoto (a lui locale). Università di Bari Informatica magistrale Corso di sistemi distribuiti

37 Architettura generale di RMI Il server deve innanzitutto registrarsi (bind ad un registry) Il client cerca il nome del server nel registry per stabilire i riferimenti remoti. Lo Stub serializza i parametri verso lo skeleton sul server localizzato. Lo Skeleton invoca il metodo remoto (locale al server) e serializza il risultato verso il client stub. Remote Machine bind RMI Server Registry skeleton return call lookup stub RMI Client Local Machine Università di Bari Informatica magistrale Corso di sistemi distribuiti

38 Architettura di RMI La struttura di un applicazione RMI è organizzata in strati orizzontali sovrapposti Simulazione locale sul client RMI Client Stubs Java Virtual Machine RMI Server Skeleton Oggetto reale eseguito sul server Il primo livello di questa connessione stratificata è rappresentato dagli stub (lato client) e gli skeleton (loto server) ai quali si riferiscono rispettivamente il client e il server senza occuparsi di ulteriori dettagli di più basso livello. Remote Reference Layer Transport Layer Connessione virtuale Connessione fisica Remote Reference Layer Transport Layer A loro volta gli stub e gli skeleton d e m a n d a n o l'esecuzione di ciascuna a t t i v i t à a l l o s t r a t o immediatamente sottostante: il remote reference layer (RRL) che gestisce i riferimenti delle variabili agli oggetti remoti, usando la connessione TCP/IP del Transport layer sottostante.

39 Architettura di RMI Ø Lo strato più alto è costituito da applicazioni (client e server) eseguite dalla Java Virtual Machine. Ø Lo stub e lo skeleton forniscono la rappresentazione dell oggetto remoto: lo stub gestisce la simulazione locale sul client e, agendo come proxy, consente la comunicazione con l oggetto remoto; lo skeleton invece consente l esecuzione dell oggetto remoto sul server. Ø Il client esegue i metodi dell oggetto remoto in modo del tutto analogo alla chiamata locale: ris = OggettoRemoto. nomemetodo (par1, par2,..) senza preoccuparsi dei dettagli della comunicazione. Università di Bari Informatica magistrale Corso di sistemi distribuiti

40 Passaggio di parametri ü Qualsiasi classe, i cui oggetti devono essere trasmessi con una connessione RMI, deve essere dichiarata come tale indicando che deve implementare l'interfaccia java.io.serializable. ü Ogni parametro passato o ritornato da un metodo remoto deve essere o un oggetto di una classe primitiva Java, o un tipo di dato primitivo oppure un oggetto che implementa l'interfaccia java.io.serializable. ü Un client richiede al server un riferimento ad un oggetto usando lo stub sul lato client. Il server ottiene la richiesta dallo skeleton sul lato server. ü Tra i due c'è il remote reference layer che negozia le richieste convertendo gli oggetti in un formato trasmissibile attraverso la rete. Questa conversione è chiamata marshalling. ü Se i dati da trasmettere non sono né primitivi né serializzabili, lo stub lancerà un'eccezione MarshalException. Percorso dei parametri: Serializzati dalla Virtual Machine Inviati sotto forma di stream al server Deserializzati del server che li utilizza all interno del corpo del metodo invocato Il risultato segue il percorso inverso fino ad arrivare al client

41 La serializzazione Il meccanismo alla base utilizzato da RMI per la trasmissione dei dati fra client e server è quello della serializzazione che permette il flusso di dati complessi all interno di stream (può venir usata indipendentemente da applicazioni RMI). La serializzazione consiste nella trasformazione automatica di oggetti e strutture in sequenze di byte manipolabili coi vari stream del package java.io Gli stream sono associabili sia a socket che a file ad es: Record record = new Record() ObjectOutputStream oos = new ObjectOutputStream(myos) oos.writeobject(record);

42 La serializzazione (2) Un oggetto è serializzabile se implementa l interfaccia Serializable Si possono serializzare oggetti con struttura e complessità arbitraria, senza particolari differenze, a patto che l oggetto sia serializzabile (implementi cioè l interfaccia Serializable) Ad es: public class Record implements Serializable{ private String Nome; public Record(String Nome){ this.nome = Nome } } La serializzazione è ricorsiva ( un oggetto serializzabile deve contenere oggetti serializzabili) La maggior parte delle classi del JDK è serializzabile (eccetto alcune che adottano strutture dati binarie dipendenti dalla piattaforma)

43 Gli strati RRL e TL Si occupano della gestione a basso livello ( all interno dell architettura RMI) della comunicazione. Il Remote Reference Layer (RRL) ha il compito di instaurare un connessione virtuale fra il client e il server ( esegue operazioni di codifica e decodifica dei dati). RRL adotta un protocollo generico e indipendente dal tipo di stub o skeleton utilizzato. Il Transport Layer esegue la connessione vera e propria tra le macchine utilizzando le specifiche standard di networking di Java, e quindi le socket con il protocollo TCP/IP. Il TL è quindi responsabile del controllo dello stato delle vari connessioni. Il TL si incarica di localizzare il server RMI relativo all oggetto remoto richiesto ed segue la connessione per mezzo di una socket. Università di Bari Informatica magistrale Corso di sistemi distribuiti

44 SVILUPPARE UN APPLICAZIONE RMI Così come altre applicazioni scritte in Java, un applicazione distribuita costruita con RMI è fatta sostanzialmente di interfacce e classi. Le interfacce dichiarano i metodi. Le classi implementano i metodi dichiarati nelle interfacce più altri metodi, se necessario. In una applicazione distribuita certe classi (implementazioni di metodi) possono non risiedere su una particolare macchina virtuale ma possono essere disponibili in remoto su altre macchine virtuali (oggetti remoti). Un oggetto diventa remoto implementando una interfaccia remota con le seguenti caratteristiche: Una interfaccia remota ESTENDE (extends) l interfaccia java.rmi.remote. Ciascun metodo dell interfaccia DICHIARA (declares) java.rmi.remoteexception nella sua clausola throws, oltre alle altre eccezioni specifiche della particolare applicazione.

45 SVILUPPARE UN APPLICAZIONE RMI Le classi e i metodi sono contenuti nei package java.rmi e java.rmi.server. Ø Disegnare ed implementare le componenti dell applicazione distribuita. Definire l interfaccia remota ( i metodi che possono essere invocati in remoto dai client ), con i tipi di oggetti che potranno essere usati (come i parametri e i valori di ritorno di questi metodi ) Implementare gli oggetti remoti che devono implementare una o più interfacce remote. Si definisce oggetto remoto un oggetto che implementi l interfaccia Remote i cui metodi possono essere eseguiti da un applicazione client posta su un altra macchina virtuale. Implementare il programma client. Ø Compilare i sorgenti con Javac (ed rmic con piattaforme Java antecedenti alla 5.0) e generare lo stub e lo skeleton. Ø Rendere accessibili in rete le classi (start dell RMI registry). Ø Start dell applicazione server e run del client. Università di Bari Informatica magistrale Corso di sistemi distribuiti

CdL MAGISTRALE in INFORMATICA A.A. 2014-2015. corso di Sistemi Distribuiti. Le Socket

CdL MAGISTRALE in INFORMATICA A.A. 2014-2015. corso di Sistemi Distribuiti. Le Socket CdL MAGISTRALE in INFORMATICA A.A. 2014-2015 corso di Sistemi Distribuiti 6. Strumenti per l IPC : dalle socket a RPC/RMI Prof. S.Pizzutilo Le Socket Una socket è una astrazione software rappresentante

Dettagli

InterProcess Communication (IPC)

InterProcess Communication (IPC) CdL MAGISTRALE in INFORMATICA A.A. 2013-2014 corso di Sistemi Distribuiti 5. IPC (Inter Process Communication) (parte 2): da RPC a RMI Prof. S.Pizzutilo InterProcess Communication (IPC) Modelli e tecnologie

Dettagli

Applicazioni distribuite e sistemi ad oggetti distribuiti. RPC RMI - Web Services 1

Applicazioni distribuite e sistemi ad oggetti distribuiti. RPC RMI - Web Services 1 Applicazioni distribuite e sistemi ad oggetti distribuiti RPC RMI - Web Services 1 Complessità delle applicazioni distribuite La scrittura di applicazioni distribuite basate sull utilizzo di protocolli

Dettagli

Chiamate a Procedure Remote

Chiamate a Procedure Remote FACOLTA DI SCIENZE MATEMATICHE, FISICHE E NATURALI Corso di Laurea Magistrale in Informatica Corso di Sistemi Distribuiti Anno Accademico 2012/2013 Relazione sullo sviluppo di Chiamate a Procedure Remote

Dettagli

Reti (già Reti di Calcolatori )

Reti (già Reti di Calcolatori ) Reti (già Reti di Calcolatori ) Cenni di Socket Programming Renato Lo Cigno http://disi.unitn.it/locigno/index.php/teaching-duties/computer-networks Socket API Programmazione dei socket Obiettivo:imparare

Dettagli

MODELLI ISO/OSI e TCP/IP

MODELLI ISO/OSI e TCP/IP PARTE I - Reti di Calcolatori ed Internet MODELLI ISO/OSI e TCP/IP Reti di Calcolatori Livelli e Servizi Il modello OSI Il modello TCP/IP Un confronto tra OSI e TCP/IP ARPANET Ethernet Reti ATM reti wireless

Dettagli

Architettura di rete. Modelli di Riferimento: TCP/IP e OSI. Modello di riferimento OSI. Modelli di riferimento. architettura di rete

Architettura di rete. Modelli di Riferimento: TCP/IP e OSI. Modello di riferimento OSI. Modelli di riferimento. architettura di rete I semestre 02/03 Modelli di Riferimento: TCP/IP e OSI Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/~auletta/ Architettura di rete architettura di rete insieme delle specifiche funzionali

Dettagli

Oggetti Distribuiti e Java RMI

Oggetti Distribuiti e Java RMI Oggetti Distribuiti e Java RMI Oggetti Locali - Oggetti Distribuiti Oggetti Locali: sono oggetti i cui metodi possono essere invocati solo da un processo locale, cioè da un processo in esecuzione sulla

Dettagli

Mariarosaria Napolitano. Architettura TCP/IP. Corso di: Laboratorio di tecnologie informatiche e telematiche

Mariarosaria Napolitano. Architettura TCP/IP. Corso di: Laboratorio di tecnologie informatiche e telematiche Mariarosaria Napolitano Architettura TCP/IP Corso di: Laboratorio di tecnologie informatiche e telematiche Contesto e Prerequisiti Contesto E' rivolto agli studenti del V anno degli Istituti Tecnici Industriali

Dettagli

Java Remote Method Invocation

Java Remote Method Invocation Java Remote Method Invocation Programmazione in Rete e Laboratorio Comunicazione distribuita Port1 Java VM1 Java VM2 Port 2 Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino

Dettagli

Laboratorio di Programmazione in rete

Laboratorio di Programmazione in rete Laboratorio di rogrammazione in rete Introduzione alla programmazione C di socket A.A. 2005/06 Comunicazione tra computer Come far comunicare più computer su una rete? Una collezione di protocolli: TC/I

Dettagli

TCP/IP : Livello 3 di rete ARP (Address Resolution Protocol)

TCP/IP : Livello 3 di rete ARP (Address Resolution Protocol) Anno Accademico 2013-2014 CdS in INFORMATICA e COMUNICAZIONE DIGITALE Lucidi del corso di Reti di Calcolatori e Comunicazione Digitale Modulo 5 - TCP/IP : i protocolli del livello 3 e 4 Prof. Sebastiano

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione

Dettagli

ISO- OSI e architetture Client-Server

ISO- OSI e architetture Client-Server LEZIONE 9 ISO- OSI e architetture Client-Server Proff. Giorgio Valle Raffaella Folgieri giorgio.valle@unimi.it folgieri@dico.unimi.it Lez 10 modello ISO-OSI e architettura client-server 1 Nelle scorse

Dettagli

Programmazione in Rete

Programmazione in Rete Programmazione in Rete a.a. 2005/2006 http://www.di.uniba.it/~lisi/courses/prog-rete/prog-rete0506.htm dott.ssa Francesca A. Lisi lisi@di.uniba.it Orario di ricevimento: mercoledì ore 10-12 Sommario della

Dettagli

RMI. Remote Method Invocation. Enrico Tassi, 3/4/2009. Slides originali di Nicola Gessa

RMI. Remote Method Invocation. Enrico Tassi, 3/4/2009. Slides originali di Nicola Gessa RMI Remote Method Invocation Enrico Tassi, 3/4/2009 Slides originali di Nicola Gessa Remote Method Invocation Si colloca del mondo della programmazione distribuita. L obiettivo è di fornire al programmatore

Dettagli

Le Reti Informatiche

Le Reti Informatiche Le Reti Informatiche modulo 8 Prof. Salvatore Rosta www.byteman.it s.rosta@byteman.it 1 Il Livello di Trasporto: 1 L utente non ha il controllo sulla rete; non può risolvere i problemi di un servizio inadeguato

Dettagli

Sistemi Operativi (modulo di Informatica II) La comunicazione tra processi

Sistemi Operativi (modulo di Informatica II) La comunicazione tra processi Sistemi Operativi (modulo di Informatica II) La comunicazione tra processi Patrizia Scandurra Università degli Studi di Bergamo a.a. 2009-10 Sommario Processi cooperanti La comunicazione tra processi Necessità

Dettagli

Le Reti Informatiche

Le Reti Informatiche Le Reti Informatiche modulo 2 Prof. Salvatore Rosta www.byteman.it s.rosta@byteman.it 1 Commutazione di Circuito Le reti telefoniche utilizzano la tecnica della commutazione di circuito. I commutatori

Dettagli

Corso di Reti di Calcolatori L-A

Corso di Reti di Calcolatori L-A Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 9 (svolta) RPC: Inizializzazione Strutture Dati sul Server Luca Foschini Anno accademico 2010/2011

Dettagli

Modello a scambio di messaggi

Modello a scambio di messaggi Modello a scambio di messaggi Aspetti caratterizzanti il modello Canali di comunicazione Primitive di comunicazione 1 Aspetti caratterizzanti il modello modello architetturale di macchina (virtuale) concorrente

Dettagli

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione I semestre 03/04 Comunicazione tra Computer Protocolli Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in Informatica 2

Dettagli

Chiamata remota di metodi

Chiamata remota di metodi Chiamata remota di metodi Architettura di Java RMI Esecuzione di una Java RMI Architettura di RMI client server Stub & Skeleton Stub & Skeleton Remote Reference Remote Reference Trasporto Ciascun livello

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7

Dettagli

corso di Sistemi Distribuiti 4. IPC (Inter Process Communication) (parte 1): le forme ed i modelli della comunicazione tra processi

corso di Sistemi Distribuiti 4. IPC (Inter Process Communication) (parte 1): le forme ed i modelli della comunicazione tra processi CdL MAGISTRALE in INFORMATICA A.A. 2014-2015 corso di Sistemi Distribuiti 4. IPC (Inter Process Communication) (parte 1): le forme ed i modelli della comunicazione tra processi Prof. S.Pizzutilo Elementi

Dettagli

SISTEMI DI ELABORAZIONE

SISTEMI DI ELABORAZIONE SISTEMI DI ELABORAZIONE CORSO DI LAUREA MAGISTRALE IN INGEGNERIA ELETTRONICA SPECIFICHE DI PROGETTO A.A. 2011/2012 Il progetto consiste nello sviluppo di un applicazione client/server. Client e server

Dettagli

SISTEMI OPERATIVI DISTRIBUITI

SISTEMI OPERATIVI DISTRIBUITI SISTEMI OPERATIVI DISTRIBUITI E FILE SYSTEM DISTRIBUITI 12.1 Sistemi Distribuiti Sistemi operativi di rete Sistemi operativi distribuiti Robustezza File system distribuiti Naming e Trasparenza Caching

Dettagli

Architetture di rete. 4. Le applicazioni di rete

Architetture di rete. 4. Le applicazioni di rete Architetture di rete 4. Le applicazioni di rete Introduzione L avvento di tecnologie (hw, sw, protocolli) di rete avanzate ha permesso la nascita di architetture software molto evolute che permettono lo

Dettagli

Primi passi col linguaggio C

Primi passi col linguaggio C Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta

Dettagli

Reti di calcolatori TCP/IP. Slide a cura di Simon Pietro Romano

Reti di calcolatori TCP/IP. Slide a cura di Simon Pietro Romano Reti di calcolatori TCP/IP Slide a cura di Simon Pietro Romano spromano@unina.it Il livello rete Stack ISO/OSI Applicazione Presentazione Sessione Trasporto Rete Data Link Fisico Corso di Tecnologie dei

Dettagli

Laboratorio di Programmazione in Rete

Laboratorio di Programmazione in Rete Laboratorio di rogrammazione in Rete a.a. 2005/2006 http://www.di.uniba.it/~lisi/courses/prog-rete/prog-rete0506.htm dott.ssa Francesca A. Lisi lisi@di.uniba.it Orario di ricevimento: mercoledì ore 10-12

Dettagli

Il Modello a scambio di messaggi

Il Modello a scambio di messaggi Il Modello a scambio di messaggi 1 Interazione nel modello a scambio di messaggi Se la macchina concorrente e` organizzata secondo il modello a scambio di messaggi: PROCESSO=PROCESSO PESANTE non vi è memoria

Dettagli

Internetworking with TCP/IP (Douglas E. Comer) Vol. I and Vol III.

Internetworking with TCP/IP (Douglas E. Comer) Vol. I and Vol III. Internetworking with TCP/IP (Douglas E. Comer) Vol. I and Vol III http://gapil.truelite.it/ http://www.linuxdidattica.org/docs/a ltre_scuole/planck/socket/ Client Server Esistono vari modelli di architettura

Dettagli

RMI. Java RMI RMI. G. Prencipe prencipe@di.unipi.it

RMI. Java RMI RMI. G. Prencipe prencipe@di.unipi.it Java Remote Method Invocation -- RMI G. Prencipe prencipe@di.unipi.it RMI RMI è una tecnologia JAVA che permette a una JVM di comunicare con un altra JVM per farle eseguire metodi È possibile che oggetti

Dettagli

Lo strato di applicazione in Internet

Lo strato di applicazione in Internet Lo strato di applicazione in Internet Prof. Ing. Carla Raffaelli a.a. 2004/2005 Protocolli applicativi Sono i protocolli utilizzati dalle applicazioni per scambiarsi informazioni Esempi: HTTP per il web,

Dettagli

Sistemi Operativi: Concetti Introduttivi

Sistemi Operativi: Concetti Introduttivi Sistemi Operativi: Concetti Introduttivi 1.1 Principali funzioni di un Sistema Operativo 1.2 Cenni Storici 1.3 Classificazione dei Sistemi Operativi 1.4 Struttura dei Sistemi Operativi 1.5 Processi e gestione

Dettagli

Esercizi su UDP. Esercitazione di Laboratorio di Programmazione di Rete A. Daniele Sgandurra 22/10/2008. Università di Pisa

Esercizi su UDP. Esercitazione di Laboratorio di Programmazione di Rete A. Daniele Sgandurra 22/10/2008. Università di Pisa Esercizi su UDP Esercitazione di Laboratorio di Programmazione di Rete A Daniele Sgandurra Università di Pisa 22/10/2008 Un Tipico Client UDP Un client UDP invia datagrammi ad un server in attesa di essere

Dettagli

Componenti di un sistema operativo

Componenti di un sistema operativo Componenti di un sistema operativo Dipartimento di Informatica Università di Verona, Italy Componenti di un S.O. Gestione dei processi Gestione della memoria primaria Gestione della memoria secondaria

Dettagli

Serializzazione Java. Serializzazione. Calendario esercitazioni e laboratori. Applicazioni della Serializzazione

Serializzazione Java. Serializzazione. Calendario esercitazioni e laboratori. Applicazioni della Serializzazione Calendario esercitazioni e laboratori 29 Marzo esercitazione 12 Aprile esercitazione 26 Aprile laboratorio (lab721) 2 Maggio laboratorio (lab721) 3 Maggio esercitazione 9 Maggio laboratorio (???) 17 Maggio

Dettagli

Introduzione a Java Remote Method Invocation (RMI)

Introduzione a Java Remote Method Invocation (RMI) Introduzione a Java Remote Method Invocation (RMI) SAPIENZA Università di Roma Corso di Architetture Software Orientate ai Servizi E risuona il mio barbarico yawp sopra i tetti del mondo ( I sound my barbaric

Dettagli

Informatica. Dipartimento di Economia. Ing. Cristiano Gregnanin. 8 novembre Corso di laurea in Economia

Informatica. Dipartimento di Economia. Ing. Cristiano Gregnanin. 8 novembre Corso di laurea in Economia Informatica Dipartimento di Economia Ing. Cristiano Gregnanin Corso di laurea in Economia 8 novembre 2016 1 / 28 Rete informatica La rete informatica è la condivisione d informazioni o servizi. un computer

Dettagli

Sistemi Operativi (modulo di Informatica II)

Sistemi Operativi (modulo di Informatica II) Sistemi Operativi (modulo di Informatica II) La comunicazione tra processi Patrizia Scandurra Università degli Studi di Bergamo a.a. 2008-09 Sommario Processi cooperanti La comunicazione tra processi Necessità

Dettagli

ACSO Programmazione di Sistema e Concorrente

ACSO Programmazione di Sistema e Concorrente ACSO Programmazione di Sistema e Concorrente P2 Modello Thread 2/12/2015 programma e parallelismo il tipo di parallelismo dipende dal grado di cooperazione (scambio di informazione) necessario tra attività

Dettagli

Reti di Calcolatori Servizi di Rete Laboratorio di Didattica in Rete

Reti di Calcolatori Servizi di Rete Laboratorio di Didattica in Rete Reti di Calcolatori Servizi di Rete Laboratorio di Didattica in Rete Reti di calcolatori Protocolli di Trasmissione: Il modello ISO/OSI L architettura TCP/IP Protocolli di trasmissione Un protocollo di

Dettagli

Corso di Sistemi di Misura Distribuiti. Ing. Domenico Capriglione

Corso di Sistemi di Misura Distribuiti. Ing. Domenico Capriglione Corso di Sistemi di Misura Distribuiti Ing. Domenico Capriglione capriglione@unicas.it ARCHITETTURE CLIENT-SERVER I PROTOCOLLI TCP/IP E UDP ARCHITETTURE CLIENT-SERVER Cosa è un applicazione Client-Server?

Dettagli

Connessioni di rete. Progetto di reti di Calcolatori e Sistemi Informatici - Stefano Millozzi. PdR_09010 - Stefano Millozzi

Connessioni di rete. Progetto di reti di Calcolatori e Sistemi Informatici - Stefano Millozzi. PdR_09010 - Stefano Millozzi Connessioni di rete Progetto di reti di Calcolatori e Sistemi Informatici - Stefano Millozzi 1 Socket orientato alla connessione o non orientato alla connessione 2 Socket in astratto 3 Socket modalità

Dettagli

Socket & RMI Ingegneria del Software - San Pietro

Socket & RMI Ingegneria del Software - San Pietro Socket & RMI Ingegneria del Software - San Pietro Socket È possibile trattare la comunicazione di rete allo stesso modo con cui è possibile trattare la lettura da file. La classe Socket rappresenta la

Dettagli

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE Input/output da file Il linguaggio C non contiene istruzioni di I/O, in quanto tali operazioni vengono eseguite tramite funzioni di libreria standard. Questo approccio rende estremamente flessibile e potente

Dettagli

LABORATORIO di Reti di Calcolatori

LABORATORIO di Reti di Calcolatori LABORATORIO di Reti di Calcolatori Architetture client-server 1 of 12 v slide della docente Bibliografia v testo di supporto: D. Maggiorini, Introduzione alla programmazione client-server, Pearson Ed.,

Dettagli

Numero NaviDimensione Nave

Numero NaviDimensione Nave RETI INFORMATICHE - SPECIFICHE DI PROGETTO AA. 2011/2012 1 1.1RETI INFORMATICHE CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2011/2012 Il progetto consiste nello sviluppo di un

Dettagli

Le basi del linguaggio Java

Le basi del linguaggio Java Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una

Dettagli

Programmazione distribuita

Programmazione distribuita Programmazione distribuita 1 Architettura client-server È il modo classico di progettare applicazioni distribuite su rete Server offre un servizio "centralizzato" attende che altri (client) lo contattino

Dettagli

2: Architettura delle reti e modello OSI

2: Architettura delle reti e modello OSI 1 1 2: Architettura delle reti e modello OSI Architettura di rete 2 Una rete è costituita da componenti hardware (cavi, interfacce, circuiti integrati, processori, RAM, ) e componenti software (per la

Dettagli

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma. Unità Didattica 1 Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C UNIX (1969) - DEC PDP-7 Assembly Language BCPL - un OS facilmente accessibile che fornisce potenti strumenti

Dettagli

Centralizzata Monolitica anni Reti Client Server anni Internet The network is the computer

Centralizzata Monolitica anni Reti Client Server anni Internet The network is the computer Distributed Object C o m p utin g "!$#&% ')(+*,#&-).0/2143657*98:.;8

Dettagli

IPC Inter Process Communication

IPC Inter Process Communication Il protocollo TCP controlla che la trasmissione tra due end points avvenga correttamente. Non stabilisce alcun criterio su chi deve iniziare la comunicazione. Questo compito è svolto dalle applicazioni

Dettagli

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat. Il compito è costituito da domande chiuse, domande aperte ed esercizi. Non è consentito l uso di libri, manuali, appunti., etc. Tempo massimo 2 ore. Domande chiuse: ogni domanda corrisponde ad un punteggio

Dettagli

Il livello trasporto: Introduzione e protocollo UDP

Il livello trasporto: Introduzione e protocollo UDP Corso di Laurea in Ingegneria Informatica Corso di Reti di Calcolatori a.a. 2009/10 Roberto Canonico (roberto.canonico@unina.it) Antonio Pescapè (pescape@unina.it) Il livello trasporto: Introduzione e

Dettagli

Programmazione di sistemi distribuiti

Programmazione di sistemi distribuiti Programmazione di sistemi distribuiti I Sistemi Distribuiti, per loro natura, prevedono che computazioni differenti possano essere eseguite su VM differenti, possibilmente su host differenti, comunicanti

Dettagli

Sistemi Operativi SISTEMI DI INPUT/OUTPUT. D. Talia - UNICAL. Sistemi Operativi 10.1

Sistemi Operativi SISTEMI DI INPUT/OUTPUT. D. Talia - UNICAL. Sistemi Operativi 10.1 SISTEMI DI INPUT/OUTPUT 10.1 Sistemi I/O Hardware di I/O Interfaccia di I/O per le applicazioni Sottosistema per l I/O del kernel Trasformazione delle richieste di I/O Stream Prestazioni 10.2 I/O Hardware

Dettagli

Perché il linguaggio C?

Perché il linguaggio C? Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare

Dettagli

COMUNICAZIONE TRA PROCESSI REMOTI IN UNIX

COMUNICAZIONE TRA PROCESSI REMOTI IN UNIX A cura del prof. Gino Tombolini 1 COMUNICAZIONE TRA PROCESSI REMOTI IN UNIX Il sistema UNIX TCP/IP fornisce un meccanismo di comunicazione tra processi residenti su nodi distinti di una rete, compatibili

Dettagli

Lezione 16. Il Software di base

Lezione 16. Il Software di base Lezione 16 Software di base Il Software di base Con il termine software di base si intende l insieme dei programmai che consentono ad un utente di eseguire operazioni base come costruire e mandare in esecuzione

Dettagli

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Ing. Gianluca Caminiti Sommario ( OOP ) Programmazione Object-Oriented Incapsulamento, Ereditarietà, Polimorfismo Richiami

Dettagli

RMI Remote Method Invocation

RMI Remote Method Invocation RMI Remote Method Invocation [Pagina intenzionalmente vuota] (1 12 2004) slide 4:1/18 (p.106) Un applicazione RMI è un applicazione distribuita ad oggetti. Applicazione RMI tipica, strutturata in: server:

Dettagli

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica Corso di Laurea Ingegneria Informatica Laboratorio di Informatica Capitolo 4 Traduzione ed esecuzione di programmi Ottobre 2006 Traduzione ed esecuzione di programmi 1 Nota bene Alcune parti del presente

Dettagli

Modelli di interazione tra processi

Modelli di interazione tra processi Modelli di interazione tra processi Modello a memoria comune (ambiente globale, global environment) Modello a scambio di messaggi (ambiente locale, message passing) 1 Modello a memoria comune Il sistema

Dettagli

Programmazione di rete in Java

Programmazione di rete in Java Programmazione di rete in Java Reti di calcolatori Una rete di calcolatori è un sistema che permette la condivisione di dati informativi e risorse (sia hardware sia software) tra diversi calcolatori. Lo

Dettagli

Sistemi Distribuiti. Anno Accademico 2005-06 Prof. Flavio De Paoli. Il modello ad oggetti

Sistemi Distribuiti. Anno Accademico 2005-06 Prof. Flavio De Paoli. Il modello ad oggetti Sistemi Distribuiti Anno Accademico 2005-06 Prof. Flavio De Paoli 1 Il modello ad oggetti 2 Distributed Objects 2-16 Common organization of a remote object with client-side proxy. 3 Caratteristiche Oggetti

Dettagli

Lezione n.9. RMI: Remote Method Invocation 1/12/2009 Andrea Corradini

Lezione n.9. RMI: Remote Method Invocation 1/12/2009 Andrea Corradini Università degli Studi di Pisa Dipartimento di Informatica Lezione n.9 LPR-B-09 RMI: Remote Method Invocation 1/12/2009 Andrea Corradini Lezione 9: RMI - Remote Method Invocation Andrea Corradini 1 Da

Dettagli

Modelli di interazione tra processi

Modelli di interazione tra processi Modelli di interazione tra processi Modelli di interazione Modello a memoria comune (ambiente globale) Modello a scambio di messaggi (ambiente locale, message passing) Modello a memoria comune Il sistema

Dettagli

Sistemi Operativi. Sistemi I/O SISTEMI DI INPUT/OUTPUT. Hardware di I/O. Interfaccia di I/O per le applicazioni. Sottosistema per l I/O del kernel

Sistemi Operativi. Sistemi I/O SISTEMI DI INPUT/OUTPUT. Hardware di I/O. Interfaccia di I/O per le applicazioni. Sottosistema per l I/O del kernel SISTEMI DI INPUT/OUTPUT 10.1 Sistemi I/O Hardware di I/O Interfaccia di I/O per le applicazioni Sottosistema per l I/O del kernel Trasformazione delle richieste di I/O Stream Prestazioni 10.2 I/O Hardware

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Dettagli

Sistemi distribuiti e reti di calcolatori

Sistemi distribuiti e reti di calcolatori Sistemi distribuiti e reti di calcolatori 1 Indice Modulazione e trasmissione dei dati Reti di calcolatori Topologia Messaggi e protocolli ISO/OSI Ethernet Architettura client/server Telefonia mobile 2

Dettagli

I SISTEMI OPERATIVI. Insieme di programmi che implementano funzioni essenziali per l uso di un sistema elaboratore.

I SISTEMI OPERATIVI. Insieme di programmi che implementano funzioni essenziali per l uso di un sistema elaboratore. I SISTEMI OPERATIVI Insieme di programmi che implementano funzioni essenziali per l uso di un sistema elaboratore. Le funzioni di un S.O. non sono definibili in modo esaustivo e puntuale così come non

Dettagli

Il livello trasporto: Introduzione e protocollo UDP

Il livello trasporto: Introduzione e protocollo UDP Corsi di Laurea in Ingegneria Informatica Ingegneria delle Telecomunicazioni Ingegneria dell Automazione Corso di Reti di Calcolatori Simon Pietro Romano (spromano@unina.it) Antonio Pescapè (pescape@unina.it)

Dettagli

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso

Dettagli

Introduzione alla rete Internet

Introduzione alla rete Internet Introduzione alla rete Internet Gruppo Reti TLC nome.cognome@polito.it http://www.telematica.polito.it/ INTRODUZIONE ALLE RETI TELEMATICHE - 1 Copyright Quest opera è protetta dalla licenza Creative Commons

Dettagli

Sistemi Distribuiti Multiagente A.A.2010-11 Informatica Magistrale Università di Bari

Sistemi Distribuiti Multiagente A.A.2010-11 Informatica Magistrale Università di Bari Java RMI I lucidi che seguono sono stati prodotti sulla base dei seguenti riferimenti: - Sistemi Distribuiti Dip. Informatica (S.Pizzutilo) - Seminario Java RMI di G.Cozzolongo Java RMI: Remote Method

Dettagli

24 - Possibili approfondimenti

24 - Possibili approfondimenti 24 - Possibili approfondimenti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it

Dettagli

Introduzione a Java. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni

Introduzione a Java. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni Introduzione a Java IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni Linguaggi di programmazione Ogni programma viene scritto utilizzando un linguaggio specializzato, formale e comprensibile da

Dettagli

L interfaccia socket

L interfaccia socket L interfaccia socket Application Programming Interface: API Socket API Procedure base Altre procedure Ordinamento dei byte Interazione client-server orientata alla connessione Interazione client-server

Dettagli

Prof. Pagani corrado JAVA

Prof. Pagani corrado JAVA Prof. Pagani corrado JAVA NASCITA DI JAVA Java è stato creato, a partire da ricerche effettuate alla Stanford University agli inizi degli anni Novanta, da un gruppo di esperti sviluppatori capitanati da

Dettagli

Introduzione. Java HTTP. G. Prencipe

Introduzione. Java HTTP. G. Prencipe Java html e http G. Prencipe prencipe@di.unipi.it Introduzione Tutte le comunicazioni tra client e server Web avvengono mediate il (HyperText Transfer Protocol, attualmente alla versione 1.1), che è un

Dettagli

Descrizione generale dell architettura del sistema e dell interazione tra i suoi componenti. Descrizione del sottosistema di sicurezza locale.

Descrizione generale dell architettura del sistema e dell interazione tra i suoi componenti. Descrizione del sottosistema di sicurezza locale. Descrizione generale dell architettura del e dell interazione tra i suoi componenti. Descrizione del di sicurezza locale. Descrizione delle tecniche supportate dal per l organizzazione e la protezione

Dettagli

Introduzione alle applicazioni di rete

Introduzione alle applicazioni di rete Introduzione alle applicazioni di rete Definizioni base Modelli client-server e peer-to-peer Socket API Scelta del tipo di servizio Indirizzamento dei processi Identificazione di un servizio Concorrenza

Dettagli

Java Virtual Machine. Indipendenza di java dalla macchina ospite. I threads in Java

Java Virtual Machine. Indipendenza di java dalla macchina ospite. I threads in Java programmi sorgente: files.java compilatore Indipendenza di java dalla macchina ospite Programmi java Programmi java Programmi java files.class bytecode linker/loader bytecode bytecode Java API files.class

Dettagli

Modelli di interazione tra processi

Modelli di interazione tra processi Modelli di interazione tra processi Modello a memoria comune (ambiente globale, global environment) Modello a scambio di messaggi (ambiente locale, message passing) 1 Modello a memoria comune Il sistema

Dettagli

Laboratorio di Reti, Corsi A e B. Text-Twist. Progetto di Fine Corso A.A. 2016/17

Laboratorio di Reti, Corsi A e B. Text-Twist. Progetto di Fine Corso A.A. 2016/17 Laboratorio di Reti, Corsi A e B Text-Twist Progetto di Fine Corso A.A. 2016/17 1.Descrizione del problema Il progetto consiste nello sviluppo di un gioco multiplayer online. All inizio di una partita

Dettagli

Fondamenti di Internet e Reti. Antonio Capone, Matteo Cesana, Ilario Filippini, Guido Maier

Fondamenti di Internet e Reti. Antonio Capone, Matteo Cesana, Ilario Filippini, Guido Maier Antonio Capone, Matteo Cesana, Ilario Filippini, Guido Maier 4 - Livello Rete (parte ) Antonio Capone, Matteo Cesana, Ilario Filippini, Guido Maier Strato di rete e strato di trasporto Lo strato di trasporto

Dettagli

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java Fondamenti di Informatica Variabili e Metodi di classe Interfacce e Package Gestione di File in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Variabili di classe: Static Una variabile di classe

Dettagli

Il Sistema Operativo

Il Sistema Operativo Il Sistema Operativo Il sistema operativo Con il termine sistema operativo si intende l insieme di programmi e librerie che opera direttamente sulla macchina fisica mascherandone le caratteristiche specifiche

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014 Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi

Dettagli

Socket. Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server.

Socket. Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Socket Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Tale architettura consente ai sistemi di condividere risorse e cooperare per il raggiungimento

Dettagli

Uso di sniffer ed intercettazione del traffico IP

Uso di sniffer ed intercettazione del traffico IP Uso di sniffer ed intercettazione del traffico IP Massimo Bernaschi Istituto per le Applicazioni del Calcolo Mauro Picone Consiglio Nazionale delle Ricerche Viale del Policlinico, 137-00161 Rome - Italy

Dettagli

MODELLO TCP/IP LIVELLO 4 Trasporto. Il protocollo per il controllo della trasmissione. La gestione degli errori di trasmissione

MODELLO TCP/IP LIVELLO 4 Trasporto. Il protocollo per il controllo della trasmissione. La gestione degli errori di trasmissione Prof.ssa Daniela Decembrino MODELLO /IP LIVELLO 4 Trasporto Il protocollo per il controllo della trasmissione significa Transmission Control Protocol, cioè Protocollo per il Controllo della Trasmissione.

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA2 2.1- Funzioni 1 Prerequisiti Programmazione elementare in Java Tecnica top-down Concetto matematico di funzione Compilazione e link di programmi Esecuzione di funzioni

Dettagli

Esonero di Informatica I. Ingegneria Medica

Esonero di Informatica I. Ingegneria Medica Di seguito sono elencati una serie di domande tipo esonero ; i quiz vogliono dare un sistema di autovalutazione e di confronto allo studente che deve prepararsi alla prova di metà corso. Il numero e l

Dettagli

Sistemi Distribuiti. Informatica B. Informatica B

Sistemi Distribuiti. Informatica B. Informatica B Sistemi Distribuiti Introduzione Che cos è un sistema distribuito? Un sistema distribuito è una collezione di computer indipendenti che appare all utente come un solo sistema coerente Da notare: le macchine

Dettagli

L hardware da solo non è sufficiente per il funzionamento dell elaboratore È necessario introdurre il software:

L hardware da solo non è sufficiente per il funzionamento dell elaboratore È necessario introdurre il software: Il Software L hardware da solo non è sufficiente per il funzionamento dell elaboratore È necessario introdurre il software: un insieme di programmi che permettono di trasformare un insieme di circuiti

Dettagli