Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria

Documenti analoghi
Sincronizzazione nei Sistemi Distribuiti (parte 2)

Mutua esclusione. Sistemi Distribuiti Laurea magistrale in ingegneria informatica A.A Leonardo Querzoni. mercoledì 29 febbraio 12

La mutua esclusione (dai sistemi concorrenti ai sistemi distribuiti) mutua esclusione

Indice dei Contenuti

22/05/2013. Indice dei Contenuti. Global State (1) Corso Sistemi Distribuiti 6 cfu Docente: Prof. Marcello Castellano

Middleware Laboratory. Dai sistemi concorrenti ai sistemi distribuiti

Sincronizzazione e coordinamento nel distribuito

Sincronizzazione distribuita: Mutua esclusione ed elezione

corso di Sistemi Distribuiti 3. La concorrenza tra processi remoti nei sistemi distribuiti

Modello a scambio di messaggi

Sincronizzazione. Soluzioni software Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Concorrenza fra processi remoti

SEMAFORI SEMAFORI. Sul semaforo sono ammesse solo due operazioni (primitive)

Modelli di interazione tra processi

Le risorse. Alcune definizioni

Sincronizzazione. Soluzioni hardware Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Rappresentazione degli algoritmi

Ordinamento degli eventi. Lezione 11. Osservazioni. Relazione verificato prima. Cenni ai sistemi operativi distribuiti 3. Coordinazione distribuita

Principi di progettazione di sistemi distribuiti

Modelli di interazione tra processi

Programma del corso. Introduzione Rappresentazione delle Informazioni Calcolo proposizionale Architettura del calcolatore Reti di calcolatori

PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi

Interazione tra Processi. Sistemi Operativi T AA

Esercizi di utilizzo del semaforo semplice di competizione per l'uso di una risorsa comune

Interazione tra Processi. Sistemi Operativi T AA

CAPITOLO 17 PROBLEMI DEL PRODUTTORE/CONSUMATORE v1

Modello a scambio di messaggi

Argomenti della lezione. Introduzione agli Algoritmi e alle Strutture Dati. Lista Lineare. Lista Lineare come Tipo di Dato Astratto

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

P2p la teoria dei sistemi complessi per modellare reti p2p

Chiamata di procedura remota

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

CAPITOLO 22 PROBLEMA DEL PRODUTTORE/CONSUMATORE

Mutua esclusione distribuita

Coordinazione Distribuita

sistemi distribuiti soggetti a guasti - consenso

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME)

Soluzione: (basata su round sincroni) Soluzione: (basata su processo leader) upon event <tob, Init> do tosend = ; todeliver = ; starttimer(δ + ε);

Marco Cesati Dipartimento di Ingegneria Civile e Ingegneria Informatica Università degli Studi di Roma Tor Vergata

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni

Strutture di controllo iterative

SCD. Correttezza temporale. Correttezza temporale. Premesse 2. Politiche di ordinamento 1. Premesse 1

Il Modello a scambio di messaggi

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Sincronizzazione nei Sistemi Distribuiti

Componenti principali

Laboratorio di Reti, Corsi A e B. Text-Twist. Progetto di Fine Corso A.A. 2016/17

Le comunicazioni ordinate

Le strutture di controllo in C++

Algoritmi e Strutture Dati

R. Cusani, F. Cuomo: Telecomunicazioni - DataLinkLayer: Gestione degli errori, Aprile 2010

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j

Componenti e connessioni. Capitolo 3

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

2.2 Alberi di supporto di costo ottimo

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto

ESERCITAZIONE 5!! 7 dicembre 2016!! Programmazione concorrente in ADA!!

2.2 Alberi di supporto di costo ottimo

Laboratorio di Programmazione di Rete Laurea Triennale in Informatica Applicata Progetto di fine Corso - A.A. 08/09

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

SISTEMI OPERATIVI E LABORATORIO (Indirizzo Sistemi e Reti) 21 dicembre 2004

Sushi bar problem. The Little Book of Semaphores by Allen B. Downey

PROGRAMMAZIONE STRUTTURATA

Esercizi Capitolo 7 - Hash

6.6 Regioni Critiche Condizionali. 6.9 Transazioni Atomiche Modello del Sistema Transazionale

n n 1 n = > Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita

Introduzione alla programmazione

Elezione di un leader in una rete ad anello

Sistemi RAID. Motivazioni Concetti di base Livelli RAID. Sommario

Sistemi Operativi Esercizi Ricapitolazione. Docente: Claudio E. Palazzi

Metodo di Quine-McCluskey. Algoritmo. Sommario. Sommario. M. Favalli

Java Virtual Machine. Indipendenza di java dalla macchina ospite. I threads in Java

Commutazione di pacchetto

