Sistemi Distribuiti. Prof. Flavio De Paoli. Message Oriented communication



Documenti analoghi
I Socket. Laboratorio Software M. Grotto R. Farina

Introduzione alle applicazioni di rete

Cenni di programmazione distribuita in C++ Mauro Piccolo

Socket TCP. seconda parte

Socket TCP. prima parte

COMUNICAZIONE TRA PROCESSI REMOTI IN UNIX

Esercitazione [6] Client/Server con Socket

Comunicazione tra Processi

Comunicazione tra Processi

Laboratorio di Programmazione in rete

rsystem Maximiliano Marchesi

Corso di Reti di Calcolatori T

HTTP adaptation layer per generico protocollo di scambio dati

Esercizi (1-2): da: TCP/IP Sockets in C (Donahoo-Calvert)

Paradigma client-server

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ&

Laboratorio di Sistemi Operativi Cognome Nome Mat.

Interprocess Communications - II. Franco Maria Nardini

Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2

IPC Inter Process Communication

J+... J+3 J+2 J+1 K+1 K+2 K+3 K+...

Esercitazione [5] Input/Output su Socket

I/O su Socket TCP: read()

Esercizio 2. Client e server comunicano attraverso socket TCP

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

API e socket per lo sviluppo di applicazioni Web Based

Controllo Winsock di Visual Basic

Inter Process Communication. Laboratorio Software C. Brandolese

Transmission Control Protocol

L API socket ed i daemon

Programmazione dei socket con TCP #2

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Pronto Esecuzione Attesa Terminazione

Socket & RMI Ingegneria del Software - San Pietro

P2-11: BOOTP e DHCP (Capitolo 23)

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

Maschere di sottorete a lunghezza variabile

UDP. Livello di Trasporto. Demultiplexing dei Messaggi. Esempio di Demultiplexing

SISTEMI OPERATIVI DISTRIBUITI

Sistema di protezione (1)

Sistema di protezione (2) Protezione (1)

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Il client deve stampare tutti gli eventuali errori che si possono verificare durante l esecuzione.

GESTIONE DEI PROCESSI

Sistemi Operativi. Processi GESTIONE DEI PROCESSI. Concetto di Processo. Scheduling di Processi. Operazioni su Processi. Processi Cooperanti

Topologia delle reti. Rete Multipoint: ogni nodo è connesso agli altri tramite nodi intermedi (rete gerarchica).

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

Mac Application Manager 1.3 (SOLO PER TIGER)

Sistemi Operativi (modulo di Informatica II)

Reti di Telecomunicazione Lezione 7

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI

Inizializzazione degli Host. BOOTP e DHCP

DATAGRAM SOCKET. Angelastro Sergio Diomede Antonio Viterbo Tommaso

Client - Server. Client Web: il BROWSER

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.

Sistemi Operativi mod. B. Sistemi Operativi mod. B A B C A B C P P P P P P < P 1, >

Esercitazione [8] Pipe e FIFO

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni server

Reti e Sistemi per l Automazione MODBUS. Stefano Panzieri Modbus - 1

Interazione (TCP) Client-Server con le socket

T E O R I A D I P R O G E T T A Z I O N E D E L S O F T W A R E

Sistemi Operativi (modulo di Informatica II) I processi

Siti web centrati sui dati (Data-centric web applications)

Modello dei processi. Riedizione delle slide della Prof. Di Stefano

Sistemi Operativi. Lez. 13: primitive per la concorrenza monitor e messaggi

FPf per Windows 3.1. Guida all uso

ARP (Address Resolution Protocol)

Esercizio sulla gestione di file in Unix

Sistema operativo: Gestione dei processi

SERVICE MANAGER. Architettura Client-Server e Web based di Servizi Specializzati per la Gestione di Periferiche e Connettività

Record locking con la system call fcntl

1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi?

INFORMATICA DISTRIBUITA. lez 4 Livello applicazione

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

IPC: InterProcess Communication

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

LABORATORIO di Reti di Calcolatori

Una semplice applicazione client/server 1

Stampe in rete Implementazione corretta

Esercitazione. Formato di compitini e compiti: domande ed esercizi "closed book" G. Ferrari - Reti di calcolatori.

ESERCIZI DI PROGRAMMAZIONE C IN AMBIENTE UNIX

