Sincronizzazione e coordinamento in sistemi distribuiti

Transcript

Sincronizzazione e coordinamento in sistemi distribuiti
Mutua esclusione
Sincronizzazione e coordinamento nel distribuito
Sincronizzazione interna: concordata fra un insieme di processi
esterna: forzata da un agente esterno
Sincronizzazione in sistemi centralizzati
uso di primitive basate implicitamente sull’esistenza della memoria condivisa
Mutua esclusione in ambito distribuito
Attività di coordinamento fra processi per realizzare la condivisione di risorse e
garantirne la consistenza in un sistema distribuito
Sincronizzazione in sistemi distribuiti
stabilire le relazioni di ordinamento temporale fra gli eventi
Es: accesso ad un file in scrittura
Sincronizzazione in sistemi distribuiti:
- sincronizzazione di orologi
- mutua esclusione
- algoritmi di elezione
- transazioni atomiche
- gestione dello stallo
Meccasismo indipendente dallo specifico metodo di gestione della risorsa
Accesso esclusivo (temporaneo)
Se un insieme di processi concorda chi ha il diritto -> algoritmi di elezione
Mutua esclusione distribuita di un insieme di risorse
Definizione di algoritmi distribuiti
- informazione distribuita sui nodi
- decisione dei processi basata su informazione disponibile localmente
- tolleranza ai guasti di singoli nodi
- mancanza di un orologio globale o tempo assoluto
1
1. Al più un processo per volta esegue la sezione critica
(safety)
2. Un processo che chiede di entrare in una sezione critica alla fine la ottiene e al
termine lo lascia (assenza di stallo e attesa infinita)
(liveness)
3. L’ingresso nella sezione critica deve rispettare la relazione d’ordine causale
(ordering)
SOD.2
Algoritmo del servente centrale
Mutua esclusione con gestione di token - algoritmo centralizzato
Più semplice: si simulano le primitive offerte dal sistema centralizzato tramite un
processo coordinatore
•
•
•
•
un processo chiede al coordinatore di entrare e se necessario si blocca
la risposta è un token di accesso
alla ricezione della risposta entra nella sezione critica
quando esce dalla critica lo comunica al coordinatore (restituisce il token)
4
2
Un insieme di richieste sono servite in ordine di arrivo
Non soddisfa il criterio 3
1. Richiesta
token
Processo coordinatore è un processo servente
elemento centrale
possibile collo di bottiglia
in caso di guasto il processe cliente bloccato può non rilevare l’evento
Vantaggi:
semplicità - assenza di stallo - assenza di attesa infinita
Server
Coda di
richieste
p
3. Conferma
token
2. Rillascio
token
p
4
1
p
SOD.3
p
2
3
SOD.4
Algoritmo distribuito
Algoritmo di Ricart e Agrawala’s
Assunzioni - esiste un ordinamento globale degli eventi - trasmissione affidabile
• un processo che vuole entrare nella sezione critica manda un messaggio a tutti in
multicast con
- nome della sezione critica
- proprio identificatore
- timestamp locale
• si pone in attesa della risposta da tutti
• ottenuti tutti gli OK entra nella sezione critica
• all’uscita dalla s.c. manda OK a tutti i processi in coda
• un processo che riceve può
- non essere nella s.c. richiesta e non vuole entrarvi-> manda OK al mittente
- essere nella s.c. -> non risponde e mette il messaggio in coda locale
- voler entrare nella s.c. -> confronta i timestamp e la più anziana ha
maggior priorità, se è l’altro invia OK, se è lui pone il messaggio in coda
Come una gestione di token logico condiviso
Ogni processo è in uno stato :
RELEASED - WANTED - HELD
SOD.5
Inizializzazione:
state := RELEASED;
Protocollo di ingresso nella sezione critica
state := WANTED;
Multicast request a tutti i processi;
elaborazione della request rinviata qui
T := timestamp della richiesta;
Wait until (numero di risposte ricevute = (N – 1));
state := HELD;
Alla ricezione del messaggio di richiesta <Ti, pi> a pj (i ≠ j)
if (state = HELD or (state = WANTED and (T, pj) < (Ti, pi)))
then
accoda request da pi senza rispondere;
else
rispondi subito a pi;
end if
Protocollo di uscita dalla sezione critica
state := RELEASED;
rispondi a tutte le richieste;
SOD.6
Esempio di sincronizzazione con multicast
41
Algoritmo distribuito - efficienza e correttezza
Assenza di stallo
Assenza di attesa infinita (ordinamento globale)
Garantisce le condizioni 1-2-3
41
p
Algoritmo totalmente distribuito - nessun elemento centrale
3
p
Reply
1
34
Reply
41
Limiti:
• dati N processi occorrono 2(N-1) messaggi (per richiesta multicast e risposte)
se è supportato il multicast eventualmente N
prestazioni e costo
• se un processo fallisce nessun altro potrà entrare nella s.c.
tolleranza ai guasti
soluzione: usare richieste non bloccanti
• tutti i processi possono essere collo di bottiglia
ogni processo partecipa ad ogni decisione
prestazioni
Reply
34
p
34
2
p1 e p2 chiedono di entrare nella s.c.
p3 non è interessato
Varianti e ottimizzazioni
SOD.7
SOD.8
Algoritmo ad anello
Mutua esclusione con gestione ad anello
Anello logico: ordinamento circolare dei processi
p
• all’inizio il processo 1 ha un token che poi passa al successivo
• Il processo che ha il token è abilitato all’accesso alla sezione crititca
Verifica delle condizioni 1 e 2
La condizione 3 non è necessariamente garantita
- Costo
numero di messaggi per ottenere il token:
[1,N-1]
“
per uscire dalla sezione critica: 1
“
per sincronizzazione sulla sezione critica: [1,N-1]
- Affidabilità
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
perdita di token anche per malfunzionamenti hw/sw
rischio e attenzione ai guasti temporanei che possono portare alla
creazione di token multipli
- Prestazioni
l’algoritmo usa sempre banda per trasmettere il token anche
quando nessuno chiede la s.c.
SOD.9
1
p
2
pn
p
3
p
4
Token
SOD.10
Algoritmo di votazione
Algoritmo di votazione - condizioni
Per entrare in una sezione critica occorre sincronizzarsi solo con il sottoinsieme
dei processi interessati
Algoritmi di elezione all’interno del sottoinsieme
I processi votano per stabilire chi è autorizzato ad entrare nella s.c.
• insieme di votazione Vi sottoinsieme di {p1,…, pN}, associato ad ogni processo pi
•
•
•
•
un processo per entrare in una s.c. invia una richiesta a tutti gli altri membri di Vi
attende le risposte reply
ricevute tutte le risposte di usa la s.c.
al rilascio della s.c. invia un relese a tutti gli altri membri di Vi
• un processo pj in Vi che riceve la richiesta
- se è nello statoHELD o ha già risposto dopo aver ricevuto l’ultimo
messaggio 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
SOD.11
Definizione dei Vi
- processo pi appartiene a Vi
- Vi e Vj hanno intersezione non vuota, almeno un membro comune
- cardinalità costante (K) di Vi per equità
- ogni processo pj appartiene ad M insiemi Vi
Assunzioni: K= √N e M=K
Definizione degli insiemi: non banale
Garantita la condizione 1
I processi pi e pj che competono per la stessa s.c. hanno intersezione non vuota di Vi e Vj
Possibilità di stallo - condizione di attesa circolare
Varianti per la rimozione dello stallo: elaborazione delle richieste in ordine causale
-> verifica anche della condizione 3
- Costo ingresso nella s.c. 2 √N messaggi , uscita dalla s.c. √N messaggi
rispetto all’algoritmo distribuito
3 √N < 2(N-1)
se N>4
- Affidabilità guasto di un processo non partecipante non influenza l’algoritmo
SOD.12
Algoritmo di Maekawa – parte 1
Algoritmo di Maekawa – parte 2
Inizializzazione
state := RELEASED;
voted := FALSE;
Protocollo di ingresso nella sezione critica per pi
state := WANTED;
Multicast request a tutti i processi in Vi – {pi};
Wait until (numero di risposte ricevute = (K – 1));
state := HELD;
Alla ricezione di una richiesta da pi a pj (i ≠ j)
if (state = HELD or voted = TRUE)
then
accoda request da pi senza rispondere;
else
invia reply a pi;
voted := TRUE;
end if
Protocollo di uscita dalla sezione per pi
state := RELEASED;
Multicast release a tutti i processi in Vi – {pi};
Alla ricezione di un messaggio release da pi a pj (i ≠ j)
if (coda di richieste non vuota)
then
estrai la prima richiesta in coda – da pk;
invia reply a pk;
voted := TRUE;
else
voted := FALSE;
end if
Continua
SOD.13
SOD.14
Confronti
Algoritmi di Elezione
Scegliere un processo che agisca come coordinatore
Algoritmi per la realizzazione della mutua esclusione in ambito distribuito
Algoritmo
messaggi per entrata
e uscita dalla s.c.
ritardo
problemi
Centralizzato
3
2
guasto del
coordinatore
Distribuito
2(N-1)
2(N-1)
crash di processo
Anello
[1,N]
[0,N-1]
perdita del token
crash di processo
Votazione
2 √N
√N
2 √N
√N
crash di processo del
gruppo votante
(entrata)
(uscita)
Varianti per maggiore tolleranza ai guasti
Centralizzato è il più semplice
SOD.15
Ipotesi
- tutti i processi sono numerati in modo univoco
- solitamente il coordinatore è il processo ‘vivo’ con numero più alto
- ogni processo conosce il numero di tutti gli altri
Obbiettivo: alla fine dell’algoritmo tutti i processi concordano su un processo eletto
Un processo chiama una elezione
Ogni processo può essere partecipante o no alla elezione
Il processo eletto è unico anche se più processi hanno chiamato l’elezione
Ogni processo ha un identificatore di processo eletto pi ha elettoi event. indefinito
Requisiti durante una esecuzione di un algoritmo di elezione
P è il processo eletto al termine del run dell’algoritmo, processo attivo con
identificatore max
1. ogni processo pi ha elettoi = P o indefinito
(safety)
2. Tutti i processi partecipano e al termine ogni pi che sia attivo ha elettoi non
indefinito
(liveness)
SOD.16
Algoritmi di Elezione - Ordinamento circolare
Algoritmo di elelzione basato su anello
Ipotesi: comunicazione affidabile - i processi sono soggetti a guasti
3
17
Ordinamento circolare [Chang e Roberts]
Anello logico : lista ordinata di processi vivi
Il messaggio di elezione viene inviato solo al processo successivo
Ogni processo aggiunge sé stesso alla lista dei processi vivi
Al termine il processo che riceve un messaggio di elezione dove il primo # è il suo si
riconosce come processo coordinatore e lo comunica in modo circolare
• Ogni processo inizialmente non partecipa all’elezione, diventa partecipe
aggiungendo il suo nome alla lista
• se l’id del messaggio di elezione è maggiore, lo passa e diventa partecipante
• se l’id del messaggio di elezione è minore, mette il proprio id e lo passa (se non è
già partecipante)
• se l’id del messaggio di elezione è uguale, allora è coordinatore e diventa non
partecipante, manda il messaggio eletto
• ogni altro processo che riceve messaggio eletto si marca non partecipante
SOD.17
4
24
9
1
15
28
24
Nota: Elezione iniziata dal processo 17.
L’id. di processo più alto finora incontrato è 24.
I processi che partecipano sono quelli scuri.
SOD.18
Ordinamento circolare - condizioni
Algoritmo bully
Seleziona il processo con il numero più alto
Verifica la condizione 2
Caso pessimo: una chiamata di elezione, (3N-1) messaggi necessari per completare
l‘elezione
Tempo di risposta: proporzionale a (3N-1)
Tolleranza ai guasti: scarsa
Migliorabile con identificazione di guasti e ricostruzione dell’anello
•
•
•
Algoritmo bully [Garcia Molina]
Ipotesi: processi non affidabili, soggetti a guasti, comunicazione affidabile
sistema sincrono: uso di timeout per riconoscere i guasti
ogni processo consce i processi con gli identificatori maggiori
e può comunicare con questi
Tre tipi di messaggi
elezione
risposta
coordinatore
SOD.19
un processo indice l’elezione inviando il messaggio di elezione ai processi con id
più alto, e aspetta le risposte
se la risposta non arriva entro un timeout si nomina coordinatore (si autoelegge!)
e lo comunica agli altri inviando un messaggio coordinatore a tutti i processi con
id più basso
altrimenti aspetta una altro tempo per l’arrivo di un messaggio coordinatore, e se
non arriva, indice un’altra elezione
•
un processo che riceve un messaggio coordinatore registra il # e lo considera
coordinatore
•
un processo che riceve un messaggio elezione, invia una risposta al mittente ed
indice a sua volta una elezione se già non lo ha fatto, anche se esiste un altro
coordinatore
SOD.20
Algoritmo bully - esempio
Algoritmo bully - condizioni
election
Elezione del
coordinatore p2,
dopo il guasto di p4
e poi di p3
Quando viene indetta una elezione?
- quando un processo viene riattivato dopo un guasto e se ha l’id più alto diventa
coordinatore e lo annuncia (anche se esiste già un altro coordinatore)
- quando un processo nota che il coordinatore non risponde
- quando riceve un messaggio di elezione da un processo con numero inferiore
C
election
Stage 1
p
answer
1
p
p
2
p
3
4
answer
election
election
election
C
Stage 2
p1
p
answer
2
p
3
Costo
p
4
caso pessimo O(n2) messaggi
caso ottimo O(n-2) messaggi
timeout
Garantisce la condizione 2 (liveness) ma non la 1 (safety) nel caso di guasti in cui un
processo viene rimpiazzato da un altro con lo stesso id
Stage 3
p
p
1
2
p
3
p
4
Problema della accuratezza del timeout
Eventually.....
coordinator
C
Stage 4
p
1
p
2
p
3
p
4
SOD.21
SOD.22
Gestione dello stallo
Stallo - condizioni
Effetto collaterale della mutua esclusione (accesso esclusivo ad una risorsa da
parte di un processo)
se sono vere anche le condizioni di
- allocazione di risorse senza prelazione - il sistema non può forzare il rilascio della
risorsa da un processo
- hold and wait - un processo che ha assegnata una risorsa non la rilascia (la
blocca) e si può porre in attesa di un’altra risorsa
- attesa circolare - esiste un cammino chiuso nel grafo di allocazione
P1
P2
Esempio senza mutua esclusione
P1
R1
P1
P2
Esempio con prelazione
P1
R2
R1
P2
P2
R2
assegnamenti di risorse
assegnamenti di risorse
Esempio senza
attesa circolare
R1
R2
richieste di risorse
R1
SOD.23
R2
richieste di risorse
SOD.24
Tecniche di gestione dello stallo
Tecniche: prevenzione lo stallo
Se la risorsa è un buffer si parla di stallo della comunicazione
Se coinvolge due nodi stallo diretto store and forward
Se coinvolge più nodi stallo indiretto store and forward
Si agisce su una condizione - m.e. e prelazione spesso non si possono eliminare
Alternative:
Tecniche (PAID)
- prevenire
- evitare
- ignorare
- rilevare
• preallocazione di risorse
ogni processo ottiene le risorse prima dell’esecuzione
inefficienza (basso utilizzo delle risorse se i tempi di esec. sono lunghi)
• permettere una sola allocazione di risorsa -> evita il ciclo
ma a volte dei processi devono usare accessi simultanei
Avoidance (Evitare)
come in sistemi centralizzati: determinare lo stato stabile in base alle esigenze dei
processi
Svantaggi:
- i processi spesso non possono specificare le ‘esigenze’ in termini di allocazione di
risorse
- algoritmo inefficiente già in sistemi centralizzati , NP
SOD.25
• rilascio forzato delle risorse -> evita il ciclo
ogni processo è forzato a liberare le risorse prima di un’altra richiesta
così altri processi possono continuare
• ordinamento di acquisizione delle risorse -> evita il ciclo
risorse numerate e accesso/acquisizione solo in ordine crescente
si alloca solo se tutte le risorse già allocate hanno un numero inferiore
• regole di anzianità
timestamp unico per ogni processo
un processo deve lasciare le risorse se sono richieste da un processo più
anziano
SOD.26
Tecniche: ignorare e rilevare
Algoritmo di rilevazione dello stallo
Ignorare
Spesso usato - Es. Unix
Intervento del sistemista o notifica dell’utente
Rimozione eliminando la condizione di attesa ciclica, es. terminando un processo
Rilevare
Più applicato
Algoritmo di Chandy-Misra-Haas
Basato su messaggio test inviato se un processo
- non riesce ad ottenere una risorsa o
- se scatta un timeout
Rimozione eliminando la condizione di attesa ciclica, es. terminando un processo
Test con tre campi:
- identificatore del processo bloccato
“
“
“ che invia il messaggio
“
“
“ destinatario del messaggio
• un processo P1 bloccato inizia un test e lo invia al processo P2 che ha la risorsa
P1
P2
• il processo P2 che riceve il messaggio test
se non vuole altre risorse finisce il test
altrimenti se è bloccato su P3 invia a P3 un messaggio modificato
• se un processo riceve un messaggio con primo e terzo campo uguale
-> rileva lo stallo
P1 P1
P1
P2
P1
P2
A
A
P2
P3
P3
B
B
A
stallo
SOD.27
P1
A
B
A
SOD.28
Rimozione dello stallo
Rilevato lo stallo occorre rimuoverlo
- segnalazione al sistema
- determinazione del processo da terminare
- terminazione del processo e rilascio delle risorse
- rollback ad uno stato consistente
- uso di checkpoint per il rollback
Problemi: determinazione della frequenza del checkpoint
Per evitare la attesa infinita: aumentare la priorità del processo terminato
SOD.29