Reti locali. Protocolli di accesso per reti locali

Problema dei Fumatori di sigarette. Problema dei Fumatori di sigarette. Problema dei Fumatori di sigarette

Operazioni di I/O. Schema di collegamento fra dispositivi periferici e CPU

1. Che cos è un sistema multiprogrammato? Si può realizzare la multiprogrammazione

Algoritmo basato su cancellazione di cicli

Cognome e Nome : Corso e Anno di Immatricolazione: Modalità di Laboratorio (Progetto/Prova) :

Sistemi Operativi. Lez. 6: Problemi classici della programmazione concorrente

Architetture di rete. 4. Le applicazioni di rete

ESERCIZIO SincrAmbGlob-1

Algoritmi distribuiti su reti sincrone. Introduzione alle reti sincrone

Avete capito fino in fondo il concetto di nodo fine flusso? Che differenza c e tra fine flusso e fine attività? MODEL DIFFERENCES AND EVOLUTION

RETI DI CALCOLATORI Home Work ritardi e livello applicativo

Progetto e analisi di algoritmi

Stallo di processi. Definizione del problema e modellizzazione Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Il Modello a scambio di messaggi

Esercizi sulla macchina assembler, strutturazione a livelli, spazio di indirizzamento

LA GESTIONE DELLA I/O

JavaScript Core Language. Prof. Francesco Accarino IIS Atiero Spinelli Sesto San Giovanni via leopardi 132

Instradamento per servizi di tipo circuito virtuale. Dr. S. Greco Polito,

Lezione 6 programmazione in Java

Generalità sui protocolli Tecniche di multiplazione Tecniche di accesso Tecniche di commutazione

Corso di Fondamenti di Informatica. La ricorsione

Linee Commutate. Comunicazione telefonica:

Sincronizzazione nei Sistemi Distribuiti

Transcript:

Università degli Studi di oma Tor Vergata Facoltà di Ingegneria La mutua esclusione nasce nei sistemi concorrenti N processi vogliono accedere ad una risorsa condivisa Ogni processo vuole acquisire la risorsa ed utilizzarla in modo esclusivo senza avere interferenze con gli altri processi Ogni algoritmo di mutua esclusione comprende Una sequenza di istruzioni chiamata sezione critica (CS) L esecuzione della sezione critica consiste nell accesso alla risorsa condivisa Una sequenza di istruzioni che precedono la sezione critica, chiamata trying protocol (TP) Una sequenza di istruzioni che seguono la sezione critica, chiamata exit protocol (EP) Uno scheduler sceglie di volta in volta a quale processo consentire l esecuzione della prossima istruzione La sequenza decisa dallo scheduler e comprendente tutte le istruzioni dei diversi processi è chiamata schedule Valeria Cardellini - SD A.A. 2/

Il problema è specificato attraverso le seguenti tre proprietà: Mutua esclusione (ME) o safety (no azioni sbagliate): al più un processo per volta è nella sezione critica No deadlock (ND): se un processo rimane bloccato nella sua trying section, esistono uno o più processi che riescono ad entrare ed uscire dalla sezione critica No starvation (NS) o posticipazione indefinita: nessun processo può rimanere bloccato per sempre nella trying section Osservazione: NS implica ND NS, oltre ad implicare una proprietà di liveness (no ritardi indefiniti), specifica un comportamento paritetico dei vari processi (fairness) Valeria Cardellini - SD A.A. 2/ 2 La sezione critica è relativa ad una porzione di codice Soluzioni basate su variabili condivise per realizzare la mutua esclusione tra N processi Algoritmo di Dijkstra (965) Ideato per sistemi a singolo processore Algoritmo del panificio di Lamport (974) Ideato per sistemi multiprocessore Programma P P 4 TP P 2 CS P 5 Valeria Cardellini - SD A.A. 2/ P 3 EP P 6 3

Modello di sistema concorrente di Dijkstra I processi comunicano leggendo e scrivendo variabili condivise La lettura e scrittura di una variabile sono operazioni atomiche Non ci sono assunzioni sul tempo che ogni processo impiega ad eseguire un azione atomica Variabili condivise b[,,n]: array di booleani inizializzati a true (prenotazioni) c[,,n]: array di booleani inizializzati a true (occupazioni) k: intero inizializzato in modo casuale (la sentinella) Variabili locali j: intero Valeria Cardellini - SD A.A. 2/ 4 Ogni processo p i esegue il seguente algoritmo: trying protocol Li: b[i] = false // p_i si prenota ciclo della sentinella Li: while (k! i) // la sentinella k seleziona uno // dei processi prenotati Li2: c[i] = true // p_i cancella una sua eventuale occupazione if (b[k] = true) then k = i Li4: c[i] = false // p_i occupa for j = to N do // p_i controlla se ci sono conflitti: // almeno un altro processo che ha occupato if (j! i and c[j] = false) then goto Li // sezione critica exit protocol c[i] = true b[i] = true // Altre istruzioni goto Li: Valeria Cardellini - SD A.A. 2/ 5