Applicazioni distribuite

Gestione degli indirizzi

FTP. Appunti a cura del prof. ing. Mario Catalano

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Java Virtual Machine

1. RETI INFORMATICHE CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2013/ Lato client

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

Invio SMS. DM Board ICS Invio SMS

Reti di calcolatori. Reti di calcolatori

Altri tipi di connessione

3. Introduzione all'internetworking

Software di interfacciamento sistemi gestionali Manuale di installazione, configurazione ed utilizzo

Sistemi informativi secondo prospettive combinate

Organizzazione Monolitica

Modellazione del flusso di attività a partire da testo in linguaggio naturale: il caso di una compagnia di assicurazioni

CORSO DI RETI SSIS. Lezione n.2. 2 Novembre 2005 Laura Ricci

Transcript:

Sistemi Distribuiti Prof. Flavio De Paoli 1 Message Oriented communication 2

Message-oriented communication Asincrona Persistente I messaggi vengono conservati dal sistema di comunicazione Transiente I messaggi non vengono conservati se sender/receiver non sono in esecuzione 3 Persistence and Synchronicity in Communication (1) General organization of a communication system in which hosts are connected through a network 2-20 4

Persistence and Synchronicity in Communication (2) Persistent communication of letters back in the days of the Pony Express. 5 Persistence and Synchronicity in Communication (3) a) Persistent asynchronous communication b) Persistent synchronous communication 2-22.1 6

Persistence and Synchronicity in Communication (4) 2-22.2 c) Transient asynchronous communication d) Receipt-based transient synchronous communication 7 Persistence and Synchronicity in Communication (5) e) Delivery-based transient synchronous communication at message delivery f) Response-based transient synchronous communication 8

Message-Oriented Persistent Communication 9 Message-Queuing Model (1) They offer intermediate-term storage capacity for messages, without requiring either the sender or receiver to be active during message transmission. Four combinations for loosely-coupled communications using queues. 2-26 10

Message-Queuing Model (2) Basic interface to a queue in a message-queuing system. Primitive Put Get Poll Notify Meaning Append a message to a specified queue Block until the specified queue is nonempty, and remove the first message Check a specified queue for messages, and remove the first. Never block. Install a handler to be called when a message is put into the specified queue. 11 General Architecture of a Message-Queuing System (1) The relationship between queue-level addressing and network-level addressing. 12

General Architecture of a Message-Queuing System (2) The general organization of a message-queuing system with routers. 2-29 13 Message Brokers The general organization of a message broker in a message-queuing system. 2-30 14

Transient communication 15 L interfaccia socket L'interfaccia a socket è una API Una socket è gestita come un file speciale di Unix (file di input/output) Il processo che crea una socket ottiene un file descriptor Ci sono due tipi di socket passive > accettare chiamate (server) attive > iniziare una conversazione (client) 16

Funzioni per TCP/IP socket connect bind listen accept Crea una nuova socket Stabilisce la connessione con il server Associa una socket a un indirizzo Rende una socket passiva Accetta connessioni su socket passive 17 Funzioni per TCP/IP write read close Per inviare messaggi Per ricevere messaggi Chiude la comunicazione rilasciando la socket 18

Berkeley Sockets (1) Socket primitives for TCP/IP. Primitive Meaning Socket Create a new communication endpoint Bind Attach a local address to a socket Listen Announce willingness to accept connections Accept Block caller until a connection request arrives Connect Actively attempt to establish a connection Send Send some data over the connection Receive Receive some data over the connection Close Release the connection 19 Client e server TCP/IP (a) Server (b) Client 20

Berkeley Sockets (2) Connection-oriented communication pattern using sockets. 21 Client e server UDP/IP (a) Server (b) Client 22

Gli indirizzi dei processi Un processo server è identificato da un indirizzo IP un identificatore di porta struct sockaddr_in { u_short sin_family; /*tipo (es. AF_INET)*/ u_short sin_port; /* protocol port number */ /* (2 bytes = 16 bit in network byte order) */ struct in_addr sin_addr; /* indirizzo IP */ /* (4 bytes = 32 bit in network byte order) */ char sin_zero[8]; /* non usato (inizializzato a zero)*/ }; 23 Come si definisce un indirizzo Un indirizzo si costruisce con funzioni di libreria struct sockaddr_in { u_short sin_family; = getprotobyname() -> h_addrtype u_short sin_port; = getservbyname() -> s_port struct in_addr sin_addr; = gethostbyname() -> h_addr char sin_zero[8]; = bzero() }; 24

