Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Algoritmi Avanzati Prof.ssa Rossella Petreschi
ALGORITMI DISTRIBUITI Lezione n°13 Algoritmi Avanzati Prof.ssa Rossella Petreschi 1
2
Sistema Distribuito Un Sistema Distribuito è un insieme interconnesso di computer, processi o processori, ciascuno definito in modo autonomo. Un sistema distribuito si può pensare semplicemente come un sistema fisico (computer connessi da una rete) o più in generale come un sistema logico: insieme di processi connessi da un meccanismo di scambio di messaggi. “... è un sistema in cui la caduta di un computer del quale ignoravi persino l’esistenza, può rendere il tuo computer inutilizzabile” Lensi Lamport “... è un modo di organizzare e considerare una famiglia di risorse indipendenti e possibilmente distanti (o debolmente connesse), come se facessero parte di un unico grande pacchetto” Andrew Tannenbaum 2
3
Differenza fra sistema distribuito e parallelo
Sistema parallelo sistema multiutente che si riferisce ad ambienti di lavoro di tipo collaborativi è pensato per essere usato da un singolo utente o processo per garantire la massima velocizzazione di una singola applicazione computer, processi o processori non omogenei e asincroni processori omogenei sincroni computer, processi o processori fra loro autonomi processori usati insieme per un’unica computazione problemi di sicurezza connessi alla rete (perdita di messaggi, cadute di sitema, condivisione dei dati, etc…) in genere è considerato come un sistema fisicamente e logicamente inaccessibile 3
4
Trasmissione dell’informazione
Nei sistemi distribuiti, la trasmissione dell’informazione assume un ruolo fondamentale. A seconda del sistema preso in considerazione, la rete di interconnessione può consistere in connessioni punto a punto (in tal caso ogni connessione gestisce il traffico esclusivamente fra due processori) o in canali di trasmissione (broadcast channels) che distribuiscono l’informazione a tutti i processori appartenenti ad un agglomerato (cluster) predefinito. I processori non condividono fisicamente alcuna memoria e quindi lo scambio di informazioni fra essi deve per forza passare lungo la specifica rete di interconnessione. 4
5
Task Definiamo task un frammento di codice sequenziale che deve essere
eseguito da un singolo processore. Quando due task debbono comunicare fra loro durante l’esecuzione, ma i processori che li stanno eseguendo non sono connessi direttamente nella rete, non c’è modo di effettuare tale comunicazione in modo diretto. Ogni processore nel sistema deve pertanto, sia eseguire il task che gli è stato assegnato, sia ridistribuire l’informazione secondo le necessità del caso. Queste due operazioni, per quanto possibile, non devono interferire fra di loro. In tal modo ogni processore viene visto dal sistema come una coppia di entità logiche che lavorano in modo indipendente: l’entità di processo che esegue il proprio compito e l’entità di comunicazione che trasmette l’informazione nella rete. 5
6
Algoritmo Distribuito
Un algoritmo distribuito D si può rappresentare come un grafo G = (P, C), dove l’insieme dei nodi è l’insieme dei processori e l’insieme degli spigoli orientati è un insieme di canali di comunicazione (generalmente unidirezionali). Tutti i processori, con l’eccezione di un sottoinsieme al quale è permesso di mandare messaggi “spontaneamente”, sono reattivi, ovvero eseguono un qualunque task solo come risposta al ricevimento di un messaggio da un altro task. Un solo blocco di processori Pinit può inizialmente eseguire un task a scopo di inizializzazione. 6
7
Schema base di un algoritmo distribuito
begin Pinit: exec eventuali operazioni di inizializzazione; send messaggio ai vicini repeat Pi: receive messaggio M e BM è vero exec qualche operazione send messaggi ai vicini until un segnale di terminazione globale arriva a D end La operazione di send invia un messaggio su uno o più canali di comunicazione uscenti da Pi. Ogni processore ha una coda di messaggi ricevuti. La receive estrae un messaggio dalla coda di Pi. 7
8
Complessità distribuita
complessità dei messaggi (Md): è il numero totale di messaggi spediti tra nodi vicini durante la computazione; complessità temporale (Td): tempo speso per la comunicazione durantela computazione del caso peggiore fino a quando l’output richiesto è stato raggiunto (o il sistema va in halt) 8
9
La rete ad anello Si suppone che i nodi dell’anello siano identificati da valori diversi scelti in un insieme di positivi qualunque, senza alcun vincolo di ordine. L’anello si considera unidirezionale. I singoli processi non conoscono la dimensione della rete; sono però in grado di distinguere fra vicino sinistro e vicino destro. 9
10
Broadcast in un sistema distribuito ad anello
P0 ha l’informazione da distribuire nella variabile inf begin P0: send inf al successore repeat Pi: receive inf da predecessore send inf al successore until P0 riceve messaggio dal predecessore end In una rete ad anello ad n nodi, vengono inviati n messaggi in n passi P0 P2 Pn-1 P1 P3 10
11
Dettagli sulla rete ad anello
Alle condizioni già note: Nodi dell’anello identificati da valori diversi scelti in un insieme di positivi qualunque, senza alcun vincolo di ordine. Anello unidirezionale. I singoli processi sono in grado di distinguere fra vicino sinistro e vicino destro, ma non conoscono la dimensione della rete. Si aggiunge la condizione seguente: Il solo processore eletto leader può generare un output. 11
12
Elezione del Leader su una rete ad anello
Algorithm LEA (Leader Election su un anello) begin Pinit=i: stato = ignoto stato finale =F send i al succ repeat Pi: receive inf if inf = halt and stato = ignoto then send halt al succ if inf = halt and stato = leader then stato finale =T if inf > i then send inf al succ if inf = i then stato = leader send halt al succ until inf = halt and stato finale =T end O(n2) messaggi in n passi Si noti che l’intero algoritmo termina quando il segnale di halt torna al leader. 12
13
Esempio di funzionamento di LEA
1 8 3 6 4 1 8 3 6 4 1 8 3 6 4 inizializzazione Passo 1 1 8 3 6 4 1 8 3 6 4 1 8 3 6 4 LEADER Passo 2 Passo 3 Passo 4 13
14
Correttezza e complessità dell’algoritmo LEA
Teorema: L’algoritmo LEA risolve il problema dell’elezione del leader su un sistema distribuito sincrono ad anello. Esso richiede complessità temporale n e complessità dei messaggi O(n2). Dimostrazione: La correttezza si basa sui seguenti due fatti: Fatto 1: Nessun processore, eccetto quello di indice massimo, raggiunge lo stato di leader. Fatto 2: Dopo n passi lo stato del processore di indice massimo è quello di leader. Dal Fatto 2 si deduce la complessità temporale che implica anche quella dei messaggi. 14
15
Un solo iniziatore Algorithm LEA (Leader Election su un anello con un solo inizializzatore init) begin Pi: stato = ignoto Pinit: send init al succ repeat Pi: receive inf if inf = halt and stato = ignoto then send halt al succ if inf = i then stato = leader send halt al succ if inf < i then inf = i send inf al succ until inf = halt and stato =leader end O(n) messaggi in O(n) passi 15
16
K-vicinato DEFINIZIONE:
Il k-vicinato di un processore p in un anello è dato dall’insieme dei processori che sono a distanza k da p nell’anello (sia da sinistra che da destra). Il k-vicinato chiuso di un processore include esattamente 2k+1processori 16
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.