p b[] = false while (k! ) c[] = true b[2] = false while (k! 2) c[2] = true b[3] = false while (k! 3) c[3] = true if (b[4] = true) if (b[4] = true) if (b[4] = true) k= k = 2 k = 3 Valeria Cardellini - SD A.A. 2/ 6 A p 4 lo scheduler non concede di eseguire nessuna istruzione Alla fine di questa parte di schedule la situazione è la seguente: La prossima istruzione da eseguire per tutti i processi (tranne p 4 ) è l istruzione Li Il valore di k=3 A questo punto occupa (istruzione Li4); gli altri processi non occupano e vedono che è prenotato, quindi lasciano inalterato il valore di k entra in sezione critica (vedi prossimo lucido) perché non rileva conflitti (altri processi che occupano). Quando esce dalla sezione critica, rilascia le variabili c e b: p e rimasti nella trying section possono provare a passare il ciclo della sentinella Valeria Cardellini - SD A.A. 2/ 7

p c[3] = false for j = to N do if (j! 3 and c[j] = false) then goto Li Sezione critica b[3] = true c[3] = true Da questo schedule sembra che il primo processo che passa il ciclo della sentinella è anche il primo ad entrare in sezione critica Ciò accade solo se non ci sono conflitti (nessun processo che ha contemporaneamente occupato) In caso di conflitto, l ordine di entrata in sezione critica viene deciso dallo scheduler Valeria Cardellini - SD A.A. 2/ 8 while (k! ) c[] = true p if (b[3] = true) (sì, p_3 uscito da CS) then k= while (k! ) c[] = false (occupa) if (j! i and c[j] = false) then goto Li while (k! 2) c[2] = true if (b[3] = true) (sì, p_3 uscito da CS) then k=2 while (k! 2) c[2] = false (occupa) if (j! i and c[j] = false) then goto Li In caso di conflitto (almeno due processi che occupano allo stesso tempo) si torna indietro a Li, ma uno dei processi mantiene l occupazione: quello che per ultimo aveva posto il suo nome su k (nell esempio ) Valeria Cardellini - SD A.A. 2/ 9

L algoritmo di Dijkstra soddisfa le proprietà di Mutua esclusione No deadlock Tuttavia, non soddisfa la proprietà di no starvation Valeria Cardellini - SD A.A. 2/ Soluzione semplice ispirata ad una situazione reale L attesa di essere serviti in un panificio Modello di Lamport I processi comunicano leggendo/scrivendo variabili condivise La lettura e la scrittura di una variabile non sono operazioni atomiche; un processo potrebbe scrivere mentre un altro processo sta leggendo Ogni variabile condivisa è di proprietà di un processo Tutti possono leggere la sua variabile Solo il processo può scrivere la sua variabile Nessun processo può eseguire due scritture contemporaneamente Le velocità di esecuzione dei processi non sono correlate tra loro Valeria Cardellini - SD A.A. 2/

Variabili condivise num[,,n] : array di interi inizializzati a choosing[,,n] : array di booleani inizializzati a false Variabile locale j: intero compreso in [,,N] Valeria Cardellini - SD A.A. 2/ 2 Ciclo ripetuto all infinito dal processo p i // sezione non critica // prende un biglietto choosing[i] = true; // inizio della selezione del biglietto num[i] = + max(num[x]: " x " N); choosing[i] = false; // fine della selezione del biglietto // attende che il numero sia chiamato confrontando il suo biglietto // con quello degli altri for j = to N do // busy waiting mentre j sta scegliendo while choosing[j] do NoOp(); // busy waiting finchè il valore del biglietto non è il più basso // meccanismo che favorisce il processo con identificativo più piccolo while num[j]! and {num[j], j} < {num[i], i} do NoOp(); // sezione critica num[i] = ; // fine sezione critica Valeria Cardellini - SD A.A. 2/ 3

