IPC (Inter Process Communication) (parte 1): le forme ed i modelli della comunicazione tra processi - corso di "Sistemi Distribuiti"
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
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 caratterizzanti la comunicazione tra processi Le performance e l’affidabilità delle tecniche di comunicazione usate per l’implementazione dei S.D. sono critici per le performance dell’intero sistema. Communication Per comunicare occorre 1) capacità di trasferimento di dati da un processo di invio ad un altro processo di ricezione, 2) capacità di sincronizzare le attività di invio e di ricezione. L’openess è realizzata attraverso il disegno e la costruzione di componenti software (interfacce) ben definite. L’astrazione dati è una Software structure importante tecnica di disegno di tali componenti software in cui i servizi possono essere visti come gestori di oggetti di un tipo di dati e l’interfaccia ad un servizio può essere visto come un set di operazioni sul dato. I nomi (e gli identificatori) assegnati alle risorse di un S.D. devono avere un significato globale indipendente dalle locazioni delle risorse e devono essere Naming supportati (gestiti) da un sistema di interpretazione (name service) in grado di tradurli per consentire un accesso trasparente da parte di tutti i nodi del sistema
Le forme della comunicazione memoria p1 condivisa p2 Shared data Message passing p1 p2 Messaggio : blocco di informazioni in un formato deciso dal processo mittente in modo che sia interpretabile dal processo ricevente. Struttura del messaggio : header di lunghezza fissa + oggetti (di dati) di lunghezza variabile header Dati Identificatore del o puntatore Indirizzo indirizzo N. di byte/ tipi dati messaggio processo processo ai dati elementi ricevente mittente CdL in Informatica- Magistrale Università di Bari Sistemi Distribuiti -
I modelli di comunicazione Client-server Function shipping Group multicast Peer to Peer 1) trasmissione di una E’ una estensione del Corrisponde ad un Ogni computer (nodo richiesta da un processo modello client-server message passing con un autonomo ed (client) ad un altro in cui il client non target multiplo, formato indipendente) può processo (server) invia un messaggio da un gruppo di processi operare 2) esecuzione della con solo dati, bensì la destinatari/server. indifferentemente come richiesta sul server procedura intera con In questo caso ad un client o come server, 3) trasmissione di una cui il server deve singolo send corrisponde consentendo accessi risposta dal server al operare sui dati. un receive eseguito da condivisi a diverse client Il server in tal caso ciascun membro di un risorse (come file, Ogni richiesta contiene opera come ambiente gruppo di processi. periferiche e sensori) un identificatore che di esecuzione (o • Per localizzare un senza la necessità di un viene usato anche dal interprete) dei oggetto. server centrale. server per trasmettere programmi che il client •Per aumentare fault Ciò comporta che la risposta al client. gli invia. tolerance. ciascun computer della •Per un multiple update. rete utilizzi programmi compatibili che consentano questo tipo di comunicazione.
Request-reply communication Client Server Request doOperation message getRequest select object (wait) execute Reply method message sendReply (continuation) Tratto da : Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3 © Addison-Wesley Publishers 2000
Primitive di comunicazione Comunicazione basata su due primitive : send e receive send receive receive send I costrutti send e receive realizzano un’azione di MESSAGE PASSING tra processi. L’azione di message passing consiste nella trasmissione ( attraverso un processo di send) di un insieme di valori di dati (messaggio) mediante uno specifico meccanismo di comunicazione (canale o porta) e l’accettazione di tale messaggio da parte di un processo di receive.
Comunicazione sincrona (o bloccante) Spedisce il messaggio puntato da &sptr al processo send (dest, &sptr) identificato da dest e blocca il mittente (client) finchè non sia stato completamente spedito il messaggio receive ( addr, &rptr) Blocca addr finchè non arriva il massaggio nel buffer puntato da &rptr timer Processo Processo client server Processo Processo receiver sender Kernel A Kernel B acknowledge send receive CdL in Informatica- Magistrale Università di Bari Sistemi Distribuiti -
Comunicazione asincrona (o non bloccante) Il message passing ASINCRONO (o non-bloccante) si ottiene quando il messaggio viene posto in coda in attesa che il ricevente lo accetti, senza quindi che il mittente rimanga bloccato in attesa dell’acknowledge. timer Processo receiver Processo sender CdL in Informatica- Magistrale Università di Bari Sistemi Distribuiti -
La sincronìa nella comunicazione Comunicazione sincrona primitiva blocking send (o bloccante) primitiva blocking receive Comunicazione asincrona primitiva non-blocking send (o non bloccante) primitiva non-blocking receive Dopo l’esecuzione della send, il processo che invia il messaggio può riprendere l’esecuzione appena il messaggio viene copiato nel buffer. Il processo ricevente procede con la sua esecuzione dopo l’esecuzione dell’istruzione receive, che restituisce il controllo al processo ricevente immediatamente dopo aver comunicato al kernel l’indirizzo del buffer che contiene il messaggio. Tecniche di sincronizzazione del buffer Polling: una primitiva test permette al ricevente di controllare lo stato del buffer: La primitiva fa un polling del kernel per controllare se il messaggio è stato completamente copiato nel buffer. Interrupt: Appena il messaggio è stato copiato nel buffer ed è pronto per essere letto dal ricevente, viene generato un interrupt per notificare al ricevente lo stato di ready.
Persistenza e Sincronìa nella Comunicazione (1) Comunicazione persistente = un messaggio immesso per essere trasmesso viene memorizzato per tutto il tempo che serve per consegnarlo al destinatario (ad es. e-mail ) 2-22.1 Rif.: A.Tanenbaum,M.Van Steen “Sistemi distribuiti” Pearson Prentice Hall 2007 ) a) Comunicazione persistente asincrona b) Comunicazione persistente sincrona CdL in Informatica- Magistrale Università di Bari Sistemi Distribuiti -
Transienza e Sincronìa nella Comunicazione (2) Comunicazione transiente = un messaggio immesso per essere trasmesso viene memorizzato solo finchè le applicazioni mittente e destinataria sono in esecuzione (ad es. router) sincronìa asincronìa Rif.: A.Tanenbaum,M.Van Steen “Sistemi distribuiti” Pearson Prentice Hall 2007 ) c) Comunicazione transiente asincrona d) Comunicazione transiente sincrona basata su ACK CdL in Informatica- Magistrale Università di Bari Sistemi Distribuiti
Transienza e Sincronìa nella Comunicazione (3) sincronìa Rif.: A.Tanenbaum,M.Van Steen “Sistemi distribuiti” Pearson Prentice Hall 2007 ) e) Comunicazione transiente sincrona basata sulla spedizione f) Comunicazione transiente sincrona basata sulla risposta
InterProcess Communication (IPC) Modelli e tecnologie per la comunicazione e la sincronizzazione fra processi: I tipi di comunicazione: • Comunicazione diretta (es. client/server) e indiretta (es.multicast) • Comunicazione discreta (es. socket) e a flussi (streaming) Le forme ed i modelli della comunicazione : ØSistema di comunicazione basato sui messaggi ( MOM = Message Oriented Middleware). Ø Chiamata a procedura remota (es. RPC) e la comunicazione tra oggetti (es. RMI). Ø Comunicazione Multicast. CdL in Informatica- Magistrale Università di Bari Sistemi Distribuiti
Comunicazione diretta Ø I processi devono “nominare” esplicitamente i loro interlocutori: § send (P, messaggio) – invia un messaggio al processo P § receive(Q, messaggio) – riceve un messaggio dal processo Q Ø Proprietà del canale di comunicazione Ø I canali vengono stabiliti automaticamente. Ø Un canale è associato esattamente a due processi. Ø Tra ogni coppia di processi comunicanti esiste esattamente un canale. Ø Il canale può essere unidirezionale, ma in genere è bidirezionale. CdL in Informatica- Magistrale Università di Bari Sistemi Distribuiti -
Sockets and ports agreed port socket any port socket message client server other ports Internet address = 138.37.94.248 Internet address = 138.37.88.249 Tratto da: Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3 © Addison-Wesley Publishers 2000
Sockets used for streams Requesting a connection Listening and accepting a connection s = socket(AF_INET, SOCK_STREAM,0) s = socket(AF_INET, SOCK_STREAM,0) bind(s, ServerAddress); listen(s,5); connect(s, ServerAddress) sNew = accept(s, ClientAddress); write(s, "message", length) 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
Data Stream Modalità di scambio di sequenze (flussi) di informazioni dipendenti dal tempo e come supporto per media continui. (stream audio-video) Uno stream effettuato tra due applicazioni su due host diversi. Uno stream effettuato direttamente tra due device. Rif.: A.Tanenbaum,M.Van Steen “Sistemi distribuiti” Pearson Prentice Hall 2007 )
Data Stream type Trasmissione sincrona- viene definito un tempo massimo di trasmissione per ogni unità in uno stream di dati. Trasmissione asincrona- dati trasmessi uno dopo l’altro, senza vincoli temporali su quando deve aver luogo la trasmissione dei dati. Trasmissione isocrona – i dati vengono trasferiti in un certo tempo (max e min detto bounded o delay jitter) Stream semplice = sequenza di dati Stream complesso = molti stream semplici in relazione tra di loro (detti substream). Ad es. film con 1 substream video e due substream audio per effetto stereo. CdL in Informatica- Magistrale Università di Bari Sistemi Distribuiti -
Stream e Qualità del Servizio (QoS) I requisiti di tempo sono in genere espressi come requisiti di “Qualità del Servizio” (Quality of Service = QoS) Specifiche del QoS a livello applicativo: 1)Bit rate con cui devono essere trasportati i dati 2)Tempo massimo di set up di una sessione 3)Tempo di trasporto massimo 4)Varianza massima del tempo di trasmissione (jitter) 5)Tempo massimo della risposta CdL in Informatica- Magistrale Università di Bari Sistemi Distribuiti -
Garantire QoS (1) Il principio dell’algoritmo token bucket Il “secchietto di token” è un meccanismo di controllo di trasmissione che determina quando e quanto traffico dati può essere trasmesso in base alla presenza o meno di token (gettoni) in un contenitore astratto (bucket). Il secchiello (bucket) contiene dunque dei token, ciascuno dei quali può rappresentare una unità in byte o un singolo pacchetto di dimensioni predeterminate. Un flusso è autorizzato a trasmettere traffico solo quando sono presenti token nel bucket. • Un token è aggiunto al secchiello ogni 1/r secondi. • Il bucket può contenere al più b token. Se un token arriva quando il bucket è pieno viene scartato. • Quando un pacchetto di n bytes arriva, n token vengono rimossi dal bucket, e il pacchetto viene inviato alla rete. • Se sono disponibili meno di n token, nessun token viene Rif.: A.Tanenbaum,M.Van Steen “Sistemi distribuiti” Pearson rimosso dal bucket, e il pacchetto Prentice Hall 2007 ) viene considerato come non conforme.
Garantire QoS (2) Characteristics of the Input Service Required •maximum data unit size (bytes) •Loss sensitivity (bytes) •Token bucket rate (bytes/sec) •Loss interval (µsec) •Token bucket size (bytes) •Burst loss sensitivity (data units) •Maximum transmission rate •Minimum delay noticed (µsec) (bytes/sec) •Maximum delay variation (µsec) •Quality of guarantee Rif.: A.Tanenbaum,M.Van Steen “Sistemi distribuiti” Pearson Prentice Hall 2007 ) CdL in Informatica- Magistrale Università di Bari Sistemi Distribuiti -
Sincronizzazione degli stream Il principio della sincronizzazione esplicita a livello delle unità di dati CdL in Informatica- Magistrale Università di Bari Sistemi Distribuiti -
Comunicazione indiretta I messaggi vengono inviati a buffer (o porte o mailbox) e da essi ricevuti. ü Ciascun buffer è idendificato con un unico id. ü I processi possono comunicare solamente se condividono un buffer. Proprietà dei canali di comunicazione: Ø Un canale viene stabilito solo se i processi hanno un buffer in comune Ø Un canale può essere associato a più di un processo. Ø Ogni coppia di processi può condividere più canali di comunicazione. Ø I canali possono essere unidirezionali o bidirezionali. Operazioni: u creare un nuovo buffer u inviare e ricevere messaggi attraverso il buffer u distruggere un buffer
Comunicazione indiretta Condivisione di buffer § P1, P2, e P3 condividono il buffer A. § P1, invia; P2 e P3 ricevono (multicast). § Chi prende il messaggio? Soluzioni: ü Permettere ad un canale di essere associato al più a due processi. ü Permettere ad un solo processo alla volta di eseguire un’operazione di ricezione. ü Permettere al sistema di selezionare arbitrariamente il ricevente. Il sistema può comunicare l’identità del ricevente al trasmittente. CdL in Informatica- Magistrale Università di Bari Sistemi Distribuiti -
Buffering La coda dei messaggi legati ad un canale può essere implementata in tre modi: 1. Capacità zero – il canale non può avere messaggi in attesa al suo interno. Il trasmittente deve attendere che il ricevente abbia ricevuto il messaggio (rendezvous). 2. Capacità limitata – lunghezza finita: n messaggi. Il trasmittente deve attendere se il canale è pieno. 3. Capacità illimitata – lunghezza infinita. Il trasmittente non attende mai.
Buffering Il messaggio rimane nello spazio di indirizzi del processo inviante Null buffer ed il processo send rimane sospeso finchè il ricevente non abbia (sincrono) lanciato un processo receive. Il messaggio può anche essere abbandonato dopo un certo intervallo di tempo (timeout) di tentativi di send. Lo stesso meccanismo di timeout può prevedere una nuova Single message spedizione del messaggio. buffer (sincrono) buffer Processo B Processo A messaggio1 Unbounded- messaggio2 messaggio2 capacity buffer (asincrono) Finite-bound buffer (asincrono) CdL in Informatica- Magistrale Università di Bari Sistemi Distribuiti -
Condizioni di eccezione Nella comunicazione bufferizzata, poiché l’inviante non attende che il ricevente sia pronto, vi possono essere molti messaggi in attesa di essere consegnati. La dimensione del buffer potrà essere indefinita o, per rendere realizzabile la comunicazione, dovrà prevedere meccanismi di gestione dell’overflow del buffer: § Gestione di unsuccessful communication (error messages) Terminazione del processo Messaggi perduti Messaggi alterati § Flow-controlled communication (sincronizzazione dei processi attraverso il buffer) Problema generale: il message passing non rende trasparente la comunicazione
Failure handling • perdita request • perdita response Meccanismo di timeout • crash del computer ricevente su acknowledge 4 messages IPC timer protocol 2 messages IPC 3 messages IPC protocol sender protocol t receiver receiver i sender m request request request request e o ackn u t Re-request replay replay replay ackn ackn ackn replay CdL in Informatica- Magistrale Università di Bari Sistemi Distribuiti -
Idempotenza (ripetibilità) Caratteristica operativa in base alla quale un’operazione produce gli stessi risultati indipendentemente da quante volte viene ripetuta comunicazione non-idempotente t request Per ottenere una comunicazione Processo di calcolo con i idempotente (exactly once semantic) , m parametro prodotto replay x’ = x - y si fa uso di un identificatore unico per e o ogni request, per cui il server mantiene u in memoria un data base delle replay; t Processo di calcolo con Re-request parametro prodotto prima di inviare una risposta, il server x’’ = x’ - y controlla che non sia stata già prodotta una risposta per quella particolare replay Replay con valore request x’’ = x’ - y anziché x’ CdL in Informatica- Magistrale Università di Bari Sistemi Distribuiti -
Puoi anche leggere