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.PizzutiloElementi 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
sistemaLe 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 2000Primitive 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 DistribuitiTransienza 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 rispostaInterProcess 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 DistribuitiComunicazione 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 2000Sockets 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 2000Data 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 bufferComunicazione 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 comunicazioneFailure 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