Modelli di sistemi distribuiti

Slides:



Advertisements
Presentazioni simili
Introduzione Cosa sono le reti di Petri?
Advertisements

Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 10/03/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Modelli di sistemi distribuiti
Automi temporizzati.
I sistemi di equazioni di I grado Un sistema di equazioni DEFINIZIONE Un sistema di equazioni è un insieme di due o più equazioni, tutte nelle stesse.
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia
Laboratorio di Architettura Degli Elaboratori1 PSPICE – Circuiti sequenziali.
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi Algoritmi distribuiti 2 Lezione n°10.
Algoritmi Avanzati a.a.2015/2016 Prof.ssa Rossella Petreschi Lezione n°10.
13 gennaio Sistema di rilevazione delle temperature all’interno di Personal Computer Industriali Dipartimento di Ingegneria Elettronica SISTEMA.
CONTROLLO DELLA CONCORRENZA
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
IL SOFTWARE (FPwin 6.0).
© 2007 SEI-Società Editrice Internazionale, Apogeo
Alcune note, dalla rete, sui Sistemi cellulari
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
I Circuiti Sequenziali ed i Flip/Flop
Il Sistema Operativo Programmazione Concorrente
Algoritmi Avanzati a.a.2015/2016 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a. 2010/2011
Branch and Bound Lezione n°14 Prof.ssa Rossella Petreschi
Algoritmi di stima con perdita di pacchetti in reti di sensori wireless: modellizzazione a catene di Markov, stima e stima distribuita Chiara Brighenti,
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Sistema di Analisi e di Acquisizione
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Lezione n°19 Prof.ssa Rossella Petreschi
Protocollo di locking a due fasi stretto
Microcontrollori e microprocessori
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
IL CONCETTO DI ALGORITMO
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2015/2016 Prof.ssa Rossella Petreschi
Progetto Rete Sequenziale Asincrona
Macchine sequenziali Capitolo 4.
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Forme per rappresentare l’algoritmo:
I BUS È un insieme di fili conduttori che permette il passaggio di dati tra le varie periferiche del pc.
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
Usi (meno scontati) della visita DFS
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
K4 è planare? E K3,3 e K5 sono planari? Sì!
Introduzione L’8254 è un interval timer event/counter, progettato per risolvere i problemi del controllo del timing, comuni ad ogni microcomputer. E’ costituito.
per rappresentare grafi
A/D seconda parte.
Lezione n°12 Prof.ssa Rossella Petreschi
Programmare.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Posta Elettronica Certificata
Gli automi.
ABBINAMENTO Lezione n°13
Algoritmi e Strutture Dati
Algoritmi per il flusso nelle reti
Algoritmi per il flusso nelle reti
Schema generale, visita in ampiezza e profondità.
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
Usi (meno scontati) della visita DFS
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Collegamento di input e output tramite Web MIDI API
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
APPUNTI SUL LINGUAGGIO C Esercizi su File e Alberi Binari
Grafi e problem solving
Analisi e Sintesi di circuiti sequenziali
Array e Stringhe Linguaggio C.
La programmazione strutturata
Progetto del processore e supporto del processore al SO (interruzioni – eccezioni) Salvatore Orlando.
Algoritmi.
Corso di programmazione, Simulazione, ROOT, code, ecc. ecc.
Transcript della presentazione:

Modelli di sistemi distribuiti sistema di comunicazione Quali tipi di problemi computazionali si possono risolvere in un sistema distribuito? Dipende dalle caratteristiche del sistema: sincronia/asincronia di esecuzione e interazioni comportamento in caso di failure hardware e software... Algoritmi Distribuiti

Modelli di sistemi distribuiti fissare un appuntamento Roberto e Maria vogliono vedersi a pranzo e comunicano via e-mail Incontriamoci a mezzogiorno ore 10.00 ore 10.40 OK ore 11.15 Ack “OK” ore 11.40 Ack “Ack OK” ore 12.10 caratteristiche del sistema: non esiste memoria comune trasmissione non sicura (non si sa se il messaggio e’ pervenuto correttamente..) ritardo di trasmissione non noto e non limitato Algoritmi Distribuiti

