1 Sistemi Distribuiti
Transcript
1 Sistemi Distribuiti
Università degli Studi di Napoli Federico II Facoltà di Ingegneria Corso di Laurea Specialistica in Ingegneria Informatica Corso di Sistemi Distribuiti Prof. Stefano Russo Stato globale nei Sistemi Distribuiti Sommario • Stato globale di un sistema distribuito • Tagli • Linearizzazione e raggiungibilità • Algoritmo di snapshot distribuito di Chandy e Lamport • Proprietà dello snapshot • Esempio applicativo: termination detection distribuita Riferimenti: G. Coulouris et al.: Distributed Systems: Concepts and Design (Cap. XI §5), IV ed., 2005. Corso di Sistemi Distribuiti, prof. S. Russo Lo stato globale nei sistemi distribuiti 2 Stato globale di un sistema distribuito In molte applicazioni distribuite è utile conoscere lo stato globale in cui si trova correntemente il sistema. Intuitivamente, lo stato globale di un sistema distribuito consiste di: • stato locale di ciascun processo; in cosa consista lo stato locale, dipende da ciò cui si è interessati, può includere p.es. il valore di variabili locali, i record di una base dati, o lo stato di alcuni file; • messaggi inviati ma non ancora ricevuti, che si possono dunque pensare come in transito nei canali di comunicazione tra processi. La determinazione dello stato globale è complessa per via della mancanza di un tempo globale in un sistema distribuito, né d’altra parte è possibile una sincronizzazione perfetta dei clock locali. Corso di Sistemi Distribuiti, prof. S. Russo Lo stato globale nei sistemi distribuiti 3 1 Stato globale di un sistema distribuito: Alcuni problemi tipici p2 p1 object reference message a. Garbage collection garbage object p1 p2 wait-for b. Deadlock wait-for p2 p1 activate passive c. Termination Corso di Sistemi Distribuiti, prof. S. Russo passive 4 Lo stato globale nei sistemi distribuiti Eventi e storia di un processo L’occorrenza di una singola azione in piè un evento e. Gli eventi sono di due tipi: • eventi interni al processo (es.: aggiornamento di una variabile); • eventi di invio o ricezione di messaggi. L’insieme degli eventi di un processo pi può essere ordinato totalmente in base alla relazione di precedenza temporale: • e → e′ se e solo se e si è verificato prima e′ di in pi. La storia (locale) di un processo pi è la successione di eventi che ha luogo in pi, ordinata in base alla relazione di precedenza temporale: • storia(pi) = hi = <ei0, ei1, ei2,…> La storia (locale) iniziale di pi fino all’evento k è: • storia(pi,k) = hik = <ei0, ei1, …, eik> Corso di Sistemi Distribuiti, prof. S. Russo 5 Lo stato globale nei sistemi distribuiti Taglio Un taglio dell’esecuzione di un sistema distribuito è un sottoinsieme della sua storia globale, costituito dall’unione di storie iniziali dei processi: c c c taglio C = h1 1 ∪ h2 2 ∪ … ∪ hN N La frontiera del taglio è l’insieme di tutti gli ultimi eventi verificatisi negli N processi pi prima del taglio: c frontiera F = { ei i} i = 1, …, N 0 e1 1 2 e1 3 e1 e1 p1 m1 p2 m2 0 e2 Corso di Sistemi Distribuiti, prof. S. Russo 1 e2 Lo stato globale nei sistemi distribuiti 2 e2 Physical time 6 2 Tagli consistenti Un taglio C è consistente se, per ogni evento e contenuto, contiene anche tutti gli eventi “happened-before” e: c c c CC = h1 1 ∪ h2 2 ∪ … ∪ hN N / ∀ e ∈ CC, f → e ⇒ f ∈ CC 0 e1 1 2 e1 3 e1 e1 p1 m1 p2 m2 0 e2 1 e2 2 e2 Physical time Taglio inconsistente Taglio consistente Corso di Sistemi Distribuiti, prof. S. Russo Lo stato globale nei sistemi distribuiti 7 Stato globale e stato globale consistente Uno stato globale S di un sistema distribuito è una unione di stati dei singoli processi: S0 = (S1, , S2…, SN) Non tutti i possibili stati globali sono significativi. Uno stato globale consistente CS di un sistema distribuito è uno stato globale corrispondente ad un taglio consistente. L’evoluzione di un sistema distribuito è una successione di transizioni tra stati globali consistenti: S0 → S1 → S2 → … Corso di Sistemi Distribuiti, prof. S. Russo Lo stato globale nei sistemi distribuiti 8 Esecuzione ed esecuzione consistente Una esecuzione (run) di un sistema distribuito è un ordinamento totale degli eventi in una storia globale H, consistente con l’ordinamento di ogni storia locale. Non tutte le esecuzioni attraversano solo stati globali consistenti. Una esecuzione consistente (consistent run) o linearizzazione di un sistema distribuito è un ordinamento totale degli eventi in una storia globale H, consistente con tutte le relazioni HB (happened-before) tra gli eventi. Corso di Sistemi Distribuiti, prof. S. Russo Lo stato globale nei sistemi distribuiti 9 3 Linearizzazione e raggiungibilità Una linearizzazione è una esecuzione. Una linearizzazione attraversa solo stati globali consistenti. Uno stato globale S’ si dice raggiungibile da S se esiste una linearizzazione che passa per S e poi per S’. Corso di Sistemi Distribuiti, prof. S. Russo Lo stato globale nei sistemi distribuiti 10 Algoritmo di snapshot di Chandy e Lamport (1/5) Ipotesi: • i processi non sono soggetti a fallimenti; • i canali non sono soggetti a fallimenti: la comunicazione è affidabile e prima o poi ogni messaggio viene ricevuto una e una sola volta; • i canali sono unidirezionali e di tipo FIFO; • il grafo dei processi e dei canali è fortemente connesso (c’è un percorso tra ogni coppia di processi). Corso di Sistemi Distribuiti, prof. S. Russo Lo stato globale nei sistemi distribuiti 11 Algoritmo di snapshot di Chandy e Lamport (2/5) Caratteristiche dell’algoritmo: • qualunque processo può dar inizio all’algoritmo in un qualsiasi istante; • i processi non interrompono le loro elaborazioni e lo scambio messaggi durante lo snapshot; • lo stato osservato dall’algoritmo distribuito è consistente; • lo stato osservato dall’algoritmo distribuito può non corrispondere a nessuno stato globale effettivamente attraversato dal sistema in un qualche istante. Corso di Sistemi Distribuiti, prof. S. Russo Lo stato globale nei sistemi distribuiti 12 4 Algoritmo di snapshot di Chandy e Lamport (3/5) L’algoritmo fa uso di messaggi marker, che svolgono un doppio ruolo: - obbligano il ricevente a salvare il proprio stato, se ancora non l’ha fatto; - servono a discriminare i messaggi da includere nello stato del canale. Organizzazione di un processo (canali entranti, uscenti, stato locale, file system locale, marker) per l’algoritmo di Chandy e Lamport Corso di Sistemi Distribuiti, prof. S. Russo Lo stato globale nei sistemi distribuiti 13 Algoritmo di snapshot di Chandy e Lamport (4/5) Marker receiving rule for process pi On pi’s receipt of a marker message over channel c: if (pi has not yet recorded its state) it records its process state now; records the state of c as the empty set; turns on recording of messages arriving over other incoming channels; else pi records the state of c as the set of messages it has received over c since it saved its state. end if Marker sending rule for process pi After pi has recorded its state, for each outgoing channel c: pi sends one marker message over c (before it sends any other message over c). Corso di Sistemi Distribuiti, prof. S. Russo Lo stato globale nei sistemi distribuiti 14 Algoritmo di snapshot di Chandy e Lamport (5/5) Dinamica: b) Un processo Q receve un marker per la prima volta, registra il suo stato e invia un marker su ogni canale di uscita c) Q registra tutti i messaggi entranti d) Q riceve un marker su un canale entrante e termina la registrazione dello stato di quel canale Corso di Sistemi Distribuiti, prof. S. Russo Lo stato globale nei sistemi distribuiti 15 5 Esemplificazione dell’algoritmo di snapshot (1/2) c2 p1 p2 c1 $1000 (none) $50 2000 account widgets account widgets Corso di Sistemi Distribuiti, prof. S. Russo 16 Lo stato globale nei sistemi distribuiti Esemplificazione dell’algoritmo di snapshot (2/2) 1. Global state S 0 2. Global state S 1 3. Global state S 2 4. Global state S 3 <$1000, 0> <$900, 0> <$900, 0> <$900, 5> p1 p1 p1 p1 c2 (empty) c1 (empty) c2 (Order 10, $100), M c1 (empty) c2 (Order 10, $100), M c1 (five widgets) c2 (Order 10, $100) c1 (empty) p2 <$50, 2000> p2 <$50, 2000> p2 <$50, 1995> p2 <$50, 1995> (M = marker message) Corso di Sistemi Distribuiti, prof. S. Russo Lo stato globale nei sistemi distribuiti 17 Terminazione dell’algoritmo di snapshot distribuito L’algoritmo di snapshot distribuito termina certamente, se si assume che un processo che riceve un marker: - salvi il suo stato in un tempo finito; - invii i marker sui canali uscenti in un tempo finito. In tali ipotesi, se esiste un percorso tra un processo pi e un processo pj, allora pj registrerà il suo stato in un tempo finito dopo che pi ha registrato il suo stato. Poiché per ipotesi il grafo di processi e canali è strettamente connesso, tutti i processi registreranno il proprio stato entro un tempo finito dopo che qualche processo ha dato inizio all’algoritmo, registrando il proprio stato. Corso di Sistemi Distribuiti, prof. S. Russo Lo stato globale nei sistemi distribuiti 18 6 Proprietà dello snapshot Siano ei, ej due generici eventi rispettivamente in pi, pj, con ei → ej, i ≠ j. Lo stato globale è consistente se, qualora ej appartenga al taglio, anche ei appartiene al taglio (nel caso i = j ciò è ovvio). Lo stato globale selezionato dall’algoritmo di snapshot è consistente. Dimostrazione: se ej appartiene al taglio, allora si è verificato prima che pj registrasse il suo stato, e non è possibile che ei si sia verificato dopo che pi aveva registrato il suo stato. Infatti, poiché ei → ej, esiste una sequenza di messaggi m1, ..., mh (h ≥ 1) che contribuisce a determinare la relazione ei → ej. Se per assurdo pi avesse registrato il suo stato prima del verificarsi di ei, poiché i canali sono FIFO e per via delle due regole dell’algoritmo, un marker avrebbe dovuto raggiungere pj prima di ej. Per la regola di ricezione, pj avrebbe allora registrato il suo stato prima di ej; ciò contraddice l’ipotesi che ej sia nel taglio. Corso di Sistemi Distribuiti, prof. S. Russo 19 Lo stato globale nei sistemi distribuiti Raggiungibilità degli stati nell’algoritmo di snapshot Sinit: stato globale del sistema, immediatamente prima che il primo processo registri il suo stato; Ssnap: stato globale osservato dall’algoritmo; Sfinal: stato globale del sistema alla terminazione dell’algoritmo, immediatamente dopo l’ultima azione di registrazione di uno stato. actual execution e Sinit recording begins pre-snap: e '0 ,e '1,...e 'R-1 Corso di Sistemi Distribuiti, prof. S. Russo 0 ,e 1 ,... recording ends S snap S final post-snap: e 'R ,e 'R+1 ,... Lo stato globale nei sistemi distribuiti 20 Stabilità e raggiungibilità dello snapshot La proprietà di raggiungibilità dello stato Ssnap osservato con l’algoritmo distribuito è utile per determinare la validità di predicati stabili. Infatti, se un predicato stabile P è vero nello stato Ssnap, allora è vero anche nello stato finale Sfinal, poiché per definizione un predicato stabile vero in uno stato S resta vero in ogni stato raggiungibile da S. Analogamente, se un predicato stabile P è falso nello stato Ssnap, allora deve essere falso anche nello stato Sinit. Corso di Sistemi Distribuiti, prof. S. Russo Lo stato globale nei sistemi distribuiti 21 7 Stato globale nei Sistemi Distribuiti Esempio: il problema della termination detection Termination Detection (1/5) Problema: Determinare se una computazione distribuita è terminata. Una computazione distribuita può ritenersi terminata quando: - i processi non hanno in corso elaborazioni e sono al più in uno stato passivo; - nello stato osservato (snapshot) non ci sono messaggi in transito (inviati ma non ancora ricevuti). Si suppone che lo scambio di messaggi nel sistema sia affidabile, cioè i messaggi sono consegnati: - certamente (prima o poi), - inalterati, - una e una sola volta (nessuna duplicazione) - nell’ordine di spedizione (per ciascun canale –> canali FIFO) Corso di Sistemi Distribuiti, prof. S. Russo 23 Lo stato globale nei sistemi distribuiti Termination Detection (2/5) Soluzione - Versione modificata del Distributed Snapshot di Chandy e Lamport (1985) Un processo P invia il MARKER ad un processo Q; Q annota P come suo predecessore (Q è successore di P). Come previsto dall’algoritmo di C&L, Q inoltra il MARKER su tutti i canali in uscita, ed avvia la registrazione dei canali in ingresso. Appena Q termina la sua parte di snapshot, invia uno dei seguenti messaggi a P: DONE ⇔ Tutti i successori di Q hanno restituito DONE, ovvero se Q non ha ricevuto alcun messaggio nell’intervallo [t0-tn] CONTINUE in tutti gli altri casi t0 t0+d Registrazione Stato Locale Corso di Sistemi Distribuiti, prof. S. Russo t1 ti Inoltro Ricezione 1° Marker MARKERS su canale in ingresso tn Ricezione Marker su i-esimo canale Lo stato globale nei sistemi distribuiti Invio DONE o CONTINUE Ricezione Marker su n-esimo canale 24 8 Termination Detection (3/5) Il processo che ha avviato lo snapshot riceve un messaggio DONE se e solo se tutti i processi nel sistema distribuito hanno inviato un messaggio DONE. In tal caso nessun messaggio è in circolazione nel sistema e la computazione può ritenersi terminata. Corso di Sistemi Distribuiti, prof. S. Russo 25 Lo stato globale nei sistemi distribuiti Termination Detection (4/5) Esempio – Computazione non terminata 1. M REC P1 REC 6. CONTINUE Msg=0 DO 5. 4. M 5. D O P2 N E NE Msg=1 Msg=0 M LO L 4 . . HE 2 M 3. P1 riceve: 1 messaggio DONE 1 messaggio CONTINUE P3 La computazione non è terminata! Msg=0 Corso di Sistemi Distribuiti, prof. S. Russo 26 Lo stato globale nei sistemi distribuiti Termination Detection (5/5) Esempio – Computazione terminata 1. M REC P1 REC P2 5. DONE Msg=0 DO 4. 3. M 4. D O NE 3. Msg=0 M N E 2. M P1 riceve: 2 messaggi DONE P3 Msg=0 Corso di Sistemi Distribuiti, prof. S. Russo Lo stato globale nei sistemi distribuiti La computazione è terminata! 27 9