Ciclo ripetuto all infinito dal processo p i // sezione non critica // prende un biglietto doorway choosing[i] = true; // inizio della selezione del biglietto num[i] = + max(num[x]: " x " N); choosing[i] = false; // fine della selezione del biglietto // attende che il numero sia chiamato confrontando il suo biglietto // con quello degli altri bakery for j = to N do // busy waiting mentre j sta scegliendo while choosing[j] do NoOp(); // busy waiting finchè il valore del biglietto non è il più basso // meccanismo che favorisce il processo con identificativo più piccolo while num[j]! and {num[j], j} < {num[i], i} do NoOp(); // sezione critica num[i] = ; // fine sezione critica elazione di precedenza < su coppie ordinate di interi definita da: (a,b) < (c,d) se a < c, o se a = c e b < d Valeria Cardellini - SD A.A. 2/ 4 Doorway Ogni processo p i che entra lo segnala agli altri tramite choosing[i] Prende un numero di biglietto pari al massimo dei numeri scelti dai processi precedenti più Altri processi possono accedere concorrentemente alla doorway Un esempio di esecuzione della doorway p choosing[]=true num[]=+max{num[j]:!j!3}=2 choosing[2]=true num[2]=+max{num[j]:!j!3}= choosing[3]=true num[3]=+max{num[j]:!j!3}=2 Valeria Cardellini - SD A.A. 2/ 5

Bakery Ogni processo p i deve controllare che tra i processi in attesa sia lui il prossimo a poter accedere alla CS Il primo ciclo permette a tutti i processi nella doorway di terminare la loro scelta del biglietto Il secondo ciclo lascia p i in attesa finché: Il suo numero di biglietto non diventa il più piccolo Tutti i processi che hanno scelto un numero di biglietto uguale al suo non hanno identificativo maggiore Osservazione: I casi in cui viene scelto lo stesso numero di biglietto sono risolti basandosi sull identificativo del processo p Un esempio di esecuzione del bakery num[]=2 choosing[]=false while num[j] CS num[]= num[2]= choosing[2]=false while choosing[j] num[2]= CS num[3]=2 choosing[3]=false while choosing[j] while num[j] Valeria Cardellini - SD A.A. 2/ 6 Proprietà di mutua esclusione Deriva da: se p i è nella doorway e p j è nel bakery allora {num[j], j} < {num[i],i} Proprietà di no starvation Nessun processo attende per sempre, poiché prima o poi avrà il numero di biglietto più piccolo L algoritmo gode anche della proprietà FCFS Se p i entra nel bakery prima che p j entri nella doorway, allora p i entrerà in CS prima di p j Valeria Cardellini - SD A.A. 2/ 7

ispetto al modello di Lamport aggiungiamo il vincolo: Un processo non può leggere direttamente il valore di una variabile di proprietà degli altri processi, ma deve esplicitamente inviare un messaggio di richiesta ed attendere un messaggio di risposta contenente il valore La comunicazione tra processi avviene in base alle seguenti assunzioni: I processi comunicano leggendo e scrivendo variabili attraverso scambio di messaggi Il ritardo di trasmissione di un messaggio è impredicibile ma finito I canali di comunicazione sono affidabili Un messaggio inviato viene ricevuto correttamente dal suo destinatario Inoltre, non ci sono duplicazioni o messaggi spuri (ricevuti ma mai trasmessi) Valeria Cardellini - SD A.A. 2/ 8 Proviamo ad adattare ai SD l algoritmo del panificio di Lamport ideato per sistemi concorrenti Ogni processo p i si comporta da server rispetto alle proprie variabili num[i] e choosing[i] Comunicazione basata non su memoria condivisa ma su scambio di messaggi Ogni processo legge i valori locali agli altri processi tramite messaggi di richiesta-risposta Valeria Cardellini - SD A.A. 2/ 9

E una buona soluzione? No, perché:! Per accedere alla CS servono 3 scambi di messaggi ( per doorway, 2 per bakery)! Per ogni lettura vengono scambiati 2N messaggi! Quindi: costo totale pari a 6N messaggi! La latenza per un singolo scambio di messaggi è uguale al tempo impiegato dall accoppiata canale di comunicazione-processo più lenta! Quindi: scarsa efficienza e scalabilità! Problema derivante dalla mancanza di cooperazione tra processi Valeria Cardellini - SD A.A. 2/ 2 Algoritmi basati su autorizzazioni Un processo che vuole accedere ad una risorsa condivisa chiede l autorizzazione Autorizzazione gestita In modo centralizzato (unico coordinatore) In modo completamente distribuito (algoritmo di Lamport distribuito, algoritmo di icart e Agrawala) Algoritmi basati su token Tra i processi circola un messaggio speciale, detto token Il token è unico in ogni istante di tempo Solo chi detiene il token può accedere alla risorsa condivisa Algoritmo centralizzato e decentralizzato Algoritmi basati su quorum (o votazione) Si richiede il permesso di accedere ad una risorsa condivisa solo ad un sottoinsieme di processi Algoritmo di Maekawa Valeria Cardellini - SD A.A. 2/ 2

