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

Pagina creata da Valeria Colella
 
CONTINUA A LEGGERE
IPC (Inter Process Communication) (parte 1): le forme ed i modelli della comunicazione tra processi - corso di "Sistemi Distribuiti"
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