Algoritmi Avanzati a.a. 2010/2011

Slides:



Advertisements
Presentazioni simili
Algoritmi Paralleli e Distribuiti a.a. 2008/09
Advertisements

Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 10/03/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Ing. Sara Tucci Piergiovanni
PERMESSO PERsistent MESSaging in ad hOc networks Corso di Reti di Calcolatori LS – AA Presentazione di Davide Sansovini Professore: Antonio Corradi.
/26 Corso Sistemi Distribuiti 6 cfu Docente: Prof. Marcello Castellano.
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi Algoritmi distribuiti Lezione n°9.
Prof.ssa Rossella Petreschi Lezione del 5/12/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 11 del testo Anany Levitin “The design.
“Non c’è nessun buon motivo per il quale ogni persona nel mondo debba possedere un computer”- Kenneth Henry Olsen. (una delle frasi più sbagliate nella.
Università degli Studi - “ G. d'Annunzio ” Chieti - Pescara FACOLTÀ DI ECONOMIA Corso di laurea in Economia Informatica/s Seminario di: Giovanni Placentino.
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi Algoritmi distribuiti 2 Lezione n°10.
Algoritmi Avanzati a.a.2015/2016 Prof.ssa Rossella Petreschi Lezione n°10.
CONTROLLO DELLA CONCORRENZA
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Cinematica Breve riepilogo che non può sostituire il programma svolto nel biennio. Verificate di essere in grado di leggerlo e comprenderlo. Prendete nota.
Gli assiomi della relatività ristretta
© 2007 SEI-Società Editrice Internazionale, Apogeo
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
La comunicazione attraverso la rete
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2012/2013 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2015/2016 Prof.ssa Rossella Petreschi
Branch and Bound Lezione n°14 Prof.ssa Rossella Petreschi
Algoritmi di stima con perdita di pacchetti in reti di sensori wireless: modellizzazione a catene di Markov, stima e stima distribuita Chiara Brighenti,
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Lezione n°19 Prof.ssa Rossella Petreschi
Modelli di sistemi distribuiti
Controlli Automatici - A.A. 2003/2004
Protocollo di locking a due fasi stretto
Microcontrollori e microprocessori
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi
Il calcolo della probabilità
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2015/2016 Prof.ssa Rossella Petreschi
B-alberi e alberi autoaggiustanti
Tecniche di conteggio di particelle/fotoni
Amministrazione dei servizi di stampa
Lezione n°14 Reti di flusso Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
Usi (meno scontati) della visita DFS
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
analizzatore di protocollo
SUBNETTING E SUPERNETTING
ASSIOMI DELLA RELATIVITA’ RISTRETTA
K4 è planare? E K3,3 e K5 sono planari? Sì!
Introduzione L’8254 è un interval timer event/counter, progettato per risolvere i problemi del controllo del timing, comuni ad ogni microcomputer. E’ costituito.
Lezione n°12 Prof.ssa Rossella Petreschi
ASSIOMI DELLA RELATIVITA’ RISTRETTA
Concetti introduttivi
Algoritmi per il flusso nelle reti
Algoritmi per il flusso nelle reti
Lezione n°6 Prof.ssa Rossella Petreschi
Scheduling in Linux (Kernel 2.4 e 2.6)
© 2007 SEI-Società Editrice Internazionale, Apogeo
Processi e thread in Windows 2000
Algoritmi e Strutture Dati
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
Strapazziamo le immagini…
Usi (meno scontati) della visita DFS
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Laboratorio II, modulo “Skype”.
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
Lezione n°7 Splay-Trees e Heaps Prof.ssa Rossella Petreschi
Il problema del flusso nelle reti
RETI.
Transcript della presentazione:

Algoritmi Avanzati a.a. 2010/2011 Lezione del 25/05/2011 – Causality and Time Prof.ssa ROSSELLA PETRESCHI a cura di Emanuel Fadlun

Corso di Algoritmi Avanzati – anno accademico 2010/2011 Gli orologi logici Premesse Spesso è utile conoscere l’ordine degli eventi in un sistema distribuito Questa conoscenza può essere raggiunta anche in un sd asincrono che non ha nessun modo di misurare il tempo. Ciò è possibile osservando la relazione di causalità tra gli eventi. Assunzioni: Due eventi che accadono su uno stesso processo possono sempre essere ordinati Un evento di ricezione di un messaggio segue sempre l’evento di invio del messaggio stesso Corso di Algoritmi Avanzati – anno accademico 2010/2011

Relazione Happened-Before Gli eventi possono quindi essere ordinati secondo una relazione di causa-effetto. Lamport introduce il concetto di relazione di happened-before o ordinamento causale. Dati due eventi e ed e’ allora e precede e’ , indicato con e ↦ e’ se è verificata una delle seguenti condizioni: 1. gli eventi e ed e’ appartengono allo stesso processo ed e accade prima di e’ 2. gli eventi e ed e’ appartengono a processi distinti, dove e è l’evento di invio di un messaggio ed e’ è l’evento di ricezione di tale messaggio; 3. esiste un evento e’’ tale che e ↦ e’’ e e’’ ↦ e’ se ¬(e ↦ e’) ed ¬(e’ ↦ e ), i due eventi sono detti concorrenti e si scrive: e || e’ Corso di Algoritmi Avanzati – anno accademico 2010/2011

Relazione Happened-Before: Esempio Corso di Algoritmi Avanzati – anno accademico 2010/2011

se e ↦ e’ allora C(e) < C(e’) Clock logico scalare L’idea è di ordinare gli eventi del sistema assegnando a ciascun evento un numero naturale chiamato timestamp. Il Clock Logico è un contatore software monotonicamente crescente Ogni processo Pi ha il proprio clock logico Ci usato per applicare i timestamp agli eventi L’ordinamento è basato sulla relazione “happened before ↦” Ad ogni evento e viene associato un timestamp Ci(e), tale che: se e ↦ e’ allora C(e) < C(e’) Corso di Algoritmi Avanzati – anno accademico 2010/2011

Corso di Algoritmi Avanzati – anno accademico 2010/2011 Algoritmo per mantenere correttamente I clock logici scalari Ogni processo Pi mantiene un contatore Ci inizializzato a 0 e segue le seguenti regole di aggiornamento: quando Pi esegue un evento, prima incrementa il contatore Ci di una unità (Ci:= Ci +1) e quindi associa un timestamp all’evento il cui valore è pari al valore corrente di Ci quando Pi invia un messaggio, esegue l’evento di trasmissione e allega al messaggio il timestamp associato a tale evento ricavato dalla regola precedente quando Pi riceve un messaggio con timestamp T, pone Ci:= max(Ci, T) e quindi esegue l’evento di ricezione del messaggio (ovvero applica la regola al primo punto) Corso di Algoritmi Avanzati – anno accademico 2010/2011

Corso di Algoritmi Avanzati – anno accademico 2010/2011 Timestamp scalari in un esempio di esecuzione e1 e2 e3 e4 e5 p0 1 2 3 7 8 e6 e7 e8 e9 p1 2 4 5 6 e10 e11 e12 e13 e14 e15 e16 p2 1 2 3 4 5 6 7 Corso di Algoritmi Avanzati – anno accademico 2010/2011

Corso di Algoritmi Avanzati – anno accademico 2010/2011 Analisi del modello Limiti Se e ↦ e’ allora C(e) < C(e’) ma non è vero il viceversa! Guadando i timestamp di due eventi non è possibile stabilire se essi siano concorrenti o meno. Causa La relazione happens-before è un ordinamento parziale mentre i logical timestamps sono interi con la relazione < di ordinamento totale quindi le informazioni riguardo alla non causalità vengono perse Soluzione Dobbiamo scegliere i logical timestamps da un dominio che non sia totalmente ordinato Corso di Algoritmi Avanzati – anno accademico 2010/2011

Clock logico vettoriale Ad ogni evento e viene assegnato un vettore V(e) di dimensione pari al numero dei processi con la seguente proprietà: e → e’ se e solo se V(e) < V(e’) Definiamo un ordinamento parziale per i vector timestamp. Siano v (e) e v (e’) due vettori di n interi associati rispettivamente all’evento e ed e’ v (e) ≤ v(e’) sse per ogni i, 0 ≤ i ≤ n-1, v(e) [i] ≤ v(e’) [i] v (e) <v (e’) sse v (e) ≤ v (e’) e v (e) ≠ v (e’) I vettori v (e) e v (e’) sono incomparabili se nè v (e) ≤ v (e’) nè v (e’) ≤ v (e). Corso di Algoritmi Avanzati – anno accademico 2010/2011

Clock logico vettoriale Il clock logico vettoriale per un sistema di N processi è dato da un vettore di N interi Ciascun processo pi mantiene il proprio clock vettoriale Vi Per il processo pi, Vi[i] è il clock logico locale Ciascun processo usa il suo clock vettoriale per assegnare il timestamp agli eventi Analogamente al clock scalare, il clock vettoriale viene allegato al messaggio m ed il timestamp diviene vettoriale Con il clock vettoriale si catturano completamente le caratteristiche della relazione happened-before. e → e’ se e solo se V(e) < V(e’) e1 || e2 sse V (e1 ) e V(e2) sono incomparabili. Corso di Algoritmi Avanzati – anno accademico 2010/2011

Corso di Algoritmi Avanzati – anno accademico 2010/2011 Algoritmo per mantenere correttamente i clock logici vettoriali Ogni processo pi inizializza il proprio clock vettoriale Vi Vi [j] = 0 ∀ j= 1,2..N Prima di eseguire un evento, pi incrementa la sua componente del clock vettoriale Vi[i] = Vi[i] + 1 Quando Pi invia il messaggio m a pj Genera l’evento send(m) Allega al messaggio m, il timestamp t = Vi Quando Pj riceve il messaggio m con timestamp t Aggiorna il proprio clock logico Vj [j] = max ( t[j], Vj [j] ) ∀ j = 1,2..N Genera l’evento di receive(m) Dopo che si è eseguito un evento, Pi assegna all’evento il timestamp vettoriale con valori pari a Vi Corso di Algoritmi Avanzati – anno accademico 2010/2011

Corso di Algoritmi Avanzati – anno accademico 2010/2011 Timestamp vettoriali in un esempio di esecuzione e1 e2 e3 e4 e5 p0 <1,0,0> <2,0,0> <3,0,0> <4,4,5> <5,4,5> e6 e7 e8 e9 p1 <1,1,0> <1,2,3> <1,3,3> <2,4,5> e10 e11 e12 e13 e14 e15 e16 p2 <0,0,1> <0,0,2> <0,0,3> <2,0,4> <2,0,5> <2,3,6> <2,3,7> Corso di Algoritmi Avanzati – anno accademico 2010/2011

Precedenza causale tra eventi di broadcast Un evento di broadcast è dato dall’invio di un messaggio m da parte „ di un processo pi a tutti i processi del sistema. un evento e=broadcast(m) precede causalmente un evento e’=broadcast(m’) „ se una delle seguenti condizioni è verificata: e ed e’ sono eventi generati dallo stesso processo e broadcast(m) avviene prima di broadcast(m’) e ed e’ sono generati da processi diversi e l’evento e’ è generato dopo aver consegnato m 3. ∃ m’’ tale che broadcast(m) → broadcast(m’’) ∧ broadcast(m’’) → broadcast(m’) Garantisce che l’ordine in cui i processi consegnano i messaggi al livello applicativo non possa violare l’ordine indotto dalla relazione happened-before dei corrispondenti eventi di broadcast Corso di Algoritmi Avanzati – anno accademico 2010/2011

Causal Broadcast: Specifica Se due messaggi di broadcast m e m’ sono tali che broadcast(m) → broadcast(m’), allora ogni processo deve consegnare m prima di m’ Se i broadcast di m e m’ sono concorrenti, allora i processi sono liberi di consegnare m ed m’ in qualsiasi ordine. Corso di Algoritmi Avanzati – anno accademico 2010/2011

Causal Broadcast: Illustrazione m1 p1 m3 p2 p3 m4 m2 m1 → m3 quindi tutti i processi devono consegnare m1 prima di m3 m1 || m2 quindi m1 e m2 possono essere consegnati diversamente da tutti i processi m2 → m4 quindi tutti i processi devono consegnare m2 prima di consegnare m4 Corso di Algoritmi Avanzati – anno accademico 2010/2011

Causal Broadcast: Algoritmo Assumiamo che il modello sia asincrono e senza guasti Ogni processo pi mantiene un vector clock VCi che tiene traccia della conoscenza corrente del numero di messaggi inviati da ciascun processo. In particolare VCi [j] rappresenta la conoscenza del numero di messaggi che Pj ha inviato in broadcast e consegnati da Pi Ogni messaggio di broadcast m ha allegato un timestamp vettoriale m.VC che rivela quanti messaggi ogni processo ha inviato in broadcast nel passato causale del broadcast di m Un processo Pi deve ritardare la consegna di un messaggio m fino a che tutti i messaggi inviati in broadcast nel “passato causale” di m sono consegnati da Pi Corso di Algoritmi Avanzati – anno accademico 2010/2011

Causal Broadcast: Pseudo Codice Ogni processo pi implementa le seguenti regole per gestire il causal broadcast Procedure broadcast (m) m.VC=Vi //timestamp da allegare a m For all j ∈ {1 … N} Send(m) to pj // invio del messaggio di broadcast VCi[i] = VCi[i]+1 //aggiornamento del clock locale Upon receive m from pj Delay the delivery until ∀ k ∈ {1 … N} m.VC[ k ] ≤ VCi [k] If i≠j then then VCi [j] = VCi [j] + 1 //aggiornamento del clock locale deliver m to the upper layer //evento di deliver Corso di Algoritmi Avanzati – anno accademico 2010/2011

Causal Broadcast: Esempio Quando m’ arriva a P2, la sua consegna deve essere ritardata pochè m’ è arrivato a P2 prima di m, e l’invio di broadcast di m precede causalmente m’ Corso di Algoritmi Avanzati – anno accademico 2010/2011

Corso di Algoritmi Avanzati – anno accademico 2010/2011 Gli orologi fisici Premesse In un sistema distribuito i processi girano su macchine diverse connesse in rete Cooperano per portare a termine una computazione Comunicano attraverso lo scambio di messaggi Molti algoritmi richiedono sincronizzazione per essere portati a termine I nodi possono avere necessità di effettuare azioni sincronizzate rispetto allo stesso tempo assoluto E’ impossibile avere un unico clock fisico comune a tutti i processi Corso di Algoritmi Avanzati – anno accademico 2010/2011

Corso di Algoritmi Avanzati – anno accademico 2010/2011 Timestamping Ogni processo etichetta con un timestamp un evento. Soluzione banale: Ogni processo etichetta gli eventi con il proprio clock fisico. Considerazioni Si può ricostruire l’ordinamento degli eventi di uno stesso processo Non si può ricostruire l’ordinamento degli eventi tra processi diversi Corso di Algoritmi Avanzati – anno accademico 2010/2011

Corso di Algoritmi Avanzati – anno accademico 2010/2011 asincrono vs sincrono In un sistema distribuito asincrono non ci sono vincoli sulla velocità di esecuzione dei processi Non ci sono vincoli sul ritardo di trasmissione dei messaggi Non ci sono vincoli sul tasso di scostamento dei clock In un sistema distribuito sincrono esistono dei vincoli sulla velocità di esecuzione di ciascun processo Ciascun messaggio trasmesso su un canale di comunicazione è ricevuto in un tempo limitato Ciascun processo ha un clock locale con un tasso di scostamento del clock (clock drift rate) dal clock reale conosciuto e limitato Corso di Algoritmi Avanzati – anno accademico 2010/2011

Tempo fisico in un sistema distribuito asincrono Non è osservabile I processi hanno clock diversi ed è impossibile sincronizzarli L’impossibilità di una sincronizzazione deriva dall’impredicibilità dei ritardi della comunicazione Il tempo di due eventi che accadono in processi diversi non può generalmente essere utilizzato per decidere quando un evento precede l’altro Corso di Algoritmi Avanzati – anno accademico 2010/2011

Corso di Algoritmi Avanzati – anno accademico 2010/2011 Prima soluzione Tentare di sincronizzare con una certa approssimazione i clock fisici locali ad ogni processo attraverso opportuni algoritmi. In questo caso il processo può etichettare gli eventi con il valore del suo clock fisico che risulta sincronizzato con gli altri con una certa approssimazione. Sfrutta il fatto che il sistema distribuito è sincrono! Corso di Algoritmi Avanzati – anno accademico 2010/2011

Clock hardware e software All’istante di tempo reale t, il sistema operativo legge il tempo dal clock hardware Hi (t) del computer Quindi produce il clock software: Ci(t) = aHi (t) + b che approssimativamente misura l’istante di tempo fisico t per il processo Pi. Se Ci si comporta abbastanza bene allora può essere usato come timestamp per gli eventi che occorrono in pi. Il periodo che intercorre tra due aggiornamenti del valore del clock per poter distinguere due differenti eventi deve essere: Trisoluzione < Δ T tra due eventi rilevanti Corso di Algoritmi Avanzati – anno accademico 2010/2011

Corso di Algoritmi Avanzati – anno accademico 2010/2011 Un pò di terminologia Diversi clock locali possono avere valori diversi Skew: differenza istantanea fra il valore di due qualsiasi clock Drift: i clock contano il tempo con frequenze differenti, quindi divergono nel tempo rispetto al tempo reale. Drift rate: differenza per unità di tempo di un clock rispetto ad un orologio ideale A causa del drift rate bisogna eseguire una sincronizzazione periodica per riallineare i clock Corso di Algoritmi Avanzati – anno accademico 2010/2011

Corso di Algoritmi Avanzati – anno accademico 2010/2011 UTC Coordinated Universal Time è uno standard internazionale per mantenere il tempo Basato sul tempo atomico L’output dell’orologio atomico è inviato in broadcast da stazioni radio e da satelliti Computer con ricevitori possono sincronizzare i loro clock con questi segnali Corso di Algoritmi Avanzati – anno accademico 2010/2011

Sincronizzazione dei clock fisici Sincronizzazione esterna I clock Ci ( per i= 1,2,..N ) sono sincronizzati con una sorgente di tempo S (UTC), in modo che, dato un intervallo I di tempo reale: |S(t) – Ci (t)| < D per 1≤i ≤N e per tutti gli istanti in I Sincronizzazione interna Due clock Ci e Cj sono sincronizzati l’uno con l’altro in modo che: |Ci (t) – Cj (t)| < D per 1 ≤ i,j ≤N nell’intervallo I Corso di Algoritmi Avanzati – anno accademico 2010/2011

Correttezza dei clock fisici Un clock hardware è corretto se il suo drift rate si mantiene all’interno di un bound ρ > 0 limitato Se il clock H è corretto, allora l’errore che si commette nel misurare un intervallo di istanti reali [t,t’] (con t’>t) è limitato: (1- ρ) (t’-t) ≤ H (t’) – H (t) ≤ (1+ ρ) (t’ – t) Corso di Algoritmi Avanzati – anno accademico 2010/2011

Corso di Algoritmi Avanzati – anno accademico 2010/2011 Quando sincronizzare? Consideriamo due clock che abbiano lo stesso tasso di scostamento pari a ρ Supponiamo che dopo la sincronizzazione i due clock si scostino dall’UTC in senso opposto Per garantire che i due clock non differiscano mai più di δ, occorre sincronizzarli almeno ogni δ/2ρ secondi Corso di Algoritmi Avanzati – anno accademico 2010/2011

Corso di Algoritmi Avanzati – anno accademico 2010/2011 Algoritmo di sincronizzazione interna in un SD sincrono tra due processi Un processo P1 manda il suo clock locale t ad un processo P2 tramite un messaggio m P2 riceve m e imposta il suo clock a t+Ttrasm dove Ttrasm è il tempo di trasmissione del messaggio m Ttrasm non è noto ma, essendo il SD sincrono, Tmin ≤ Ttrasm ≤ Tmax Sia u = (Tmax – Tmin) l’incertezza sul tempo di trasmissione, ovvero l’ampiezza dell’intervallo Se P2 imposta il suo clock a t+ (tmax +tmin)/2 è possibile mantenere lo skew tra i due clock al più pari a u/2 In generale, con N clock il bound ottimo sullo skew è pari a u * (1-1/N) Corso di Algoritmi Avanzati – anno accademico 2010/2011

Corso di Algoritmi Avanzati – anno accademico 2010/2011 Network Time Protocol Sincronizzazione esterna accurata rispetto a UTC Sorgenti UTC Server primari Server secondari sincronizzati da server primari 3 Sottorete di sincronizzazione: server foglia eseguiti su macchine utente Corso di Algoritmi Avanzati – anno accademico 2010/2011

NTP : Riconfigurazione Se un server primario perde la connessione alla sorgente UTC esso diventa un server secondario Se un server secondario perde la connessione al suo primario esso può usare un altro primario Corso di Algoritmi Avanzati – anno accademico 2010/2011

NTP : Tipologie di sincronizzazione Multicast Un server all’interno di una LAN manda in multicast il suo tempo agli altri che settano il tempo ricevuto assumendo un certo ritardo. Non è molto accurato. Simmetrico Coppie di server scambiano messaggi contenenti informazioni sul timing. Usata quando è necessaria un’accuratezza molto alta Corso di Algoritmi Avanzati – anno accademico 2010/2011

NTP: Sincronizzazione Tutti i modi di sincronizzazione usano UDP Ogni messaggio contiene timestamp di eventi recenti Tempi locali di Send e Receive del messaggio precedente m Tempo locale di Send del messaggio corrente m’ Il ricevente segna il tempo locale Ti in cui riceve il messaggio m’ Server B Ti-2 Ti-1 Time m m’ Time Ti-3 Ti Server A Corso di Algoritmi Avanzati – anno accademico 2010/2011

Corso di Algoritmi Avanzati – anno accademico 2010/2011 NTP: Accuratezza Per ogni coppia di messaggi m e m’ scambiati tra due server, NTP stima un offset relativo oi tra i due clock ed un ritardo dj ( tempo di trasmissione totale per m ed m’ Supponendo che il vero offset del clock di B rispetto ad A sia o e che i tempi di trasmissione di m e m’ siano rispettivamente t e t’ Ti-2 = Ti-3+t+o e Ti = Ti-1+t’ - o Il tempo totale di trasmissione dei messaggi è: di = t+t’ = Ti-2 – Ti-3 + Ti – Ti-1 Sottraendo le prime due equazioni si ottiene: o= oi + (t’-t)/2 con oi = (Ti-2 – Ti-3 +Ti-1 – Ti)/2 oi è una stima dell’offset di è una misura dell’acuratezza della stima I server NTP filtrano le coppie <oi,di>, stimano l’affidabilità dei dati dalla differenza con la stima e selezionano il peer che usano per sincronizzarsi scegliendo oi corrispondente al minimo di Accuratezza di 10 ms su Internet e 1 ms su LAN Corso di Algoritmi Avanzati – anno accademico 2010/2011

Corso di Algoritmi Avanzati – anno accademico 2010/2011 Bibliografia Attiya H., Welch J. Distributed Computing, McGraw-Hill Capitolo 6 - Causality and Time G.Coulouris, J.Dollimore, T.Kindberg. Distributed Systems. Concepts and Design. Addison Wesley Corso di Algoritmi Avanzati – anno accademico 2010/2011

Corso di Algoritmi Avanzati – anno accademico 2010/2011 Fine Domande? Corso di Algoritmi Avanzati – anno accademico 2010/2011