Modelli di sistemi distribuiti fissare un appuntamento Vediamoci a mezzogiorno OK. A presto Roberto e Maria vogliono vedersi a pranzo e comunicano per telefono caratteristiche del sistema: non esiste memoria comune ognuno dei due sente le parole dell’altro con un ritardo noto e limitato se la comunicazione cade entrambi ne vengono a conoscenza Algoritmi Distribuiti

Modelli di sistemi distribuiti Occorre considerare tre dimensioni: schema di comunicazione tipo di failure sincronismo Algoritmi Distribuiti

Modelli di sistemi distribuiti Schemi di comunicazione rete a scambio di messaggi connessioni punto-a-punto topologie specifiche (anello, stella, broadcast,..) memoria condivisa Algoritmi Distribuiti

Modelli di sistemi distribuiti: reti punto-a-punto Reti punto-a-punto si possono modellare come grafi, i cui nodi rappresentano i processi e gli archi le linee di comunicazione (eventualmente bidirezionali) Si suppone che i processi comunichino tramite primitive tipo send/recv send non bloccante spesso si ipotizza un grafo completo linee virtuali non necessariamente fisiche recv send P Q In buffer Out buffer Algoritmi Distribuiti

Modelli di sistemi distribuiti: reti punto-a-punto Caratteristiche delle reti punto-a-punto failure free Per quanto riguarda i processi: Se un processo non ha ancora raggiunto il suo stato finale, “prima o poi” eseguira’ certamente un altro step (liveness) Per quanto riguarda la comunicazione: P riceve un messaggio m da Q al piu’ una volta e solo se Q glielo ha precedentemente inviato (safety) Se P manda un messaggio m a Q, Q “prima o poi” lo ricevera’ certamente (liveness) Algoritmi Distribuiti

Modelli di sistemi distribuiti Tipi di malfunzionamenti Malfunzionamento di processi : CRASH ...un processo si blocca prima di raggiungere lo stato finale…. Processo fallito non soddisfa la proprieta’ di liveness dei processi Processo corretto soddisfa la liveness dei processi Malfunzionamento di comunicazione: PERDITA DI MESSAGGI ..un messaggio inviato non viene ricevuto… Linea fallita non soddisfa la liveness della comunicazione Linea corretta soddisfa la liveness della comunicazione Algoritmi Distribuiti

Modelli di sistemi distribuiti Modello Sincrono E’ noto un limite di tempo massimo per l’esecuzione di uno step locale da parte di un processo E’ noto un limite di tempo massimo di ritardo di trasmissione Si puo’ supporre che i processi abbiano orologi fisici perfettamente sincronizzati (o approssimativamente sincronizzati, cioe’ all’interno di un intervallo di tempo ) Algoritmi Distribuiti

Modelli di sistemi distribuiti Modello sincrono Modello sincrono- Conseguenze Wait for timeout > max(t1 + t2 + t3) recv(m’) send(Q,m) t P recv(m) Q send(P,m’) t1 t2 t3 Si possono usare timeout per scoprire malfunzionamenti di comunicazione Algoritmi Distribuiti

Modelli di sistemi distribuiti Modello sincrono Modello sincrono Conseguenze P m3 m1 m2 t Q R fase1 fase2 fase3 Si puo’ organizzare la computazione in fasi: invio di messaggi a un insieme di processi P ricezione di messaggi della fase da parte dei processi di P cambio di stato Algoritmi Distribuiti

Modelli di sistemi distribuiti Modello asincrono anche se il tempo d’esecuzione di uno step locale e’ finito, non e’ noto nessun limite di tempo massimo per la sua esecuzione non e’ noto nessun limite di tempo massimo per la trasmissione del messaggio non si puo’ supporre l’esistenza di orologi fisici sincronizzati Il modello asincrono e’ il piu’ generale: un algoritmo progettato per sistemi asincroni funziona anche in sistemi sincroni Algoritmi Distribuiti