Unified Resource Locator (URL) URL uniforma i riferimenti in Internet protocollo://host[:porta]/[nome_risorsa] Esempi http://www.microsoft.com http://developer.netscape.com/docs/wpapers/corba/index.html ftp://sunsite.cnlab-switch.ch/mirror/javasoft/docs/ http://wwwcache.cilea.it:8080/ 25 Esempio di socket attivo La routine active_sock crea una socket attiva per un client TCP/IP int active_sock (char *host, char *service, int port) Restituisce un descrittore di socket attiva o un codice d'errore 26

Esempio di socket passivo La routine passive_sock crea una socket passiva per un server TCP/IP int passive_sock(int port, int qlen) qlen è la lunghezza della coda di chiamate Restituisce un descrittore di socket passiva o messaggio d'errore. 27 Progettare un client L'architettura di un client è concettualmente più semplice di quella di un server È spesso una applicazione convenzionale Ha effetti solo sull utente client Non ci sono problemi di sicurezza 28

Un esempio di client TCP/IP Il servizio echo un client si connette ad un server remoto e gli invia un messaggio, il server rimanda lo stesso messaggio al client È uno strumento per verificare la raggiungibilità di un server provare un protocollo studiare problemi di rotta 29 Un esempio di client TCP/IP Tre tipi di collegamento ad un server per client_echo: % client_echo Client e server sono sulla stessa macchina; % client_echo host_name Il server sta sulla macchinahost_name; % client_echo host_name port_number Il server usa la porta port_number sulla macchinahost_name; 30

Progettare un server Concettualmente un server deve creare una socket assegnargli una porta nota entrare in un ciclo infinito in cui alternare attesa richiesta soddisfa richiesta invia risposta L affidabilità di un server è strettamente dipendente dall affidabilità della comunicazione tra lui e i suoi client 31 Svantaggi nell uso di TCP/IP La modalità connection-oriented determina l impossibilità di rilevare interruzioni sulle connessioni la necessità di prevedere una connessione (una socket) per ogni comunicazione 32

Tipi di Server I server possono essere: iterativi soddisfano una richiesta alla volta concorrenti processo singolo simulano la presenza di un server dedicato concorrenti multi-processo creano server dedicati concorrenti multi-thread creano thread dedicati 33 Progettare un server iterativo Al momento di una richiesta di connessione il server crea una socket temporanea per stabilire una connessione diretta con il client Le eventuali ulteriori richieste per il server verranno accodate alla porta nota per essere successivamente soddisfatte 34

Lo schema logico server loop: accept requests from other machines for matrix multiplication; call matrix_multiply; send results back to requester; ----------------available on server------ double[] matrix_multiply() { perform operation; } 35 Progettare un server iterativo Server S1 server_echo_1. S2.... Legenda: S1 Socket per accettare richieste di connessione S2 Socket per connessioni individuali 36

Svantaggi Viene servito un cliente alla volta, gli altri devono attendere Un server impedisce l evoluzione di molti client Non scala Soluzione: server concorrenti 37 Progettare un server concorrente Un server concorrente può gestire più connessioni contemporaneamente La sua realizzazione può essere simulata con un solo processo (uso della funzione select) reale creando nuovi processi slave (uso della funzione fork) 38

Single-Process (Thread) Concurrent Server 39 Concurrent Single-Process Server in C/Unix Viene creata una socket per ogni client Problema: le operazioni sono sincrone (sospensive) La select() permette di leggere in modo asincrono dai diversi canali di I/O Sospende il processo finché non è possibile fare una operazione di I/O server_echo_2 40

Select system call select Se il canale per le accept è pronto in lettura accept Per ogni canale pronto in lettura read write 41 Select system call #include <sys/types.h> #include <sys/time.h> int select(int maxfdp, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout ); Usa una maschera di bit di lunghezza maxfdp (= max_canali + 1) max_canali è definito in <stdio.h> In System V è la costante FOPEN_MAX In 4.3BSD è dato da getdtablesize() 42