La richiesta di accesso ( ENTE ) ad una risorsa in mutua esclusione viene inviata ad un coordinatore centrale Se la risorsa è libera, il coordinatore informa il mittente che l accesso è consentito ( GANTED ) Altrimenti, il coordinatore accoda la richiesta con politica FIFO e informa il mittente che l accesso non è consentito ( DENIED ) Oppure, nel caso di SD sincrono, non risponde (vedi figura) Il processo che rilascia la risorsa ne informa il coordinatore ( ELEASED ) Il coordinatore preleva dalla coda la prima richiesta in attesa e invia GANTED al suo mittente Valeria Cardellini - SD A.A. 2/ 22 Vantaggi Garantisce la mutua esclusione No starvation Semplice e facile da implementare Solo 3 messaggi (richiesta, risposta e rilascio) per ogni accesso alla CS Svantaggi Il coordinatore è il singolo point of failure dell algoritmo Il coordinatore può diventare il collo di bottiglia per le prestazioni Valeria Cardellini - SD A.A. 2/ 23

Ogni processo mantiene un clock logico scalare ed una coda locale (per memorizzare le richieste di accesso alla CS) Applicata anche la relazione di ordine totale " egole dell algoritmo: p i richiede l accesso in CS: p i invia a tutti gli altri processi un messaggio di richiesta con timestamp ed aggiunge la coppia <richiesta, timestamp> alla sua coda p j riceve una richiesta da p i : p j memorizza la richiesta (con il suo timestamp) nella sua coda ed invia a p i un messaggio di ack p i accede alla CS se e solo se: p i ha una richiesta con timestamp t che precede tutti gli altri messaggi di richiesta nella coda (ossia t è il minimo applicando ") p i ha ricevuto da ogni altro processo un messaggio (di ack o nuova richiesta) con timestamp maggiore di t (applicando ") p i rilascia la CS: p i elimina la richiesta dalla sua coda ed invia un messaggio di release a tutti gli altri processi p j riceve un messaggio di release: elimina la relativa richiesta dalla sua coda Valeria Cardellini - SD A.A. 2/ 24 L algoritmo rispetta le proprietà per la mutua esclusione (safety, liveness, fairness) Tuttavia richiede 3(N-) messaggi per accedere alla sezione critica: N- messaggi di richiesta N- messaggi di ack N- messaggi di release Valeria Cardellini - SD A.A. 2/ 25

Estensione ed ottimizzazione dell algoritmo di Lamport distribuito (no messaggio di rilascio) Basato su clock logico scalare e relazione d ordine totale Un processo che vuole accedere ad una CS manda un messaggio di EQUEST a tutti gli altri contenente: nome della CS proprio identificatore timestamp locale Si pone in attesa della risposta da tutti gli altri Ottenuti tutti i messaggi di entra nella CS All uscita dalla CS manda a tutti i processi in coda interessati a CS Un processo che riceve può non essere nella CS richiesta e non volervi accedere # manda al mittente essere nella CS # non risponde e mette il messaggio in coda locale voler accedere alla CS # confronta il suo timestamp con quello ricevuto e vince quello minore: se è l altro invia, se è lui non risponde e mette il messaggio in coda Valeria Cardellini - SD A.A. 2/ 26 Begin Variabili locali per ciascun processo #replies (inizializzata a ) State $ {equesting, CS, } (inizializzato a ) Q coda di richieste pendenti (inizialmente vuota) Last_eq (inizializzata a ) Num (inizializzata a ) Ogni processo p i esegue il seguente algoritmo. State = equesting; 2. Num = Num+; Last_eq = Num; 3. for j= to N- send EQUEST to pj; 4. Wait until #replies=n-; 5. State = CS; 6. CS 7. % r$q send to r 8. Q=&; State=; #replies=; Valeria Cardellini - SD A.A. 2/ Upon receipt EQUEST(t) from pj. if State=CS or (State=equesting and {Last_eq, i} < {t, j}) 2. then insert {t, j} in Q 3. else send to pj 4. Num = max(t, Num) Upon receipt from pj. #replies = #replies+ 27

p Num= Last_eq= invia richiesta per CS Valeria Cardellini - SD A.A. 2/ 28 p Num= Last_eq= riceve richiesta di Num=max(, )= Valeria Cardellini - SD A.A. 2/ 29

p Num= Last_eq= Anche p invia richiesta per CS Num= Last_eq= Num= Valeria Cardellini - SD A.A. 2/ 3 p Num= Last_eq= p riceve Num= richiesta di Last_eq= Num= Valeria Cardellini - SD A.A. 2/ 3

p Num= Last_eq= Num= Last_eq= {Last_eq, i} < {t, j}? {, } < {, 2}? sì Num= Valeria Cardellini - SD A.A. 2/ 32 p Num= Last_eq= Num= Num = max(,) = Q Last_eq=,2 Num= Valeria Cardellini - SD A.A. 2/ 33

p Num= Last_eq= Num= Num = Q Last_eq=,2 Num= riceve richiesta di p Num = max(,) = Valeria Cardellini - SD A.A. 2/ 34 p Num= Last_eq= Num= Num = Q Last_eq=,2 {Last_eq, i} < {t, j}? {, 2} < {, }? no Num= riceve richiesta di p Num = Valeria Cardellini - SD A.A. 2/ 35

p Num= Last_eq= Num= Num = Q Last_eq=,2 Num= riceve richiesta di p Num = Valeria Cardellini - SD A.A. 2/ 36 p Num= Last_eq= Num= Num = Q Last_eq=,2 #replies= Num= riceve reply da Num = Valeria Cardellini - SD A.A. 2/ 37

p Num= Last_eq= Num= Num = Q Last_eq=,2 #replies= #replies= Num= p riceve reply da Num = Valeria Cardellini - SD A.A. 2/ 38 p Num= Last_eq= Num= Num = Q Last_eq=,2 CS #replies=2 #replies= Num= Num = p riceve reply anche da ed entra in CS Valeria Cardellini - SD A.A. 2/ 39

p Num= Q Last_eq=,2 #replies= Q CS CS #replies= #replies= CS CS #replies=2 Num = riceve reply anche da p ed entra in CS Valeria Cardellini - SD A.A. 2/ 4 Vantaggi Come Lamport distribuito, è completamente distribuito Nessun elemento centrale ispetto a Lamport distribuito, si risparmiano messaggi Non c è il messaggio di release Solo 2(N-) messaggi per accedere alla CS: N- messaggi di richiesta, seguiti da N- messaggi di reply Sono state proposte ottimizzazioni (non esaminate) che riducono il numero di messaggi a N Svantaggi (come Lamport distribuito) Se un processo fallisce nessun altro potrà entrare nella CS Tutti i processi possono essere collo di bottiglia Ogni processo partecipa ad ogni decisione Si assume che la comunicazione sia affidabile e FIFO ordered Valeria Cardellini - SD A.A. 2/ 4

Viene usata una risorsa ausiliaria, chiamata token L uso di token non è utile solo per la mutua esclusione: molti problemi distribuiti vengono risolti con questo meccanismo L algoritmo deve definire come vengono fatte le richieste per il token, mantenute e servite In un algoritmo basato su token in ogni istante esiste un solo possessore di token Il meccanismo garantisce la safety della mutua esclusione Tipi di algoritmi basati su token: Centralizzato (o approccio token-asking): esiste un processo coordinatore unico, responsabile di gestire il token Decentralizzato (o approccio perpetuum mobile): il token si muove nel sistema e porta con sé tutte le strutture dati richieste dal coordinatore nel caso centralizzato Valeria Cardellini - SD A.A. 2/ 42 Esiste un processo che svolge il ruolo di coordinatore e che gestisce il token Il coordinatore tiene traccia delle richieste, in particolare di: ichieste effettuate ma non ancora servite ichieste già servite Ogni processo p i mantiene un suo clock vettoriale in cui sono riportati i timestamp delle richieste Quando p i vuole entrare in CS invia una richiesta al coordinatore contenente il proprio clock vettoriale Il coordinatore ne prende nota e lo inserisce nella lista delle richieste pendenti Quando la richiesta di p i diventa eleggibile, il coordinatore invia il token a p i che entrerà in CS Uscito dalla CS p i restituisce il token al coordinatore Valeria Cardellini - SD A.A. 2/ 43

Strutture dati: eqlist Lista delle richieste ricevute dai processi ma non ancora servite V Vettore di dimensione pari al numero di processi egole: V[i]: numero di richieste di p i già servite All arrivo della richiesta di token da parte di p i eqlist = eqlist {p i, T pi } Quando la richiesta di p i diventa eleggibile (T pi " V) e il coordinatore ha il token Invia token a p i Valeria Cardellini - SD A.A. 2/ 44 Strutture dati: VC Clock vettoriale per il timestamp dei messaggi egole: All invio della richiesta di token: VC[i] = VC[i] + Invia msg al coordinatore (con timestamp VC) Alla ricezione del token Entra nella CS All uscita dalla CS Invia token al coordinatore All invio del messaggio di programma Invia msg (con timestamp VC) Alla ricezione del messaggio di programma VC = max(vc, msg.vc) Valeria Cardellini - SD A.A. 2/ 45

p p =coord. Valeria Cardellini - SD A.A. 2/ T p invia richiesta per CS Msg di richiesta token Msg di programma invia richiesta per CS Il coordinatore memorizza la richiesta di perché non è ancora eleggibile (c è una richiesta accaduta prima e non ancora servita) < 46 p =coord. p Il coordinatore invia il token a p Msg di richiesta token Msg di programma Msg con il token <= Valeria Cardellini - SD A.A. 2/ 47

p =coord. p T CS T Msg di richiesta token Msg di programma Msg con il token Il coordinatore controlla se la richiesta che aveva in coda è diventata eleggibile ed invia il token a <= Valeria Cardellini - SD A.A. 2/ 48 p =coord. p T CS T T T CS Msg di richiesta token Msg di programma Msg con il token Valeria Cardellini - SD A.A. 2/ 49

Vantaggi L algoritmo è efficiente in termini di numero di messaggi scambiati (solo 3) per accedere alla CS Viene garantita anche la fairness Svantaggi Il coordinatore rappresenta il collo di bottiglia del sistema ed è un singolo point of failure Occorre un meccanismo di elezione per determinare il nuovo coordinatore in caso di crash Valeria Cardellini - SD A.A. 2/ 5 Il token viaggia da un processo all altro I processi sono organizzati in un anello logico (unidirezionale) Il token viene passato dal processo p k al processo p (k+)mod N Il processo in possesso del token può entrare in CS Se un processo riceve il token ma non ha necessità di accedere alla CS, passa il token lungo l anello p p N p 4 Valeria Cardellini - SD A.A. 2/ Token 5

Vantaggi Se l anello è unidirezionale, viene garantita anche la fairness ispetto al centralizzato, migliora il bilanciamento del carico Svantaggi Il token si può perdere; in questo caso, occorre rigenerarlo Perdita di token anche per malfunzionamenti hw/sw Soggetto al crash dei singoli processi Se un processo fallisce, occorre riconfigurare l anello logico Se fallisce il processo che possiede il token, occorre eleggere il prossimo processo che avrà il token ischio e attenzione ai guasti temporanei che possono portare alla creazione di token multipli L algoritmo usa sempre banda per trasmettere il token, anche quando nessuno chiede l accesso alla CS Valeria Cardellini - SD A.A. 2/ 52 Per entrare in una CS occorre sincronizzarsi solo con il sottoinsieme dei processi interessati Algoritmi di votazione all interno del sottoinsieme I processi votano per stabilire chi è autorizzato ad entrare in CS Insieme di votazione V i : sottoinsieme di {p,, p N }, associato ad ogni processo p i Un processo p i per accedere alla CS Invia una richiesta a tutti gli altri membri di V i Attende le risposte icevute tutte le risposte dai membri di V i usa la CS Al rilascio della CS invia un release a tutti gli altri membri di V i Valeria Cardellini - SD A.A. 2/ Un processo p j in V i che riceve la richiesta Se è nella CS o ha già risposto dopo aver ricevuto l ultimo release non risponde e accoda la richiesta Altrimenti risponde subito con un reply Un processo che riceve un release estrae una richiesta dalla coda e invia un reply 53

Ogni processo p i esegue il seguente algoritmo: Inizializzazione state = ELEASED; voted = FALSE; Protocollo di ingresso nella sezione critica per p i state = WANTED; Multicast request a tutti i processi in V i {p i }; Wait until (numero di risposte ricevute = (K )); state = HELD; Alla ricezione di una richiesta da p j (i ' j) if (state = HELD or voted = TUE) then accoda request da p j senza rispondere; else invia reply a p j ; voted = TUE; end if Valeria Cardellini - SD A.A. 2/ 54 Protocollo di uscita dalla sezione critica per p i state = ELEASED; Multicast release a tutti i processi in V i {p i }; if (coda di richieste non vuota) then estrai la prima richiesta in coda, ad es. da p k ; invia reply a p k ; voted = TUE; else voted = FALSE; end if Alla ricezione di un messaggio release da p j (i ' j) if (coda di richieste non vuota) then estrai la prima richiesta in coda, ad es. da p k ; invia reply a p k ; voted = TUE; else voted = FALSE; end if Valeria Cardellini - SD A.A. 2/ L algoritmo garantisce la safety ma non l assenza di deadlock Si può rendere l algoritmo deadlockfree con messaggi aggiuntivi 55

Come è definito l insieme di votazione V i per p i? V i ( V j! & % i, j Insiemi di votazione ad intersezione non nulla V i = K % i Tutti i processi hanno insiemi di votazione con stessa cardinalità (stesso sforzo per ogni processo) Ogni processo p i è contenuto in M insiemi di votazione Stessa responsabilità per ogni processo p i $ V i Per minimizzare la trasmissione dei messaggi Si dimostra che la soluzione ottimale che minimizza K è K )" N Essendo N = K(K-) + Valeria Cardellini - SD A.A. 2/ S={,2} S3={,3} S2={2,3} S={,2,3} S4={,4,5} S6={,6,7} S2={2,4,6} S5={2,5,7} S7={3,4,7} S3={3,5,6} 56 Problema: come scegliere chi sono i processi a cui inviare la richiesta? Si costruiscono dei sottoinsiemi in modo tale che tra di loro abbiano intersezione non vuota Se un quorum accorda l accesso in CS ad un processo, nessun altro quorum (anche diverso) potrà accordare lo stesso permesso Prestazioni Per accedere alla CS occorrono un numero di messaggi pari a 3*N (2*N per ingresso in CS e *N per uscita dalla CS) Soluzione migliore di icart-agrawala per reti a larga scala essendo 3*N minore di 2(N-) per N > 4 Valeria Cardellini - SD A.A. 2/ 57

P = {p,, } V = {p, }, V 2 = {, }, V 3 = {, p } Situazione di deadlock p,, richiedono contemporaneamente l accesso in CS p,, impostano ognuno voted=tue ed aspettano la risposta dell altro p Voted=TUE V V 3 Voted=TUE V 2 Voted=TUE Valeria Cardellini - SD A.A. 2/ 58 Algoritmo Messaggi per ingresso/uscita dalla CS itardo prima dell ingresso (in messaggi) Problemi Autorizzazione o token centralizzato 3 2 Crash del coordinatore icart-agrawala 2(N-) 2(N-) Crash di un qualunque processo Token decentralizzato a + a N- Perdita del token Crash di un qualunque processo Maekawa 3*N 2*N Possibile deadlock Valeria Cardellini - SD A.A. 2/ 59

Molti algoritmi distribuiti richiedono che un processo agisca da coordinatore o leader oppure che abbia un ruolo speciale: come eleggere questo coordinatore in modo dinamico? Eleggere un coordinatore richiede accordo distribuito L obiettivo dell algoritmo di elezione è assicurarne la terminazione con l accordo di tutti i partecipanti Se i processi sono identici, basta uno qualsiasi Ipotesi: ogni processo ha un identificatore (id) univoco Obiettivo: eleggere il processo con l id più alto Algoritmi di elezione tradizionali Algoritmo bully (del prepotente) Algoritmo ad anello Algoritmi di elezione di superpeer Valeria Cardellini - SD A.A. 2/ 6 Il processo p i che rileva l assenza del coordinatore promuove una nuova elezione p i invia un messaggio ELEZIONE a tutti i processi con id maggiore del suo Se nessuno risponde, p i si autoproclama vincitore, invia un messaggio di proclamazione a tutti i processi con id minore del suo e diventa il nuovo coordinatore Se p k (con k>i) riceve il messaggio ELEZIONE da p i (che ha id minore del suo) risponde con il messaggio OK e rileva la gestione dell elezione, organizzandone una nuova Se p i riceve un messaggio OK, abbandona il suo proposito di diventare il nuovo coordinatore L algoritmo designa sempre come coordinatore il processo in vita con id maggiore Un processo appena (ri-)creato non conosce il coordinatore e dunque promuove una elezione Valeria Cardellini - SD A.A. 2/ 6

p 4 organizza l elezione p 5 e p 6 fermano p 4 p 5 e p 6 organizzano una nuova elezione Stiamo facendo un assunzione molto importante: quale? p 6 ferma p 5 p 6 vince e lo comunica a tutti Valeria Cardellini - SD A.A. 2/ 62 I processi sono ordinati logicamente in un anello Ogni processo conosce il suo successore Il processo p i che rileva l assenza del coordinatore promuove una nuova elezione p i invia un messaggio di tipo ELEZIONE a p (i+)mod N Se p (i+)mod N non è attivo, p i lo salta e passa al successivo lungo l anello, finché non trova un processo attivo Ad ogni passo, il processo che riceve il messaggio vi aggiunge il suo id e lo inoltra Al termine, il messaggio ritorna al processo p i, che identifica il processo con id più alto ed invia sull anello un messaggio di tipo COODINATOE per informare tutti su chi sia il nuovo coordinatore Valeria Cardellini - SD A.A. 2/ 63

Come selezionare superpeer che soddisfino uno o più tra i seguenti criteri: Accesso: i peer normali abbiano un basso tempo di latenza verso i superpeer Distribuzione: i superpeer siano distribuiti uniformemente nella rete overlay Proporzione: ci sia una quantità predefinita di superpeer in base al numero totale di peer nella rete overlay Bilanciamento del carico: ogni superpeer non serva più di un certo numero di peer Si possono applicare algoritmi derivanti dalla teoria dei grafi e dagli algoritmi di elezione tradizionali Esempi: problema dell insieme dominante, dominanza della distanza, problema del p-center iferimento: Lo et al., Scalable supernode selection in peer-to-peer overlay networks, Proc. of HOT-P2P, 25. Valeria Cardellini - SD A.A. 2/ 64