Modelli di sistemi distribuiti sincrono/ asincrono Sfortunatamente: alcuni problemi computazionali non hanno soluzione in sistemi asincroni se si desidera una soluzione fault tolerant se si vuole usare un algoritmo deterministico quindi per alcuni problemi di deve ricorrere a sistemi sincroni algoritmi probabilistici Algoritmi Distribuiti

Modelli di sistemi distribuiti sincrono/ asincrono Per descrivere un sistema distribuito, occorre specificare: grafo di comunicazione (completo,anello, ecc…) possibilita’ di fallimento di processi possibilita’ e tipo di fallimenti di comunicazione ipotesi sul numero massimo di processi falliti e/o di comunicazioni fallite tipo di sincronismo E’ cruciale essere chiari e precisi su questi aspetti poiche’ essi hanno una ricaduta essenziale su: funzionamento dell’algoritmo soluzione del problema computazionale Algoritmi Distribuiti

Modelli di sistemi distribuiti Modello sincrono Grafo orientato G = (V,E) I nodi v V rappresentano i processi, gli archi e  E rappresentano le linee di comunicazione distanza(i,j): lunghezza del cammino minimo tra i e j in G diametro(i,j): distanza massima tra tutte le coppie di vertici (i,J) in G 1 2 3 5 4 Algoritmi Distribuiti

Modelli di sistemi distribuiti Modello sincrono Processi Ogni processo e’ modellato da una quaterna: (start, states, msgs, trans) start insieme degli stati iniziali (sottoinsieme non vuoto di states) states insieme di stati msgs funzione di generazione dei messaggi (ad ogni stato associa un insieme di messaggi in uscita) trans funzione di transizione (ad ogni coppia <stato, messaggi ricevuti> associa uno stato) i Algoritmi Distribuiti

Modelli di sistemi distribuiti Modello sincrono Linee di comunicazione Ogni arco rappresenta un canale, cioe’ un posto per un unico messaggio m M  {null} (assenza di messaggio). i m j Algoritmi Distribuiti

Modelli di sistemi distribuiti Modello sincrono Esecuzione Nel modello sincrono, l’esecuzione procede in fasi. Inizialmente tutti i processi sono in uno stato iniziale e tutti i canali sono vuoti. Ogni fase e’ costituita da due step. Step1. Ogni processo applica la propria funzione di generazione dei messaggi (msg) e invia i messaggi generati nei propri canali di uscita. Step2. Si applica la funzione di transizione (trans) alla coppia <stato, messaggi in ingresso> per ottenere il nuovo stato; si rimuovono i messaggi dai canali. Algoritmi Distribuiti

Modelli di sistemi distribuiti Modello sincrono STEP2 STEP1 mi1 mi2 mi3 mo1 mo2 mo3 Si+1 mi1 mo1 mi3 mi2 mo3 mo2 Si si L’assenza di messaggi sara’ implementata nei sistemi reali usando un timeout (nel modello con un messaggio null) Algoritmi Distribuiti

Modelli di sistemi distribuiti Modello sincrono Malfunzionamento processi Crash. Il processo si blocca prima o dopo lo step1 oppure in un qualsiasi punto dello step2 Fallimento bizantino. Si generano messaggi e stati arbitrari (non secondo le funzioni trans e msgs) Malfunzionamento comunicazioni Canali.Perdita di messaggi Algoritmi Distribuiti

Modelli di sistemi distribuiti Modello sincrono Modello formale di esecuzione sincrona Una esecuzione sincrona di un sistema distribuito e’ efinita da una sequenza infinita: C0,M1,N1,C1,M2,N2,C2,…, Cr assegnamento di stati alla fase r, cioe’ dopo r fasi Mr messaggi inviati alla fase r Nr messaggi ricevuti alla fase r Mr  Nr significa che ci sono state perdite di messaggi Algoritmi Distribuiti