Select system call Usa la maschera di bit di descrittori di file fd_set definita in <sys/types.h> Le macro per manipolare la maschera: FD_ZERO(fd_set *fdset); /* clear all bits in fdset */ FD_SET(int fd, fd_set *fdset); /* turn the bit for fd on in fdset */ FD_CLR(int fd, fd_set *fdset); /* turn the bit for fd off in fdset */ FD_ISSET(int fd, fd_set *fdset); /* test the bit for fd in fdset */ 43 Select system call Una invocazione di select segnala che uno dei file descriptor di readfds è pronto per la lettura, o che uno dei file descriptor di writefd è pronto per la scrittura, o che uno dei file descriptor di exceptfds è in una eccezione pendente. Il numero massimo di descrittori esaminati viene indicato con maxfdp. (È pari al massimo valore + 1) 44

Select system call È possibile specificare un timeout Se ha valore 0, allora ritorna subito dopo aver controllato i descrittori; Se ha valore > 0, allora attende che uno dei descrittori sia pronto per l'i/o, ma non oltre il tempo fissato da timeout; Se timeout ha valore NULL, allora attende indefinitamente che uno dei descrittori sia pronto per l'i/o. (si può interrompere l'attesa con una signal) 45 Multi-Process (Thread) Concurrent Server 46

Condivisione del canale x=read(s); println(x); x=read(s); println(x); Process/Thread 1 Possibile output: cef Process/Thread 2 Possibile output: abd porta/socket Client write(s, abcdef ); 47 Lo schema logico server loop: accetta richieste da altre macchine per la moltiplicazione di matrici; attiva un nuovo thread e passa ad esso la richiesta; ----------------- double[] matrix_multiply() { fai l operazione; } /* Ci sono altri modi per farlo */ 48

Concurrent Multi-Process Server in C/Unix Ad ogni richiesta viene creata una socket dedicata una fork genera un figlio per gestire la nuova socket il padre resta in attesa di nuove connessioni Bisogna gestire la corretta terminazione dei figli server_echo_3 49 Concurrent Multi-Thread Server in Java Ad ogni richiesta viene creata una socket dedicata viene generato un Thread per gestire la nuova socket il Thread padre resta in attesa di nuove connessioni server Java 50

Confronto tra i modelli Mono processo (iterativo e concorrente) gli utenti condividono lo stesso spazio di lavoro adatto ad applicazioni cooperative che prevedono la modifica dello stato (lettura e scrittura) Multi processo ogni utente ha uno spazio di lavoro autonomo adatto ad applicazioni autonome o che non modificano lo stato del server (sola lettura) 51 Ulteriori considerazioni Ci sono piu clienti per lo stesso server Ogni server puo fornire piu servizi Ogni server deve gestire piu richieste I client devono mandare le richieste ai server giusti Si vorrebbe evitare che ogni client e ogni server si preoccupino dei problemi legati alla rete 52

Strutture per i server Sono possibili diverse architetture Chi crea i thread? Quando viene creato un thread? Il numero di thread è fisso? Esistono diversi design pattern 53 Un thread per client Il thread coordinatore rileva la presenza di un nuovo client Connette il nuovo client ad un nuovo thread Il nuovo thread: decodifica la richiesta chiama la funzione servente che la soddisfa torna in ciclo per leggere una nuova richiesta 54

Un thread per richiesta Un thread coordinatore riceve una richiesta Ricevuta una richiesta genera un nuovo thread per processarla Il nuovo thread: decodifica la richiesta chiama la funzione servente che la soddisfa termina 55 Un thread per servente Ogni servente ha un proprio thread e una coda Il coordinatore riceve una richiesta e la inserisce nella coda del servente giusto Ogni thread servente legge ciclicamente una richiesta dalla propria coda e la esegue 56

Un pool di thread La creazione dei thread è costosa Il costo di creazione puo essere ammortizzato facendo gestire ad ogni thread molte richieste Un pool di thread potebbe essere creato al momento dell avvio del sistema e assegnato alle richieste man mano vengono ricevute 57 Conclusioni Il protocollo definito dal progettista di basso livello (sequenza di caratteri) codifica e decodifica dei dati Connessione indirizzo fisico conosciuto dal client poca trasparenza Non c è supporto alla gestione creazione e attivazione del server manuale 58