Sistemi Distribuiti Sincronizzazione distribuita: Mutua esclusione ed elezione 1 Mutua Esclusione (algoritmo centralizzato) a) Il Processo 1 chiede al coordinatore il permesso di entrare in una regione critica. Il permesso gli viene concesso. b) Il Processo 2 quindi chiede al coordinatore il permesso di entrare nella stessa regione critica. Il coordinatore non risponde. c) Quando il Processo 1 esce dalla regione critica, informa il coordinatore, il quale manda il messaggio con il permesso per accedere al Processo 2 2 1
Mutua Esclusione (algoritmo centralizzato) Vantaggi Si garantisce la mutua esclusione Le richieste sono gestite in base all ordine di arrivo (il criterio di assegnazione dei permessi è equo) Nessun processo aspetta all infinito Svantaggi il coordinatore è un potenziale collo di bottiglia. il coordinatore è un single point itof crash. Quando vain crash occorre attivare un nuovo coordinatore o eleggerne uno tra i processi in vita: il nuovo coordinatore dovrà chiedere a tutti il loro stato (in sezione critica, in attesa di entrare, nessuno dei due). 3 Mutua Esclusione (algoritmo distribuito) Algoritmo Distribuito Sviluppato da Ricart & Agrawala (1981) Come funziona? Quando un processo vuole entrare in una regione critica, costruisce un messaggio includendo: NOME REGIONE CRITICA NUMERO DEL PROCESSO TEMPO CORRENTE (orologi logici) Manda il messaggio a tutti gli altri processi 4 2
Mutua Esclusione (algoritmo distribuito) L azione svolta al momento della ricezione del messaggio dipende dallo stato del processo: Se il ricevente non è nella sezione critica e non vuole entrarci, allora spedisce un OK al sender Se il ricevente è nella sezione critica, non effettua reply e mette il processo richiedente nella coda delle richieste Se il ricevente vuole entrare anche lui nella stessa sezione critica, allora confronta i timestamp delle sua richiesta con quella appena arrivata. Accede alla sezione il processo che ha il timestamp più vecchio (quindi manda l OK solo se il timestamp della propria richiesta ha valore più alto, altrimenti memorizza la richiesta in una coda di attesa di richieste pendenti) 5 Mutua Esclusione (algoritmo distribuito) Dopo aver inoltrato la richiesta, il processo aspetta la risposta da tutti. Quando tutti gli altri hanno risposto con un messaggio OK, allora il processo può entrare nella sezione critica All uscita dalla sezione critica il processo manda un OK ai processi che si trovano nella sua coda di attesa 3
Mutua Esclusione (algoritmo distribuito) Senza Lamport Algoritmo distribuito:esempio 5 Processo 0 manda una richiesta a tutti con timestamp=8 Allo stesso istante il processo 2 manda una richiesta a tutti con timestamp=12 Processo 1 manda OK a tutti Processi 0 e 2 confrontano i timestamp: il 2 manda OK allo 0 Il processo 0 vince ed entra nella sezione critica Al termine, il processo 0 manda l OK al processo 2 7 Mutua Esclusione (algoritmo distribuito) Caratteristiche: La mutua esclusione è garantita senza provocare deadlock o starvation; Ogni processo deve mandare la richiesta a tutti (con N processi si ha la necessità di avere 2(N-1) messaggi) si può utilizzare un servizio di Group communication (se la rete supporta il multicast il numero effettivo di messaggi che circolano sulla rete è inferiore a 2(N-1)) in ogni caso ogni processo deve mantenere una propria lista dei membri aggiornata (perché deve sapere se tutti gli hanno mandato l OK). Non esiste un Single Point of Failure... Ne esistono N. (soluzione: rilevare il crash di un processo nel gruppo ed attuare una azione di recovery, che potrebbe semplicemente voler dire fare un broadcast della notizia che il processo non appartiene più al gruppo) 8 4
Mutua Esclusione (2 algoritmo distribuito: Token Ring) Rete fisica Topologia logica (ogni nodo sa chi sono il predecessore e il successore) 9 Mutua Esclusione (2 algoritmo distribuito: Token Ring) Algoritmo Token Ring Un token circola nell anello Quando una stazione riceve il token, Verifica se vuole entrare nella regione critica: Se si Cattura il token Entra nella sezione critica Esegue in sezione critica Esce dalla sezione critica Rispedisce il token Se no Fa passare il token 10 5
Mutua Esclusione (2 algoritmo distribuito: Token Ring) Caratteristiche: Non è permesso entrare in due regioni critiche successive utilizzando lo stesso token Solo un processo alla volta può entrare nella regione critica La starvation non può accadere perché il token circola nell anello 11 Mutua Esclusione (2 algoritmo distribuito: Token Ring) Problemi: Perdita del token E difficile da individuare. Non essendoci bound temporali sul tempo di ciclo del token, non si può sapere se è in ritardo o se è stato perso Situazioni di crash (se si perde un anello della catena si interrompe la continuità del flusso dei token): in questo caso occorre ricostruire i l anello logico eliminando l elemento perso. 12
Mutua Esclusione Confronto tra gli algoritmi proposti Tipo di algoritmo N. messaggi per ciascuna visita alla regione critica Ritardo prima di entrare (in termini di numero di messaggi) Problemi Centralizzato 3 2 Crash del coordinatore Distribuito 2(N-1) 2(N-1) Crash dei processi Token Ring 1 ( se non accede alla RC) 0 N-1 Perdita token, crash processi 13 Problema dell elezione Bully algorithm Come eleggere un coordinatore? Bully Algorithm (Garcia-Molina 1982) Quando un processo nota che il coordinatore non risponde, allora avvia le elezioni. Sia P tale processo. P manda un messaggio ELECTION ad ogni processo con indirizzo superiore al proprio Se nessuno risponde allora P vince le elezioni ed è il nuovo coordinatore Se uno risponde, il compito di P è terminato Alla ricezione di un messaggio ELECTION, un processo con indirizzo più alto di P, avvia la fase di elezione 14 7
Convergenza Problema dell elezione Bully algorithm Al termine, solamente un processo non riceverà messaggi dagli altri. Questo processo è il nuovo coordinatore Se un processo era down e torna ad essere attivo, dà avvio ad una nuova elezione 15 Problema dell elezione Bully algorithm a) Il Processo 4 indice una elezione b) I Processi 5 e rispondono, 4 ha concluso. c) Ora 5 e indicono a loro volta una elezione 1 8
Problema dell elezione Bully algorithm d) Il Processo dice a 5 di terminare e) Il Processo vince l elezione, e lo comunica a tutti 17 Elezione (Ring Algorithm) Si assume che i processi siano ordinati logicamente in un anello: ogni processo sa chi e il suo successore Quando un processo nota che il coordinatore non riponde più, manda un ELECTION message (contenente il proprio numero) al successore Ogni processo che riceve l ELECTION message lo manda al successore aggiungendo il proprio numero Quando il messaggio torna a chi lo ha spedito, si controlla la lista dei numeri. Il più alto è il coordinatore Si manda un messaggio informando tutti dell identità del nuovo coordinatore 18 9
Elezione (Ring Algorithm) 7 0 234501 23450 1 2 2 3 23 4 2345 2345 5 234 è il nuovo coordinatore 19 Elezioni in ambienti senza fili (1) Election algorithm in a wireless network, with node a as the source. (a) Initial network. (b) (e) The build-tree phase 20 10
Elezioni in ambienti senza fili (2) (a-e) The build-tree phase ogni nodo sceglie un solo nodo padre e risponde con un ack agli altri che gli hanno inviato un messaggio di elezione 21 Elezioni in ambienti senza fili (3) (f) Reporting of best node to source ogni nodo restituisce un msg. di elezione al padre (con l id del nodo migliore) solo quando ha ricevuto tutti i msg. di ritorno. Chi ha indetto le elezioni comunica il vincitore. 22 11
Elezioni in sistemi di ampia scala (Selezione di più di un nodo) Requirements for superpeer selection: 1. Normal nodes should have low-latency access to superpeers. 2. Superpeers should be evenly distributed across the overlay network. 3. There should be a predefined portion of superpeers relative to the total number of nodes in the overlay network. 4. Each superpeer should not need to serve more than a fixed number of normal nodes. 23 Elezioni in sistemi di ampia scala Moving tokens in a two-dimensional space using repulsion forces. 24 12
Ringraziamenti Questi lucidi sono un adattamento del materiale preparato dal prof.ssa Giuliana Franceschinis per il corso di Sistemi Operativi II, A.A. 2002/2003 25 13