Modelli di sistemi distribuiti Modello asincrono Grafo orientato G = (V,E) I nodi v V rappresentano i processi, gli archi e  E rappresentano le linee di comunicazione distanza(i,j): lunghezza del cammino minimo tra i e j in G diametro(i,j): distanza massima tra tutte le coppie di vertici (i,J) in G 1 2 3 5 4 Algoritmi Distribuiti

Modelli di sistemi distribuiti Modello asincrono Processi Ogni processo e’ modellato come una automa I/O: tra le azioni di output esiste anche l’azione send (m)i,j (j e’ un processo d’uscita del nodo i e m e’ un messaggio) tra le azioni di input esiste anche l’azione receive (m)j,i (j e’ un processo d’ entrata del nodo i e m e’ un messaggio) i Algoritmi Distribuiti

Modelli di sistemi distribuiti Modello asincrono Linee di comunicazione Il canale, associato all’arco (i,j), e’ definito come un automa I/O; con input della forma send (m)i,j e output della forma receive(m)i,j Il tipo di canale piu’ diffuso e’ il canale FIFO in cui ogni azione send (m) aggiunge un messaggio m alla fine della coda ed ogni azione receive(m) rimuove un messaggio m dall’inizio della coda. i j Algoritmi Distribuiti

Modelli di sistemi distribuiti Modello asincrono Tracce Il comportamento di processi e i canali puo’ essere descritto dalle sequenze (finite o infinite) di azioni esterne; tali sequenze prendono il nome di tracce. Algoritmi Distribuiti

Modelli di sistemi distribuiti Modello asincrono Esempio Processo Pi (descritto da un I/O automa) V e’ un insieme di valori, azioni di input: init(v)i v V receive(v)j,i azioni di output: decide(v)i send(v)i,j stati val, un vettore {1, . . .,n} di elementi di V transizioni init(v)i v V val(i) := v receive(v)j,i val(j) := v send(v)i,j nessuna transizione, precond. val(i) := v decide(v)i nessuna transizione, precond. v = val(1)+ …+ val(n)) Algoritmi Distribuiti

Modelli di sistemi distribuiti Modello asincrono Esempio Canale Ci,j (descritto da un I/O automa) M e’ l’alfabeto dei messaggi azioni di input: send(m)i ,j m M azioni di output: receive(m)j,i stati queue una coda FIFO di elementi di M,inizialmente vuota transizioni send(m)i ,j aggiunge m alla coda receive(m)j,i rimuove il primo elemento della coda Algoritmi Distribuiti

Modelli di sistemi distribuiti Modello asincrono Consideriamo un sistema formato da due processi P1 e P2 e due canali C1,2 e C 2,1. P1 P2 C1,2 C2,1 Traccia: init(2)1, init(1)2 ,send(2)1 ,2 , receive(2)1,2 ,send(1)2,1 , receive(1)2,1init(4)1 ,, init(0)2 decide(5)1 , decide(2)1 Algoritmi Distribuiti

Modelli di sistemi distribuiti Modello asincrono Malfunzionamento processi Crash. Il crash e’ modellato includendo tra le azioni di input di un processo dell’azione di input stop Fallimento bizantino. Il fallimento bizantino e’ modellato permettendo di sostituire l’automa P con un qualsiasi automa con la stessa interfaccia esterna. Malfunzionamento comunicazioni Canali.Perdita di messaggi Algoritmi Distribuiti

Modelli di sistemi distribuiti Modello asincrono La programmazione di algoritmi distribuiti in sistemi asincroni e’ particolarmente complicata. Tecniche per semplificare la programmazione nei sistemi asincroni: uso di sincronizzatori simulazione di memoria condivisa uso di orologi logici monitoraggio degli algoritmi a tempo di run Algoritmi Distribuiti

Modelli asincroni orologi logici In un sistema distribuito spesso e’ necessario stabilire una relazione d’ordine tra eventi di nodi (processi) diversi: un evento a di P1 puo’ essere la causa di un evento b di P2? un evento a di P1 puo’ non essere correlato a un evento b di P2? Per descrivere queste relazioni si e’ introdotto nell’insieme degli eventi del sistema distribuito, un ordine parziale indicato come la relazione ” happens before ” Algoritmi Distribuiti

Modelli asincroni orologi logici tempo Il re e’ morto A lunga vita al re B C 1. lunga vita al re 2. Il re e’ morto Algoritmi Distribuiti

Modelli asincroni orologi logici Ipotesi 1) I processi comunicano tramite messaggi 2) In ogni processo gli eventi sono un insieme totalmente ordinato: 3) L’invio e la ricezione di un messaggio sono eventi tempo locale a b c Algoritmi Distribuiti

Modelli asincroni orologi logici La relazione Happens Before:  La relazione d’ordine  sull’insieme degli eventi di un sistema distribuito soddisfa le seguenti tre condizioni: (i) se a e b sono eventi di uno stesso processo e a precede b, allora a  b (ii) se a e’ l’evento di invio di un messaggio e b e’ l’evento di ricezione dello stesso, allora a  b (iii) se a  b e b  c allora a  c (transitivita’) a b a b Algoritmi Distribuiti

Modelli asincroni orologi logici Due eventi distinti a e b sono detti concorrenti (a || b) se a  b e b  a a  b significa che e’ possibile che l’evento a possa essere causa di b Algoritmi Distribuiti

Modelli asincroni orologi logici Diagramma Spazio-Tempo P Q R p1  r4, q4  r3, p2  p4 q3 || p3, q3 || r2 r4 p4 q5 p3 r3 q4 tempo q3 p2 r2 q2 p1 q1 r1 Algoritmi Distribuiti

Modelli asincroni orologi logici Un clock Ci per un processo Pi e’ una funzione che assegna ad ogni evento a di Pi un numero Ci (a) Il clock del sistema distribuito e’ dato da una funzione C che assegna ad ogni evento b del sistema il numero C (b) dove C (b) = Cj (b) se b e’ un evento del processo Pj La funzione C deve soddisfare alla seguente condizione di clock: per ogni coppia di eventi a ,b: a  b C (a) < C (b) Algoritmi Distribuiti

Modelli asincroni orologi logici Condizione di clock La condizione di clock puo’ essere soddisfatta se valgono le due condizioni seguenti: CL1: se a e b sono eventi di Pi e a  b, allora Ci (a) < Ci (b) CL2: se a e’ l’evento di invio di un messaggio da parte di Pi e b e’ l’evento di ricezione dello stesso messaggio da parte di Pj, allora Ci (a) < Cj (b) Algoritmi Distribuiti

Modelli asincroni orologi logici Implementazione orologi logici Ogni processo Pi ha un contatore Ci e Ci(a) e’ il valore contenuto in Ci quando l’evento a si verifica. Regole implementative IR1 ogni processo Pi incrementa il proprio contatore Ci subito dopo ogni evento locale IR2 (i) se a e’ l’evento dato dall’invio di un messaggio m da Pi a Pj allora m contiene anche il timestamp Tm = Ci(a) (ii) il processo Pj setta il clock dell’evento ricezione del messaggio m (evento b): Cj(b) := max(Cj, Tm +1) Algoritmi Distribuiti

Modelli asincroni tempo virtuale (1) (2) (3) (4) (5) (1) (2) (3) (5) valori clock Q q1 q2 q3 q4 Il tempo virtuale e’ un tempo discreto; se non si verificano eventi il tempo virtuale e’ fermo! Algoritmi Distribuiti

Modelli asincroni Ordine Totale La relazione d’ordine totale  Gli orologi logici stabiliscono una relazione d’ordine parziale sull’insieme degli eventi. Per imporre un ordine totale si usa un ordine totale sulle identita’ dei processi. Se a e’ un evento di Pi e b e’ un evento di Pj, l’ordine totale a  b e’ definita da: a  b iff Ci(a) < Cj(b) oppure Ci(a) = Cj(b) & Pi < Pj Algoritmi Distribuiti