ềìỉ ỉỉ é ệ ề ểễ ểề ễểệ éề ểệẹ ỉ ế ềìỉ ỉỉ ặ ỉ ểề é ì è é ểẹẹề ỉ ểềì ầấ ậè ặ è ấ ặ ầấ ậ èẫ ìỉ ểề ệểễ ỉ ỉ ỉ ểề ễ ệỉ ỉ ểề ề ề ệểềề ẹ ềỉ ẹể é ặ ấ ìễểềì ìỉ ỉ ệ éì é ặ è ề ìỉ ề ề ì ầặ ặ ì ề é ểệ ỉể ệ ậ ầẻ ấá ế ễ ấ ễ ệỉ ẹ ềỉ éềìỉ ỉỉ ặ ỉ ểề é ì è é ểẹẹề ỉ ểềì ề ểệẹ ỉ ế èằặè ặấậ ấ ậ ầẻ ấ ệíá ẵ ể ỉ ắẳẳ ấ ẹ ệ ẹ ềỉì ể ệ ì ỉểỉ ểệ ệ ẹ ệ ệ é ẩệể ìì ệ ìểề ế ễ ệ ệ éềìỉ ỉỉ ặ ỉ ểề é í ề ì ểề ề ễểệ ể ệ ễệểễểì ì ỉ ỉ ẹ ể ệ ề ệ ễ ề ềỉ ì ềế ẹể ì é ệ ẹ ệ ẹ ềỉìá ìểề ìểỉ ề ễ ệẹ ề ềỉ ỉ é é é ìì ệ ẫ é ỉệể é ĩễệ ìì ểề ẹ ễệể ểề ì ễéì ì ề ệ ì ệ ẹ ệ ẹ ềỉì ểềỉ éềìỉ ỉỉ é ểềề ế é ỉ ệ ề ểễ ểề ề é ệ ìể ệ ề ề ỉểỉ é ềìỉ ềỉ ỉ ế é ề ểé ẹ ệ ểềề ìì ề ỉểì é ì ễệể ìì ệì ỉ é ì ễ ệìểềề éì ẹ ì ỉ ì ĩ ỉ ì ệ ì ỉ ĩ ỉệ ì ìỉ ệì ì ểệì ỉệ ì é ềì é ế ễ éặè ễểệ ề ẹạ ểệ é ệ ẹ ệ é ệ ì ẹ ềỉ ẹ ì ẹ ệ ỉ ệ ệ ễểệ éề ểệẹ ỉ ế ễểệ ẹ ể ệ ểềề ỉệ é ễ ệỉ é ệ ẹ ềỉ ìỉ ìểề ểềỉ ỉ é ệ ĩá ì ì ểềì éì ệỉ é ẹ ềỉ ỉ ễểệ é ệ ìểỉ ề ỉểỉ éểề ề ệ ề ẹ ệ ềì ì è é ểẹẹề ỉ ểềì ặèà ỉ ềì ệ ẹ ệ ệ ỉểỉ ễ ệỉ é ệ ẹ ềỉ ỉ ề ểệ ệề ệ ễểệ ẹ ể ệ éé ì é ễệểẹểỉ ểề ễểệ é ệ ẹ ỉ ì ềì éé ểềề ề ễểệ é ìểỉ ề ề ẹ ì ễ ệ ềỉìá ẹểề ệ ệ ỉ ẹ ì ẹ ì ễểệ é ệ ìểỉ ề ỉ é ệ ề ểệ ẹ ềỉ ấ ìẹ ểéỉ ểề ìểì é ềểẹ ì ệ ì ĩ ì ềì é ỉ ề ểệẹ ỉ ế ẹể é ệ ỉểỉ ề ệ ìỉ ềỉ ểềề ỉ ể ệ ễ ế ề ĩ ểềì ĩ é ể ệ ểỉ ề ềể ễ ệ ĩ ỉ é ì ỉ ệì é ễ ỉ ẹ ểềề ễểể ệ ì ĩ ễễé ỉ ểềì ệ ễ ệỉ ì ỉ ỉệ ề ễ ề ềỉ é éể é ì ỉ ểề ềì ề ề ệểềề ẹ ềỉ ẹể é é ì ỉ ệẹ ề ĩ ẹể é ì ìểềỉ ì ỉì ệ ế ệỉ ễé ì ì ẹ ề ìẹ ì ìễ ế ì ìỉ ểề ểềề ĩ ểềì ỉ ìỉ ề ì ệ ễệ ề ễ é ì ìíìỉ ẹ ì ểẹẹề ỉ ểề ểềạ ỉểé ệ ề ỉ ì ề ì ế ễ ẹ ềỉì ìỉ ểề ệểễ ệ ế ẹễểệỉ ềỉ ễểệ ểềìỉệ ệ ì ỉệ ĩ ềệ ì ễ ệ ế ỉệ ễéì ề ế ỉệ ẹ ễ ệỉ ỉ ểềì ì ệ ìỉ ểề ì ễễé ỉ ểềì ệ ễ ệỉ ì ềì é é ỉỉ ệ ỉệ ểềỉ ẹểềỉệ ểẹẹ ềỉ ỉ ĩ ìỉ ềỉ ễ ềỉ ỉệ ệểễ ề ì ỉ ỉ ệì ì ềỉ ìệ ì í ềỉ ềì ế éé ẹ ìệ ì ềỉ ệ éì éé ề ểềề ỉ ỉ ểềề ĩ ểềìá ỉ ỉ ệìá ềểì ễệểễểìểềì ề ềể ềể éé ì ễệểễệ ỉ ì ềỉ ệ ìì ềỉ ì ì ệ é ì ễệể ììì ì ẹ ỉỉ ềỉ ểệ ềểề ì é ẹ ềỉ ìệ é ềì ẹ é ệểễ ẹ ì ìì ìệ é ì ềì ẹ é ì ề ễệểỉểỉíễ ềỉ ệ éì ì ễệể ììì ìỉ ểềìỉệ ỉ ễểệ ỉ ìỉ ệ ềểỉệ ểỉìạ é ì ẹể é ỉ ỉểé ệ ề ệểễ ĩ ì ễệể ììì ểệệ ỉì ểềề ỉ ì éé ềỉìá ểềề ỉ ì ể ễ ệỉ ỉ ểềề ì ễễệể ỉ ìá é ểệ ỉ ẹ ế ệ ễ ệỉ ìỉ ểề ệểễ ỉ ìỉệ ỉ è ệ ề ì ề ệ é ìì ề ỉểệ ề ẹ ể ểẹễỉ ề éé ề ểệẹ ỉ ểề ì ệ ì ệ ệểềẹ ềỉá ỉ ỉ ệ é ìì ể ỉ ễỉ é ỉ ểệ ỉ ỉểệì ễệểễểì ỉ ì ểềề ỉ ểề ẹ ề ìì ỉể ỉ ểệ ề ẹể é ẹ ềỉ ề ề ềạ éỉ ỉểé ệ ề ệểễ ểẹẹề ỉ ểề ìíìỉ ẹìá ìỉệ ỉ ỉ ỉỉ ềễ ệ ễễé ỉ ểềì ĩ ìỉ ẹ é ệ ề ì ểềề ỉ ểề ề ễ ệỉ ỉ ểề ì ẹ ềỉ ểề ỉ ì ỉ ỉ ỉểệìá ề ệểễ ẹ ẹ ệì ễ ì ệ ỉ ề ềỉ ệ ìỉ ề ễệểễ ệỉ ì ẽ ỉ ỉ ì ì ệ ễệể ìì ì ệ ểỉ ỉ éệ ểềề ỉ ỉíá ề ề ệ ì ểềề ỉ è ì ệ ỉ ệ ìỉ ệ ế ệ ì ề ẹ ềỉ é ì ệ ể ì ể ề ì ệì ệ ế ềỉéí ẹễểệỉ ềỉ ệ ì ỉể é ấ ềỉ ệ ì ệ ểệ ì ễễé ề ì ệ ễ íì é éể ỉ ểề ểệ ẹể ẹ ềỉ ẹ ề ìẹì ể ệểễ ẹ ẹ ệì ễ ì ể ỉ ề ì ẹể é ểẹễỉ ề ẹể é ỉ ệẹ ề éì ểé ìễ ề ề ễểệỉ é ì ỉể ề éệ ệ ẹ ềỉ ềểỉ ểềéí ì ểềề ỉ ểỉ ỉ ề ễ ệỉ ỉ ểề ì ỉ ể ểệệ ỉ ểềề ỉ ễệể ìì ì ễệể ìì ì ỉ éìể ễệểỉểỉíễ ì éểễễ ỉể é ểệ ỉ ẹá ệểễ ẹ ẹ ệì ễá ẹ éạ ỉ ìỉ ểệ ễễệể íểệ ì ẹể é ỉíá éỉ ỉểé ệ ề ìỉệ ỉ ệ è é ìẹ ỉ ệ ì ấ ìẹ ìỉệ ỉ ẵ ềỉệể ỉ ểề ẵ ẵẵ ẩệể é ẹ ỉ ế ẵắ ểỉ ỉ ểề ỉ ể ỉ ì ìỉ ẵ ề ệểềề ẹ ềỉ ỉệ é ẵ ểềỉệ ỉ ểề ẵ ẩé ề ể ẹ ềỉ ắ ẵ ỉ ỉ ệì ề ề ệểềề ẹ ềỉ ẹể é ắẵ ể é ề ệ é ắắ ỉ ỉ ệ ắ ỉ ỉ ệ ắ ỉ ỉ ệ ểềề ĩ ểềì ắ ỉ ỉ ệ ễ ệỉ ỉ ểềì ẵẳ ắ ì ìì ểề ẵẵ ắ ểề éì ểề ẵắ ậíìỉ ẹ éé ề ì ềểề ểềề ỉ ỉ ểẹẹề ỉ ểề é ệểễ ẵ ẵ ểề ễỉ ẵ ắ é ìì ỉ ểề ẵ ẩệểễệ ỉ ì ẵ ẵ ỉ ì ĩ ẹễé ềỉ ỉ ểềì ĩ ìỉ ềỉ ì ẵ ệểễ ẵ ắ ệểễ ẵ ểĩ é ẹễé ềỉ ỉ ểề ẵ ểề éì ểề ẵ ậễ ỉ ểề ề ềể ì ệ ẵ ể é ìỉ ểề ệểễ ìíìỉ ẹ ệ ễ ệỉ ẵ ẵ ắ ìỉểệ ế ì éể ĩ ắẳ ậ ẹ ắẳ éé ề ậ ẹ ểềề ĩ ểề ắẵ ậ ẹ ễ ệỉ ỉ ểềề ẹ ềỉ ắắ ẩệểễệ ỉ ì ì ệ ìỉ ểề ệểễ ểề éì ểề ệ ỉ ỉệ é ểệ ỉ ẹ ì ỉ ễệểỉểỉíễ ắ ắ ắ ẵ ệ ỉ ỉệ ắ ắ é ểệ ỉ ẹ ì ắ ắẵ ẩệ ì ềỉ ỉ ểề ề ệ é ắ ắắ ẩệ ì ềỉ ỉ ểề ỉ éé ắ ẹễé ềỉ ỉ ểề ỉ ỉ ề ẹ ềỉ éểễễ ẹ ềỉ ểề éì ểềì ỉ ễ ệìễ ỉ ì ẳ ắ éể ệ ễ ẩệ ì è é ì ệ ì ẵẵ ẩ ệỉ ỉ ểềề ẹ ềỉ ẵắ ậỉệ ỉ ì ắẵ íìỉ ệ ì ì é ềì é ệ ì ễỉ ỉ ểề ìỉ ểềề ệ ểềề ỉ ỉ ắắ ậ ỉ ỉ ểềì ễ ệỉ ỉ ểềề ẹ ềỉ ẵẳ ắ ỉ ỉ ểề ễ ệỉ ỉ ểềì ễểệ é ẵắ ẵ ệ ỉ ỉệ ắ ề ìíìỉ ẹ ìỉ ểề ệểễ ểẹẹề ỉ ểề ẵ ệ ỉ ỉệ ệểễ ẵ ệ ỉ ỉệ ệểễ ẵ ẵ ệ ỉ ỉệ ắ é ểệ ỉ ẹ ìỉ ểề ệ ẹẹ ì é ìì ì ìíìỉ ẹ ễệểễểì ệểễ é ể ệểễ ắ ắ PDG ẳ ìỉ ì ỉ é ĩ ẵẵ ẫ ỉệ ểệẹ ì ắẵ ỉ ỉ ệì ắắ ề ể ệ ề ẵ ỉểé ệ ề ĩ ỉ ì ẵ éé ề ì ì ỉ ỉ ệì ểẹễ ệ ìểề ềỉệ ìíìỉ ẹ ễ ệỉ ỉ ểềì ểẹẹề ỉ ểề ệểễ ỉ ỉệ ì ễệểỉể ểé ì ẵẵ ẵ ìỉ ì é ểệ ỉ ẹ ì ẵ é ểệ ỉ ẹ ễệ ề ễ é ề ễệể ììì p ắ AgreementP hase ỉ SynchronizationP hase EstimateExchangeP hase ẩệể ệ ì ỉ ểề ỉ ểềì ìễễé ẹ ềỉ ệ ì ễ ỉệ ẵ ềỉệể ỉ ểề ẵẵ ẩệể é ẹ ỉ ế ễễ ệ ỉ ểề ì ềỉì ỉ ì ểệ ề ỉ ệì ễểệỉ é ìá ì ệ ì ĩ éể ĩ ì ềì é ẽ ặà ểềìỉệ ỉ ểề ễ ệ ì ìì ìỉ ềỉì ễ ệìểềề éì ềẹ ệ ế ì ẩ ẹ ềì é ì ềề ì ẳì ễểì ềỉ ì ìíìỉ ẹ ì ệ ễ ệỉ ì é ì é ềỉì ẹể é ì ắ ễễ é ề ểệẹ ỉ ế ẹể é ệ ìể ệ é ì ễệể é ẹ ì ĩ ìỉ ềỉì ế ìì ỉ ễ ìạ ềể ĩ ễệể é ẹ ì ề ề ệ ề ềểạ ì ệ ệ ì ềểề ì é ẹ ềỉ ễểệ ềì é ì ìíìỉ ẹ ì ệ ễ ệỉ ì ễ ĩ é ỉểé ệ ề ẹ ì ìì ễểệ ỉệ ỉ ệ é ì ễệể é ẹ ì ìễ ế ì ề ề ệểềề ẹ ềỉ ẹể é ễ ĩ é ĩ ỉ ìà ìỉ ểề ểềề ĩ ểềìà ỉểé ệ ề ìíìỉ ẹ ì ĩ ỉ ì ìỉ ề ì ỉ ìễểì ềỉ ệ ệ ẹễểệỉ ềỉ ễểệ é ì ìíìỉ ẹ ì ệ ễ ệỉ ì ĩ ễệểễệ ỉ ì ẹễểệỉ ềỉ ì é ì ệ ỉ ế é ì ểẹễểệỉ ẹ ềỉì ẹ ì ề ễễ ệ ìì ềỉ ẹ ì ỉ é ỉ ễệ ẹ ệ ềì é ìíìỉ ẹ é ì ểềì ểẹễểệỉ ẹ ềỉì ể ềỉ ề é ẹ ềỉ ễễ ệ ỉệ éểệì é ì ìíìỉ ẹ ì ệ éìá é ễệ ểệ ỉ ệ ểẹ ề ìểềì ễệ ì ềỉ ì ì ềỉệ ì ĩ ễệểễệ ỉ ì ỉ é ì ểề ĩ ễệểễệ ỉ ì ềểì ểềề ềỉ é ì ế ỉệ ỉíễ ểệẹ ì ììệ ììệ ế é ĩ ỉ ểề ìíìỉ ẹ ễ ề ì ềì é ễễé ỉ ểề ì ỉểé ệ ề ĩ ỉ ì ềì é ỉ é ẵẵ ì ệ ềểề ì ệ è ệ ểề ề ẵẵ ẹ ìế ềỉ ềểề ẹ ìế ềỉ ẫ ỉệ ểệẹ ì ỉểé ệ ề ìỉ ề ìễ ềì é ễểệ é ỉểé ệ ề ểề ỉệ ệ ểề ềỉ ềểề éì ệ ề ĩ ĩ ỉ ì ỉ ì ềì é ìễ ễ ĩ ì ệ ệì ễệ ẹ ệ ì ì ì ểề ẵ ế ìíìỉ ẹ ệ ễ ệỉ ệ ìà ể ểỉ ềì é ỉ ẹễì ắ é ểệ ỉ ẹ ì ẵ ắ ẵẳ ẵẵ ẵắ ẵ ẵ ẵ ẵ ẵ ẵ ẵ ắẳ ắẵ ắắ ắ ắ ắ ắ ắ ắ ắ ẳ ẵ ắ ẳ ẵ ắ é ểệ ỉ ẹ ắ AgreementP hase ỉ SynchronizationP hase ễệể ệ AgreementP hase() ệ ễ ỉ ề ỉ é ìỉ ẹ ỉ ề ệ ẹ ềỉ ễ ì estimate (reachable, f ailure, disconnect, partition) version[p] version[p] + SynchronisationP hase() EstimateExchangeP hase() ềỉ é stable ễệể ệ SynchronisationP hase() synchronized {p} ì ỉ ể ìíề ệểề ị ễệể ììì ì ề ìíề ệểề ị ỉ ểề ệ ế ìỉ ểệ éé r estimate.comp \ {p} ể msend( SYNCHRONIZE, version[r], version[p], symset[r] , {r}) ỉ ểệ ìíề ệểề ị ỉ ểề ỉ ểỉ ệì é (estimate.comp ỉ ềỉ é event ì event ể synchronized) ể ệểẹ PDG msuspect(fp , dp , pp ) : P fp dp pp ểệ éé r ( \ P ) \ reachable ể symset[r] reachable msend( SYMMETRY, version, reachable , ( \ P ) \ reachable) reachable \ P f ailure fp disconnect dp partition pp estimate.comp estimate.comp reachable estimate.f ail estimate.f ail f ailure estimate.disc estimate.disc disconnect estimate.part estimate.part partition ểệệ ỉ ìíẹẹ ỉệí ễệể é ẹ mrecv( SYMMETRY, V, P , q) : (version[p] = V [p]) ề (q estimate.comp) estimate.comp estimate.comp \ P mrecv( SYNCHRONIZE, Vp , V q, P , q) : ể ể ìểé ỉ ẹ ìì ì ề ì ề ỉ ìíề ệểề ị ỉ ểề ệ ế ìỉ ệểẹ q ệ ìễểềì version[p] = Vp ỉ ề synchronized synchronized {q} version[q] < Vq ỉ ề version[q] Vq agreed[q] Vq msend( SYNCHRONIZE, version[q], version[p], symset[q] , {q}) ìỉ ẹ ỉ ểề ệểẹ q mrecv( ESTIMATE, V, E , q) version[q] = V [q] ẳ ẵ ắ ẳ ẵ ắ ề ểệệ ỉ ìíẹẹ ỉệí ễệể é ẹ q / estimate.comp ỉ ề msend( SYMMETRY, version, estimate.comp , {q}) ễ ỉ ỉ ểề ìỉ ẹ ỉ ểề éì (version[p] = V [p]) ề (p E.comp) ỉ estimate.comp estimate.comp E.comp estimate.f ail estimate.f ail E.f ail estimate.disc estimate.disc E.disc estimate.part estimate.part E.part r estimate.f ail : r estimate.disc ỉ estimate.f ail estimate.f ail \ {r} r estimate.f ail : r estimate.part ỉ estimate.f ail estimate.f ail \ {r} synchronized E.comp agreed V ề ề ề ắ é ểệ ỉ ẹ ì é ểệ ỉ ẹ ễệ ì ềỉ é ễ ì EstimateExchangeP hase ì ềì é ế éé é ì ễệể ììì ìạ ềỉ ề ệ é ệ ìỉ ẹ ỉ ểề ỉ ể ỉ ề ệ ề ểệ ìệ ỉỉ ẹ ìì ì ESTIMATE ỉ PROPOSE é ề ì ể ì ềỉệ é ì ễệể ììì ìì é ì ắà ểệ ễ ệé ệ é é ểệ ỉ ẹ ễệể ììì é agreed ẫ ề é ềì ẹ é ệề ệ ẹ ìì é é ễệể ììì ìì é ì é ềìỉ éé é ềể éé éé ề ìá ìỉ ẹ ỉ ểề ỉ ììệ ệ é ểề ệ ề é ểệ ìệ é ềì ẹ é é ẹ ẹ ệì ểề ề VIEW ĩ ỉệ ì é ìỉ ẹ ỉ ểề ẫ ề ề ễệể ììì ệ ể ỉ ỉ ệ ỉệ ềìẹ ỉ é ẹ ìì ỉệ ĩ ỉệ ì ễệể ììì éé ềỉ ể ểềề ỉ ềỉ ì ỉệể ì ềì ẹ é ì ì ỉ ểề ễ ệ ệ ễễểệỉ ểềề ĩ ểềì ỉ é ễéì ễ ỉ ỉ ềì é ễệể ệ CheckAgreement(C) ìỉ ề ìì ệ ệ é ểểệ ề ỉ ệ ễ ỉ ìì ỉệ ẹể ễ ệ ề ểểệ ề ỉ ệ ìỉ ì ỉ ì ỉ é ểểệ ề ỉ ệ ềể ề ẹ ìì ể ệ ỉệ ềìẹ ì ỉểì é ì ẹ ìì ề é ẹẹ ỉỉ ểề ỉ ểề ìỉ ệ éé ềì é ìỉ ẹ ỉ ểề ễ ĩ ễ ệ é ế ễểìì ề ĩà é ỉ ế ỉểì é ì ễệể ììì ìễểì ềỉ ế ìỉ ìỉ ẹ ỉ ểề ề ềểí ềỉ é ì éểệ ề é ìỉ é ễễ ệ ỉ ểề ễ ệỉ ỉ ểềì ễệể ệ SendEstimate ìỉ ẹể ì ềì ẹ é ì éé ề ìá ểềề ĩ ểềì ỉ ì ễệể ììì ềỉì ìì é ì ễểệ ễ ệỉ ỉ ểềì ề ễéì ắ é ểệ ỉ ẹ ì ẵ ắ é ểệ ỉ ẹ ễệể EstimateExchangeP hase ệ EstimateExchangeP hase() installed f alse InitializeEstimateP hase() ề ỉ é ì ỉ ểề ệ ễ ỉ ỉ ềỉ é event ì event ể msuspect(fp , dp , pp ) : P fp dp pp ểệ éé r ( \ P ) \ reachable ể symset[r] reachable msend( SYMMETRY, version, reachable , ( \ P ) \ reachable) msend( ESTIMATE, agreed, estimate , ( \ P ) \ reachable) reachable \ P estimate.comp P = ỉ ề SendEstimate(estimate.comp P, fp , dp , pp ) ẵẳ ẵẵ ẵắ ẵ ẵ ẵ ẵ ẵ ẵ ẵ ắẳ ắẵ ắắ ắ ắ ắ ắ ắ ắ ắ ẳ ẵ ắ ệểẹ PDG ểệệ ỉ ìíẹẹ ỉệí ễệể é ẹ ỉ ề á ìíề ệểề ị ỉ ểề ệ ế ìỉ ệểẹ q mrecv( SYMMETRY, V, P , q) : (agreed[p] = V [p] ểệ agreed[q] V [q]) ề (q estimate.comp) SendEstimate estimate.comp P estimate.comp P mrecv( SYNCHRONIZE, Vp , Vq , P , q) : version[q] Vq (agreed[q] < Vq ) ề (q estimate.reachable) ỉ ề SendEstimate estimate.comp P estimate.comp P á ìỉ ẹ ỉ ểề ệểẹ q mrecv( ESTIMATE, V, E , q) : (q estimate.comp) ỉ ề (p / E.comp) ề (agreed[p] = V [p] ểệ agreed[q] V [q]) ỉ ề SendEstimate(estimate.comp P.comp P.f ail P.disc P.part) éì (p E.reachable) ề (r estimate.comp E.comp : agreed[r] = V [r]) ỉ ề SendEstimate(estimate.comp \ P.comp P.f ail P.disc P.part) ẳ ẵ ắ á á á ểểệ ề ỉểệì ểệ mrecv( PROPOSE, S , q) : ctbl[q] S ệ ẹ ềỉ ểề ỉ ểề (q estimate.comp) ề CheckAgreement(ctbl) InstallV iew(U niqueID(), ctbl) installed true mrecv( VIEW, w, C , q) : (C[p].cview.id = cview.id) InstallV iew(w, C) ỉ ề ệ ệ ế ìỉ ỉể ềìỉ éé ề ề (q estimate.comp) ỉ ề ì ỉ ỉ ệẹ ề ỉ ểề ỉ ểề installed true ềỉ é installed ềì é é ểệ ỉ ẹ ệỉ ẹ ìỉ ểề ềểì ỉệểểềì ỉệể ì ễệể ệ ì ỉ ề ểề ỉ ểề ỉ é ì ì ềì é é ểạ ệểễ InitializeEstimateP hase() ìỉ ỉ é ì ễểệ ềểí ệ ề ìỉ ẹ ỉ ểề ề ỉ é ỉ é ễệể ệ EstimateExchangeP hase CheckAgreementP hase(C) ìỉ ỉ é ì ỉểì é ì ẹ ẹ ệ ì ềỉ é ẹ ẹ ễểệ ỉ ìỉ ệ é ểề ỉ ểề ểệ é ìỉ ẹ ỉ ểề ỉ ìể ỉ ềì é ẹ ẹ ễ ì ỉ ế é é ểệ ỉ ẹ ắ é ểệ ỉ ẹ ì ìỉạ ệ éì ểềỉ é ẹ ẹ é ệ InstallV iew(w, C) ìỉ ỉ é ì agreedà ễểệ ềìỉ éé ệ ề ềể éé SendEstimate(P, Pf , Pd , Pp ) ìỉ ỉ é ì ìỉ ẹ ỉ ểề ìỉ ềểí ễệểễểì ễểệ ẹ ỉỉệ ĩ ỉệ ì ễệể ììì ểệ é ìỉ ẹ ỉ ểề ềì ỉ ỉỉ ềì é ìỉ ẹ ỉ ểề é ệ ẹễé ệ é ểệ ề é ễ ệ é ệ é ì ấẵ ấ ễểệ ẹ ỉỉệ ẹ ềỉ ểệ é ì ềì ẹ é ì ĩ ễệ ẹ ệ ì ệ é ì ấẵ ấắ ểềỉ ỉ ĩ ệ ỉ ì ềì é ềì é ìỉ ẹ ỉ ểề ỉ ììệ ệ é ểề ệ ề ì ềì é ì ệ ễỉ ểề ễ ệỉ ỉ ểềì ì ỉ ểềì ắ ìỉ ểề ỉ ắ ậ é ì ẹ ìì ỉ ỉ ệì ểềề ĩ ểề ỉ ệ ễ ệ é ì ỉệ ì ễệể ììì é ệểễ éé ềỉì ỉ ễệể ììì éé ềỉì ỉ ễệể ììì p ể ỉ ề ễệể ììì q ềì ìểề ềì ẹ é é ểì ềì ìểề ềì ẹ é ì ễệể ììì ểềề ỉ ì éểệì p ềé q ì ễệể ììì é ì éé ề ì ấ ậ ề ễệể ììì p ể ỉ ề ễệể ììì q é ểì ềì ìểề ềì ẹ é ì ễệể ììì ì ễệể ììì ễ ệỉ ỉ ểềề ì éểệì p ềé q ềì ìểề ềì ẹ é é éé ề ì ấ ềểềì é ì ỉ ỉ ểề ễệ ì ềỉ ềì ẹ é ì ì ì éé ềỉ ì ệ é ì ì ềỉ ì ìểềỉ ễệểễểì ì ễểệ ỉệ ỉ ệ ễệể é ẹ ấ ậ ề ễệể ììì ềỉệ é ì é é ểệ ỉ ẹ ắ ì ềỉ ìệ é ễệ ề ễ ệ ểềề ĩ ểề ề ềỉ ề ễệể ììì ìểềỉ ễ ệ ìá é ì ệ ì ểềì ỉệ ểềì ì é ẹ ềỉ ệề ệ ễệể ệ ềểì ỉ é ìểềì é ì ệề ệ ì ệ é ì ấ ấ ìểềỉ ểềìỉệ ỉ ì ề ì ểềề ĩ ểềì ỉ ểẹẹ ỉ ểểệ ề ỉ ệ ì ỉệể ì ễệ ẹ ệ ì ễệể ệ ì ỉ é ì é ẹ ẹ ễệ ề ễ ế éểệ ề é ặểì ì ệểễ ệ ềỉì ễệể ìììá é ì ììễ ỉ ẹ ìì ềì é ì ỉ ểề ắ ỹ ì ỉ ỉ ệì ễ ệỉ ỉ ểềì PDG ề ễệể é ẹ é ề ể ệ ề ểềề ềỉ ễ ì ề ìểệỉ é ì ẹ ẹ msuspect ểềỉ ềỉ ễ ệ ĩ ẹễé é ì ềì ẹ é ì ì ềỉì ễểệ p fp = , dp = {r} , pp = {s} ễểệ q fq = {s} , dq = , pq = ề ễễé ế ềỉ é ì ệ é ì ấẵ ấắá ềểì ể ỉ ềểềì éểệì ễểệ p fp = {s} , dp = {r} , pp = {s} ễểệ q fq = {s} , dq = {r} , pq = {s} ề ễễé ế ềỉ é ì ệ é ì ấ ấ ềểì ể ỉ ềểềì éểệì ễểệ p fp = , dp = {r} , pp = {s} ì ẹễé ềỉ ỉ ểề ễểệ q fq = , dq = {r} , pq = {s} ặểì ểíểềì ế ệ ềỉì ềì ẹ é ì ệ ì ệ é ìá ềểì ể ỉ ềểềì ề ểềì ềìì ềỉệ é ì ẹ ẹ ệ ì ễệể ììì ề ììệ ềỉ é ểề ệ ề ễểệ ì ỉ ì ệ é ễệểễệ ỉ ẵ ắ é ểệ ỉ ẹ ễệể ìệ é ềỉ ệ ỉ ì ềì ẹ é ì é ìỉ ề ìì ệ ì ì ẩệể ệ ì ỉ ểề ỉ ểềì ìễễé ẹ ềỉ ệ ì ệ InitializeEstimateP hase() SendEstimate(, , , ) ễệể ệ SendEstimate(P, Pf , Pd , Pp ) estimate.comp estimate.comp \ P estimate.f ail estimate.f ail Pf estimate.disc estimate.disc Pd estimate.part estimate.part Pp r estimate.f ail : r estimate.disc ỉ ề estimate.f ail estimate.f ail \ {r} r estimate.f ail : r estimate.f ail ỉ ề estimate.f ail estimate.f ail \ {r} msend( ESTIMATE, agreed, estimate , reachable \ {p}) msend( PROPOSE, (cview, agreed, estimate) , M in(estimate.comp)) ẵẳ ẵẵ ẵắ ẵ ẵ ỉ ểểệ ề ỉểệ ẵ ẵ ẵ ì ề ễệểễểì é ỉể ề ỉ ểề CheckAgreement(C) ệ ỉệề (q C[p].estimate : C[p].estimate = C[q].estimate) ề (q, r C[p].estimate : C[p].agreed[r] = C[q].agreed[r]) ẵ ẵ ắẳ ắẵ ắắ ắ ắ ắ ắ ắ ễệể ệ InstallV iew(w, C) msend( VIEW, w, C , C[p].estimate.comp \ {p}) q, r C[p].estimate.comp : q C[r].cview.comp C[q].cview.id = C[r].cview.id) view ((w, view.id), {r|r C[p].estimate C[r].cview.id = cview.id}) éì ỉ ề view ((w, ), C[p].estimate) ề ệ ỉ vchg(view) cview (w, C[p].estimate) stable (view.comp = reachable) ề (q, r C[p].estimate : C[p].agreed[r] = agreed[r]) ẹễé ềỉ ỉ ểề ẹễé ềỉ ỉ ểề ìỉ ệ é ì ìỉ ì ềì ềỉ ệẹ ềỉ ệ ễỉ ệ é ì ẹ ìì èắ ể ề ệểễ ệì ểề ắẳ ẵ ềỉệ ậ ỉ ẻ ậ P DG ỉ ỉệ ềìẹ ỉỉệ é ì ềể ĩ ẹ ìì ệ é ẹễé ềỉ ỉ ểề ễéì ệì ễ ế ỉ ệ ì msuspect ệ ệ ề ì ẹé ỉ ểề ĩ ễ ế ỉ ìểệ ệ é ì ệ ìểềỉ é ì ì ềỉ ì èẵ ềì ệ ệ ề ể é í ì ềỉ ìệ é ể ì é é ểệ ỉ ẹ ềì é ể ìểệ ìỉ ểề ì msuspect ẻ ệểễ ẻ ệểễ ẹ ì ềểì ềểì ềỉ ệ ììểềì ì ì ềỉì ệểễệ é ìẹìì ềì é ế é ìểềỉ ẹễé ẹ ềỉ ì é ỉ ỉ ệ éé ề ì ỉ é ể ỉ ỉ ề ẹ ềỉ éểễễ ẹ ềỉ ẳ ậ ệểễệ é ì ặểì ẹểề ệểễệ é ìễ ểỉểềì ề ễ ế ỉ ềì é ế é ìỉ ẹễé ẹ ềỉ ệ ẹẹ ỉ ỉ ề ẹ ềỉ ẩểệ é ểẹễệ ề ệ ẹ ề é ễệ ẹ ệ ỉ ểềì ệ ìì ế ểệệ ìễểề ì é ìì ì ì ẹể é ể é ể ỉ ỉ ỉ ểềì ỹ é ìì èẵà ỉ ềểì ìểẹẹ ì ề ỉệ ề ểềìỉệ ệ é ệ ỉ ỉệ ẻ ềỉ ệẹ ệ PDG PDG éểễễ ẹ ềỉ éểễễ ẹ ềỉ ễệểỉểỉíễ é ềểì ỉ ễ ì ệ é ì ệ é ể ềểỉệ ì ệ ệ é ể ìỉ ĩ ìỉ ềỉ ệểễ ễểệ ềế ẹể ìá ềểì ểềì ỉ ệạ ểẹễé ỉ ệ é ìỉ ểề ĩ ẹ èắà ệểễ ềì ềểì ề ỉ é ì ềỉ éé ỉ ỉ ề ẹ ềỉ ệểễ ềì ỉ ệ ỉ ỉệ ỉ ệ é ì é ì ẹé ỉ ểề ì éểễễ ẹ ềỉ ì ễ ễì ệ ẩ ễéìá ềểì ệ é ìểềì ềì é ì ỉ ểề ễệ ề ể é ể ỉ ỉ ệì ệì ì ềỉì ìểềỉ ệ ì ì ẹể ẵ PDG ềỉ ệ ễỉ é ì ẹ ìì ểềề ĩ ểềì ỉ ì ệ ỉ ểềì ễ ệỉ ỉ ểềì ệểễệ é ìễ ềì é ễ ế ỉ ẩ ì msuspect ềì é ì ệì ĩ ìỉ ềỉì ì éểề é ì ỉ ì ề ì ềỉ ẩểệ ỉ ìỉ ệ é ểề ỉ ểềề ẹ ềỉ ễệểỉểỉíễ ềểì ỉ é ìểềì ề ễễé ỉ ểề ềì é ễ ế ỉ ệểễỉ ìỉ ééể é ỉ é ề ệ é ì ểẹẹ ề ì ì ềỉ ì ệ ìỉệí ééểì ệ ệ ễệ ẹ ệ ểẹẹ ề ĩ ẹ ìỉ é ề ễểệ ỉ ệ ệ ề ì ệ ễéì ệì ể ì ễểệ ể ệ ễéì ệì ễệể ììì ỉ é ì ỉ ểềá ễệể ììì ệ ì ỉ éé ềểẹ ỉ é ì ềì ệểễ ềì é ìíìỉ ẹ ễệ ì é ề ìíìỉ ẹ ì ỉệ ì ễệể ììì ẹ ỉỉ ềỉ ểệ ìì é ệ é ễễ ệ ỉ ểề ềể ễệể ììì ậ ề ễệể ììì ìỉ ĩ ễ ệ ỉệạ ể ểềề ỉ ể ễ ệỉ ỉ ểềề ề ỉ é ì ềỉ é ì ẹé ỉ ểềàá é ì ỉệ ì ễệể ììì ệểềỉ ểề é ề ẹ ềỉ ểệệ ìễểề ềỉ ềì é ệ éé ềỉ ễ ễ ỉệ ểề éì ểềì ỉ ễ ệìễ ỉ ì ễễ ệ ỉ ểề ềể ễ ệ é ễ ỉ ễểể ệ ì ẹ ễễ é ề ểệẹ ỉ ế ẹể é ễé ệ ỉểỉ ề ệ ìỉ ềỉ ểềề ỉ ề ễ ề ềỉ é éể é ì ỉ ểề ế ệ ềỉ ệ ìể ệ é ì ễệể é ẹ ì ĩ ìỉ ềỉì ệ ỉ ệ ìỉ ế ì ì ẹễểìì ể ệ ễ ế é ìì ỉ ể ệ ĩ ỉ é ì ỉ ệì ĩ ễễé ỉ ểềì ệ ễ ệỉ ì ỉ ỉệ ìì ểễ ỉệ ĩ ệ ệ ềì é ì ìíìỉ ẹ ì ệ ễ ệỉ ì ềể éé ì é ề ệểềề ẹ ềỉ ẹể é éỉ ì ểềì ềììá ìỉ ểề ệểễ ìểềỉ ẹểềỉệ ì ềì é ẹể é ì ìíìỉ ẹ ì ệ ễ ệỉ ì ìíề ệểề ì ẹể é ễ ệỉ éé ẹ ềỉ ìíề ệểề ìỉ ễệểễểì ễểệ ệ ìể ệ ì ễệể é ẹ ìá ễ ĩ ề ỉ é ì ềỉ é é ẩểệ ỉệ ỉ ệ é ễệể é ẹ ìỉ ểề ỉ ỉ ệì ỉ ỉ ệ éé ề ì ềểề ểềề ĩ ểềì ề ề ệểềề ẹ ềỉ ẹể é é ì ỉệ ì ểềề ỉ ỉ ìỉệ ỉ ểẹẹ é ểềề ĩ ểềì ỉ ỉ ỉ ệ ễ ệỉ ỉ ểềì éì ìểềỉ ỉểì ề ề ệểềề ẹ ềỉ ẹể é ặểì ểềì ỉ é ể ệ ễ ế ìệ é ì ì ỉ é ì é ẹ ỉ ỉ ểềì ìỉ ểề ệểễ í ềỉ ềì ềểỉệ ệ ệ é ì ỉệ ĩ ĩ ìỉ ềỉì ềì ỉ ề ì ề ềể ì ệ ệ ìì ỉệ é ìỉ ểề ẹểềỉệ é ìỉ ểề ì é ệ ỉ é ì ìíìỉ ẹ ì ỉ ệ ẹ ềỉ ềểỉệ ể ĩ ệ ệểễ ì ỉ ệ é ì ệ ề ễệểỉểỉíễ ỉ ỉ ệì ệểễ ễểệ ì ỉ ì ệ éỉ ỉ ỉ ệì ĩ ìỉ ềỉì ỉ é ì ệ ì ểẹẹề ỉ ểề ề ỉ ìệ ì ềỉ ìệ ìíìỉ ẹ ềểì ểềì ễệểễểì ề ìễ ỉ ểề ềì ệ ệ ề ì ẹé ỉ ểề ì ẹễé é é ểệ ỉ ẹ ểề ềể éé ì ễệểễệ ỉ ì ễ ĩ ểệ ễ ệỉ ỉ ểềà ặểì ểềì ìì ể ì ề ẹễé ềỉ ỉ ểề ĩ ìỉ ềỉ ệểễ ễểệ ệ ỉ é ì ệ ềì éé ề ì ềì ỉệ éá ềểì ểềì ệ é ì ề ỉ ỉ ệì ễểệ ề ì ệ ỉ ỉ ệì ìểềỉ ễệểễểì ì ềểỉệ ễễệể ềì é ệ ỉ ỉệ ìíìỉ ẹ ềể éé ì ễệểễệ ỉ ì ỉ ễ ỉ ỉệ ểềì ắ ì ệ ặểì ểềì ỉ ễỉ ềểỉệ ì ệ ệ ểẹẹ ề ễệ ẹ ệ ĩễ ệ ề ễểệ é ì ỉệ ì ệ ệ ì ề ì ễ ệìễ ỉ ìá ềểì ì ỉ ìỉì ễ ệ ểệẹ ề ẹễé ềỉ ỉ ểề ẩểệ ì ệ ệ é ễ ìì ề ỉ ệì ểềì ểẹễé ỉ ệ é ìỉ ểề ỉ é ệ ềểẹ ệ é ẹ ềỉ é ễểìì éỉ ỉ ĩ ỉ ệ ệ é ì ệ ề ệểễ ìệ é ì ỉ ệẹ ề ĩ ẹể é ì ễ ĩ ắ ì ẹ ìì ì ỉ ỉ ệì ỉ ì ềểí ì ề ề ệểềề ẹ ềỉ ẹể é ệ é ì ệ ììểệ ì é éà ìểềỉ ỉệ ì é ẹ ỉ ì ề ểỉệ é ệ ìỉ é ệ ễ ĩ é ì ệ ểệ ẹ ềỉì ì ỉ ểề ắ éểễễ ẹ ềỉ ễệểỉểỉíễ ỉệ ễ ệỉá ềểì ỉ ểềì ỉ ẹ é ểệ ệ é ì é ểệ ỉ ẹ ì ệ ệ é ệ ểẹễé ĩ ỉ ệ ẹ ềỉ ẹễểệỉ ềỉ ề ệ ì é ềìá ỉỉ é ìỉ ểề ệểễ ễểệ ẹ é ểệ ỉ ểề ìỉ ễ ệỉ é ì ỉ ệẹ ề ĩ ễ ĩ ề ểệ ế éế ì é ẹ ỉ ỉ ểềì ì ễệể ììì ể é ẹể é ỉ ỉỉ ệ ì ỉ ì ề ìà éể ệ ễ ẵ é ệ ẽ ềá ề ậ èể ì ề ỉ ỉ éệ ỉ ỉểệ ểệ ế ì ềỉ é ểẹẹề ỉ ểề ề ểềì ềìì ề ễ ệỉ ỉ ểề é ề ỉểệ ì è ểệ ỉ é ệé ậ ề ắắẳẵà ẳá ề ẵ ắ é ệ ẽ ể ệỉ ểẹễỉ ệ ềá ề ậ èể ầề ế ì ềỉ ệ é é ểẹẹề ỉ ểề ậ ểệề é ểẹễỉ ề ắ ắẳ ẳ ắẳ ắẳẳẳ ể ề ẹ ệệểềạ ểìỉá ẩ ề ỉá ề ậ èể ầề ỉ ệểễ ẹ ẹ ệì ễ ì ệ ì è ề é ấ ễểệỉ èấ ạẵ ậ ề ểệề éé ề ệì ỉíá ỉ ặ ểệ ậ àá ẵ ễễ ễễ ể éá ấ ìíìỉ ẹì ểẹ ễ ểệẹ é ìễ ỉ ểề ễ ệỉẹ ềỉ ể ểẹễỉ ệ ỉỉễ ằằ ễễ éễỉ ểé ề ểềỉệ ìểệ é ểệ ỉ ẹì ìễ ỉ ểề ề ệểễ ểẹẹề ỉ ểề ề ễ ệỉ ỉ ểề é èệ ềì ỉ ểềì ểề ậể ỉ ệ ề ề ệề ắ ẳ ễệ ắẳẳẵ ỉỉ ẩ ệỉ ỉ ểềì ề ệ é ìì ệểễ ểẹẹề ỉ ểề ìíìỉ ẹ ìỉ ệì ỉ ì ìá ề ệì ỉ ẩ ệ ìạậ ậ ễỉ ắẳẳ ỉỉ ề ểề ề ệểềề ẹ ềỉ ẹể é ề ỉ ỉ ểềì ỉ ì é ắẹ ắẳẳ ệ ềể é ệ ề í ắẳẳ ẩ è ệẹ ề é ề ậ ệ ẩ é ẵẳ è ễé ểề ệ ề ìỉ ểề ệểễ ì ề ềạ ệ ề ểễ ểề ể é ỉ ế ỉ ềỉ ệề ỉ ểề é ểề ệ ề ẩệể ề ấé ề ệ ẻ ị é ểìá ậ èể ề ẹ ẹ ệì ễ ề ẩệể ẵ ỉ ễ ệỉ ỉ ểề ễểệ é é ặ ỉểệ ề ì ậ ệ ì ễễé ỉ ểềì ềề ề ậ ẵ ệệểềạ ểìỉ ầề ỉ ậíẹễểì ẹ ểề ẩệ ề ễé ì ể ẹễểìì é ỉí ể ệểễ ìỉệ ỉ ề ểẹễỉ ề á ậ í ắẳẳ ề ệ ểệề é ể ỉ ề ậ èể ềệ é é éệ ỉ ỉểệì ểệ ệ é é ìỉệ ỉ ììể ỉ ểề ểệ ểẹễỉ ề ề ệíá ắà ắắ ắ ệ ẵ ìíìỉ ẹì ầ ấ ẩ ẵẵ ẵắ ể é ệá ệá ề ấ ẻ ỉ ề ệ ễệ ềì ìỉ í ểẹễỉ ề ậệ íìá ắ éễểệỉ éé ỉ ậệ é é ểệ ỉ ẹ ế ệểễ ểẹẹề ỉ ểề ìễ ỉ ểềì ểẹạ ắẳẳẵ ìỉệ ỉểé ệ ềỉ ĩ ễ ềề ìá ắẳẳẵ è ì ấá ề ệì ỉ ẩ ệ ì ẻ ẵ ấ ééá ậ ễ ệá ề ẩ ệ ề èể ềạ ì ỉ ỉểệì ề ẩệể ể ỉ ắệ ậíìỉ ẹìá ẽ ì ề ỉểềá ẵ ẵ ềỉ ệề ỉ ểề é ậíẹễểì ẹ ểề ấ é ậ ầ ỉ ắẳẳ ễệ ẵ ệỉề ệ ẵ ệểễ ệểễ ểẹ ễ ẵ ề éỉạỉểé ệ ềỉ ìỉệ ỉ é éá ề ìỉệ ỉ ìỉệ ỉ ểềì ềìì ỉ ểẹễỉ ề ắá ề ìíề ệểềểì ỉỉễ ằằ ệểễìểệ ểệ ề ỉ éẹ ệẹ é ềỉạì ệ ệ ểẹễỉ ề ệá ậììẹ ềá ệịééểá ề ề ẹể é ề ệểềẹ ềỉì ểé ểì ệểễ ẹ ẹ ệì ễ ì ệ èệ ềì ỉ ểềì ểề ểẹễỉ ệ ậíìỉ ẹìá ắẳà ẵ ẵ ắ ắẳẳắ ểệ ềì ắẳ ậ ề éệ ỉỉễ ằằ ệểễìểệ ểẹễỉ ề ậệ íìá ẵắà ẵẵ ẵ ề ẵ ẵ é ỉí ể ểẹễỉ ề ậệ íìá ẵẵà ẵ ắ ệ ẵ ẵ ệểễ ệểễ ểẹ ễ é ììể ỉ ểề ểệ ểẹễỉ ề ề ệíá ắắà ề ẹ ềỉ éì ể ề ệểềẹ ềỉì é ểẹễỉ ệ ậể ỉí ì ệá ặ íề ề ậ ẩ ỉ ệìểề ẹễểìì éỉí ễệể ìì ểệề é ể ỉ ểề ỉểẹ ệể ìỉ ì ề ềệ é ậ ễ ệá ề ẩ ẽể ểì ìỉ ễ ỉể ệ ì ểẹẹề ỉ ểề ìíìỉ ẹì ề ẩệể ể ềỉ ệề ỉ ểề é é ệ ề ề ệ ỉ ểề ể ệểễ ểề ệ ề ắẳẳ ậễệ ề ệ ẻ ệé ề ắẳẳ ắẵ ểềỉệ ìểệ ậíìỉ ẹ ậễễểệỉ ểệ ẩệể ệ ẹẹ ề ầ ề ẩ ệỉ ỉ ểề é ậíìỉ ẹì ẩ ểéể ề ỉ éíá ắắ ấ ẩệ ì ẩệể ẵ ỉ ậ ẵ ắ ấ íề é ậ ỉ ì ìá ễỉ ể ỉạầệ ềỉ ễề é ễễé ỉ ểềì ểẹễỉ ệ ậ ề ề ệì ỉí ể ểéể ề ắẳẳẳ ề ấ é ểề ệ ỉ ỉệ ểệ ệểễ ểẹẹề ỉ ểề ề ẹể é ìíìỉ ẹì ề ậíẹễểì ẹ ểề ấ é é ìỉệ ỉ ậíìỉ ẹìá ễ ì ắ ắ ắá ẽ ì ề ỉểềá ểẹễỉ ệ ậể ỉí ì ểệỉ ềỉệể ỉ ểề ỉể éệ ỉ ỉểệì ểệ ìíề ệểềểì è ặ ìá ẵà ẳá ệ ắẳẳ ìỉệ ỉ ìíìỉ ẹì ầ ấ ẩ ắ ậ ỉí ề ệ í ề ề ề ẹ ềỉ é éé ề ì ề ẹể é ểẹễỉ ề ề ẩầ ềìể ỉ ỉ ềỉ ềề é ễ ì ẵ ặ ểệ ặ ậ ẵ ìíẹễểì ẹ ểề ẩệ ề ễé ì ể ắ ậ ỉí ề ệ í ề ề ẩ ệ ì ểẹễỉ ề ìỉệ ỉ ẩệểạ ểẹễỉ ề ẩệ ìì ẻ ìểề ề éé ề ì ẩ ệìểề é ểẹạ ẹề ỉ ểềìá ẵẳ ẵ ắẳẳẵ ắ è ẹ é ề ỉ ì ểề ề é ẵệ ề ắẳẳ ểề ệ ề ỉ ỉ ểềì éé ề ìá ểềề ỉ ỉ ệ ề ểễ ểề ể é ỉ ế ỉ ễ ềỉ ệề ỉ ểề é ểề ệ ề ẩệể ề ì ậ ệ ì ỉ ểềề ĩ ểềì ề ì ẳ ặ ệ ề ềề ĩ ẩệ ì ềì ỉỉ ì ỉ ểềá ềểì ễệ ì ềỉểềì é ễệ ề ì ỉ ểề ắ ặểì ễệểễệ ỉ ì ẵ é é ểệ ỉ ẹ ìỉ ểề ệểễ ểềề ểềì ẹểềỉệ ệ ế é é ểệ ỉ ẹ ì ỉ ệẹ ề ỉể ểệì ỉ ế é ì ỉ ì ỉ é ì ễệ ì ềỉ ì ềì é ìễ ỉ ểề ềể ì ệ ệểễ ì ỉ ểề ẩ ìế ỉ é ểệ ỉ ẹ ì ì ìệ é ìỉ ểề ệểễ é ì ễệ ì ìểềỉ ểề ễệ ì ềỉ ì ề ỉ é ì ềỉ é ẹ ẹ ểệ ề ì ỉ ểề ẹẹ ẵ ềểẹ ệ ẩệ ì ẹ ìì ẹ ìì ì PROPOSE ềểí ễ ệ ề ễệể ììì ìỉ ểệề ì PROPOSE ìểềỉ ềểí ì ềểì ỉ é ìểềì é ẹ ẹ ểề ỉ ểề ễễ é ềểẹ ệ ẹ ìì ềì é ễệể ệ SendEstimate ẩ ệ ế ỉỉ ễệể ệ ế éểệ ề éá ẹểềỉệ ế é ì PROPOSE ềểí ễ ệ ề ễệể ììì ìỉ ểệề ẹẹ ắ ậ ề ễệể ììì ểệệ ỉ p ềỉệ ềì é ễệể ệ EstimateExchangeP hase ề vá éểệì p ềìỉ éé éỉ ẹ ẹ ềỉ ề ềể éé ẩệ ễệ ì v é ểệ ỉ ẹ ì ểẹễểệỉ ểẹẹ é ệì ểề ểệ ề é ểề é ễệ ìỉ ềỉ ế ẹẹ ậ ề ễệể ììì ểệệ ỉ p ềỉệ vá éểệì p ềỉệ éỉ ẹ ẹ ềỉ ẩệ ềì é ễệể ệ SynchronizationP hase ề ềì é ễệể ệ EstimateExchangeP hase é ểệ ỉ ẹ ì ểẹễểệỉ ểẹẹ é ệì ểề ểệ ề é ểề é ễệ v ìỉ ềỉ ế ểệểéé ệ ẵ ậ ề ễệể ììì ểệệ ỉ p ềỉệ é ễệể ệ AgreementP hase ề vá éểệì é ềìỉ éé éỉ ẹ ẹ ềỉ ề ềể éé ễệ ì v ẩệ ì é ẹẹ ì ắ ỉ è ểệ ẹ ẵ ẩệ ì ểề ẩệ ềì ềểỉệ view.comp ì ìà é ểệ ỉ ẹ ì ỉ ì ỉ é ễệểễệ ỉ é ểệ ỉ ẹ é ểề ễỉ ềì ểệệ ìễểề ìỉ é ệ ìểề ễểệ é ế éé é ễệ ặểì ễ ệỉ ỉ ểềì ềỉ ế é ề ìể ỉ ỉ ỉ ệ ì éé ề ìá ềỉ ế é é ểệ ỉ ẹ ểềề ĩ ểềì ể ì ế ễệể ììì ỉ é ì ìỉ ểề ệểễ ểềề ỉ ì dp ỉ ì ễ ệỉ ỉ ểềề ì ì ễệể ììì ểệệ ỉì ểềề ỉ ì ìỉ é é reachable = \ (fp dp pp )à ểệì ẵẵ ìỉ ì é é ểệ ỉ ẹ éé ềỉì fp ì ì ễệể ììì ệểễ ẵắá ìỉạ ệ é ĩ ìỉ ề ềìỉ ềỉ ểềề ỉ ể ễ ệỉ ỉ ểềề ễ ệỉ ỉ ểề ểẹẹ é ềỉệ ìểềỉ é ì ỉệể ì ềì ẹ é ì pp ềì ẹ é ềì é ì ì éé ềỉá ề é é ìểì ễệểễệ ỉ ểềì ểề ễệể ệ é ìểì ễệểễệ ỉ ễệ ì é ế é ề ễệể ììì ề ễễệ ỉ é ìểệỉ ẵ ễ ệỉ ệ ìỉ ểề ì ỉệể ì ềì ẹ é ì ệểễ ì ềì ẹ é ì ế ễệể ììì ì ểé ềỉ ấẵ ấắà ỉ ì ểề ệ ềỉ ấ ấ ề ề ềỉ é ệ ễệểễệ ìỉ ẹ ỉ ểề ỹ é ỉ ệẹ ề ìểề ỉ é ểệ ỉ ẹ ỉểì é ì ễệể ììì ẹ ẹ ệ ì ệểễ ì ẹ ỉỉ ềỉ ểệ ìệ ì ềì ẹ é ì ỉỉ ễệểễệ ỉ ễ ệỉ ỉ ểề ểệỉ ề é ỉ ỉ ệ è ểệ ẹ ắ ểẹễé ỉ ẩệ ềì ềểỉệ view.comp é ểệ ỉ ẹ é ểề ễỉ ễệ ì é ế é ỉểỉ ễệể ììì ểệệ ỉ é ìểệỉ ì ễ ệỉ ỉ ểềì ỉ ỉ ệ ềì ểệệ ìễểề é ìểì ễệểễệ ỉ pp ềì ẹ é ì ễệể ììì ì ễệể ììì reachable = \ (fp dp pp )à ểệì ắ ề é ễ ệỉ ỉ ểề ểệỉ ềỉ ế é é ểệ ỉ ẹ éé ềỉì fp ì é é ểệ ỉ ẹ ì éé ề ìá ế ễệể ììì ỉ é ì ìỉ ểề ệểễ ểềề ỉ ì dp ỉ ì ễ ệỉ ỉ ểềề ì ễ ệỉ ệ ìỉ ểề ì ỉệể ì ềì ẹ é ì ệểễ ì ềì ẹ é ì ế ễệể ììì ì ểé ềỉ ấẵ ấắà ỉ ì ểề ệ ềỉ ấ ấ ề ề ểệ ìệ ì ềì ẹ é ì ệểễ ắẵ ìỉ ềì é ì ỉệ ì ễ ệỉ ỉ ểềì ì ễệể ììì ểệệ ỉì ểềề ỉ ì ìỉ é é ìỉ ẹ ỉ ểề ỹ é ỉ ệẹ ề ìểề ễệ ì ểề ắắá ìỉạ ệ é ĩ ìỉ ề ềìỉ ềỉ ềì ề ễ ệỉ ỉ ểề ìỉ ề éì ễ ệỉ ỉ ểề ểẹẹ é ềỉệ ìểềỉ é ì ỉệể ì ềì ẹ é ì é ễệểễệ ỉ ì ìà é ểệ ỉ ẹ ì ỉ ì ỉ é ễệểễệ ỉ ểềì ểề ễệể ệ é ìểì ễệểễệ ỉ ểềề ĩ ểềì ể ệ ễ ệỉ ỉ ểề ìỉ é ệ ìểề ễểệ é ế éé é ễệ ặểì ì ìỉ ểề ììệ ềỉ é ệ ễệểễệ ỉ é ểệ ỉ ẹ ỉểì é ì ễệể ììì ẹ ẹ ệ ì ệểễ ì ẹ ỉỉ ềỉ ỉỉ ễệểễệ ỉ ỉ ỉ ệ ễ ệỉ ỉ ểề ìỉ ểề ììệ ệ é ễệểễệ ỉ ểẹễé ỉ è ểệ ẹ ể ệ ề ẩệ ì ìà é ểệ ỉ ẹ ì ỉ ì ỉ é ễệểễệ ỉ é ểệ ỉ ẹ ì ểẹễểệỉ ểẹẹ é ệì ểề ểệ ề é ểề é ễệ ìỉ ềỉ ế ìỉ ềỉ ế è ểệ ẹ ẩệ ầệ ệ ì ìà é ểệ ỉ ẹ ì ỉ ì ỉ é ễệểễệ ỉ é ểệ ỉ ẹ ì ểẹễểệỉ ểẹẹ é ệì ểề ểệ ề é ểề é ễệ è ểệ ẹ ẩệ ềỉ ệ ỉ ềì ềểỉệ view.comp ặểì ì ìà é ểệ ỉ ẹ ì ỉ ì ỉ é ễệểễệ ỉ é ểệ ỉ ẹ é ểề ễỉ ìỉ é ệ ìểề ễểệ é ế éé é ễệ ểềì ểề ễệể ệ é ìểì ễệểễệ ỉ ệểễ ì éé ề ìá é ểệ ỉ ẹ é ì ìỉ ẹ ỉ ểềì ì ềì ẹ é ễệể ììì ì ểềề ĩ ểềì ỉ ềì ểệệ ìễểề ề é é ìểì ễệểễệ ỉ ẵ ìỉ ắá ìỉạ ệ é ềỉ ệì ỉ ểề ì ễ ệỉ ỉ ểềì ìỉ é ềì ẹ é ế ễệể ììì ìểềỉ ỉ é ì ì ểẹẹ ề ễệể ììì ểệệ ỉì ìì é ì ìỉ é é éé ềỉìá ì ễ ệỉ ệ ì ỉệể ì ềì ẹ é ì ỉ ệ ìểéểềì é ễệể é ẹ ệểễ ềỉ ế ì ì ềì ềểỉệ ỉì ễểệ é ì ềể éé ì ì ỉệể ì ềì ẹ é ì ểềề ỉ ì ỉ ì ễ ệỉ ỉ ểềề ì reachable = \ (fp dp pp )à ề ểỉệ ề ễễé ế ềỉ é ì ệ é ì ễểệ ễ ìì ệ ề ễệể ììì ề ềì ẹ é é ểề ệ ề ễệể ììì é ề ể ệ ề ềỉệ éé ềỉìá ì é ỉệ ềểì ììệểềì ểềề ỉ ì ỉ ì ễ ệỉ ỉ ểềề ì ệ ềỉì ễệể ììì [...]... ệ ỉệ ểềìéỉ ì ề ììệ ềỉ é ì ễệểễệ ỉ ì ểẹẹ é é é ẵ ìỉ ểề ì ểề ềì é ệ ệ ỉ ẹ ềỉ ạ ììì ề ỉệ éá ềểì ề ềểì ềỉ ệ ììểềì ệểễ ẩéì ỉ éì ìệ é ĩ ẹ ì ệ ễ ềỉ ềì ẵẵ Systốme de communication de groupe Service de diffusion de messages Service de gestion de groupe ắ ẵ ệ ỉ ỉệ ề ìíìỉ ẹ ểẹẹề ỉ ểề ệểễ é ìì ỉ ểề ềì é é ỉỉ ệ ỉệ á é ì ậì ìểềỉ ìể ềỉ é ìì ì ề ễệ ẹ ệ ễ ĩ ậậá ẩ ể ề ĩà ỉ èểỉ ẹà ì ẹể é ì ệ é ì ễ ệỉ ỉ ểềì ậì... ỉệ ĩ ĩ ìỉ ềỉì ìệ é ì ỉệể ì ỉệ ì ắ ểề éì ểề ẵắ Gestion de groupe Dộtecteur de partitions Dộtecteur de connectivitộ ỉ ỉ ệì ắ ắ ểềề ỉ ỉ á Dộtecteur de dộconnexions ỉ ỉ ểề ễ ệỉ ỉ ểềì ễểệ é ểềề ĩ ểềì ỉ ìỉ ểề ệểễ ễ ệỉ ỉ ểềì ìểềỉ ề ểệ ễệ ẹ ềỉ ỉ ểệ ế ì ểề éì ểề ềì ễ ỉệ á ềểì ểềì ễệ ì ềỉ é ì ễệ ề ễ ì ề ẹ ềỉ ẹể é ặểì ểềì ìì ễệể ìììà ỉ ềỉệể ỉ é ì Dộtecteur de dộfaillances ỉ ỉ ệì ì ệ é ỉỉ ệ ỉệ ìỉ ểề ì ỉ... ỉ ỉểệ ề ì ỉệ ềì ệỉì ỉ ỉì ệ ễ ỉ ì ắ E highDown highUp F D C A F B lowDown (2) dộconnectộ ắ ỉ ỉ ệ lowUp Niveau de disponibilitộ de la ressource (1) ắẵ D B lowUp Niveau de disponibilitộ de la ressource highUp C A lowDown E highDown partiellement connectộ íìỉ ệ ì ì connectộ ìỉ ểềề ệ sens de variation ểềề ỉ ỉ ểềề ĩ ểềì ì ề ểệẹ ỉ ểềì ểềề ĩ ểềì ỉ ỉ CD ệ ìỉ ềỉ ỉểỉ ể ì éể é ì ệ ểềề ĩ ểềì ểệề ì ễ ệ é... composants Channel EnsChannel JChannel IbusChannel iBus Toolkit TOTAL Ensemble GMS FIFO UDP ắ ắ ệ ỉ ỉệ ệểễ ệểễ ệểễ ẵ ìỉ ề ệ ìéỉ ỉ ệ ệ ìệ ấ é ìá ề ìíìỉ ẹ ểềìỉệ ỉ ễệ ậ ễ ệỉ ỉ ểề é ìỉệ ỉệ ẹể é ệ éề ệì ỉ ẹẹ ềỉ ễ ệ é ẹ ẹ í ềỉ ề ìễ ỉ ểề ểệẹ éé ểềỉ é ệ ỉ ỉệ ểéể ề á ề ỉ é ệểễ ì ìì ị é ệ ề ể ì ìỉ ẹểềỉệ ệểễ é ìỉ ềì é Application vchg join leave VML mrecv msuspect msend MSL FD recv send Network ì ệ ỉ... HB(F ), p correct(FP ), q \ partition( p), K N, t T : H(p, t)[q] K HBạễệ ì ểề ễểệ ỉểỉ ễệể ììì pá é ì ểẹễỉ ệì ệể ìì ềỉ ỉỉ ẹ ềỉì ệ ỉểì é ì ễệể ììì ểề ẹểềểỉểề ểệẹ éé ẹ ềỉ F, H HB(F ), p , q , t T : H(p, t)[q] H(p, t + 1)[q] ễểệ ỉểỉ ễệể ììì ểệệ ỉ pá é ì ểẹễỉ ệì ềì é ễ ệỉ ỉ ểề ỉỉ ẹ ềỉì ệ ỉểì é ì ễệể ììì p ìểềỉ ềểề ểệề ì ểệẹ éé ẹ ềỉ F = (FP , FL ), H HB(F ), q partition( p), K N, t T : H(p,... ìỉểệ ế ề é ề ể ề ễệể ììì ìể ỉ ề partition( p) ậ p é ềì ẹ é ì T ệì é ềì ẹ é 2 á ể ìểềì ế p ể ỉ q ễ ệỉ ỉ ểềề éé ề ềểẹẹ ễ ệỉ ỉ ểềì ễệể ììì p ềểéểềỉ ệ ệ ểẹễé ỉ F ì ỉ ỉ ệì ễ ệỉ ỉ ểềì é ĩ ìỉ ề ềìỉ ềỉ ễệ ì é ế é ỉểỉ ễệể ììì ểệệ ỉ éé ềỉá ềì ểềề ỉ ể ễ ệỉ ỉ ểềề ễ ệ ỉểì é ì ễệể ììì ề ỉệ ễ ệỉ ỉ ểề ểệẹ éé ẹ ềỉ F = (FP , FL ), HF D FD(F ), HDD , HP D , p, q correct(FP ), q / partition( p), t T , t t : q ... ìạ é ề ệểềề ẹ ềỉ ẹể é ễ ỉ ỉệ ệ é ì ệ àá ễ ệ é ìíìỉ ẹ é ễễệể ểéé ểệ ỉ ểề à ẵ ệề ệ ễ ệéì ỉệ ềìễ ệ ề ĩ ễễé ỉ ểềì à ễễệể ềì é ế éé é ễễé ỉ ểề ẵắ ểỉ ỉ ểề ỉ ể ỉ ì ìỉ Collaboration Laissez faire Transparence aux applications é ễỉ ỉ ểề ề ì ẵắ ậỉệ ỉ ì é ễỉ ỉ ểề ì ềỉ ìệ é ề ểệẹ ỉ ểề ểệề ễ ệ é ềỉ ệ é ểề ềỉ ẹ ĩ ĩ ề ệểềề ẹ ềỉì ẹể é ì éé ễ ệẹ ỉ ĩ ễễé ỉ ểềì ễệ ì ệ ề ẹ ẹ ỉ ẹễì é ễ ỉ ìỉ é ềỉ ệ é ế ề ễễệể ỉ ểề... ểềì DD ỉ ề ì ạ ễệ ì ắ ìỉểệ ế ì éể ĩ ểẹẹ ềì á é ĩ ỉ ểề ề ễệể ệ ẹẹ ệ ễ ệỉ ệ ìéỉ ĩ ỉ ề ề ẹ ềỉ ễể ềỉ ỉệ é ề ẹ ềỉ ềé ềểỉ àá ể ì ế ỉểễ ểệéể S ểềỉ ềỉ ẹể ềì ề ế ế ễệể ììì ễ ệỉ ệ ề ềì ẹ é S á ĩ ề ẹ ềỉì send() ỉ recv() ỉ é ềểỉ ỉ ểề é ềìỉ éé ỉ ểề ề ềể éé vchg() ìỉểệ ế éể é ề p ĩ ỉ ề ề ẹ ềỉ e p ề ĩ ỉ ĩ ỉ ểề ìỉ ề ểề ỉ ểề é ềìỉ ềỉ tá ềểì ềểỉểềì (p, t) = e ậ ềểềá (p, t) = á ìỉạ ạ ệ ề ề ẹ ềỉ ậ ẹ é ềìỉ... éé ề ề é ề ìì é ểềì ế ề ề ệ ắắ à ể ề ễệể ììì ểềề ĩ ểề ề ễệể ììì ệ ắắ à d r r p d p q Dộfaillance dun processus ểẹẹ é ì ĩ ắắ ậ ỉ ỉ ểềì ỉ ỉ ệì ễệ ìỉệ ỉ ì ềỉìá é ểẹễé ỉ ỉ q (c) (b) Dộfaillance dun lien r p q (a) ễệểễệ ỉ ì s s s Dộconnexion dun processus ễ ệỉ ỉ ểềề ẹ ềỉ ỉ ỉ ệ ễệ ì ểề ễ ệỉ ỉ ểềì ìỉ ễệ ì ềỉ ểẹễé ỉ ĩ ễ ệỉ ỉ ểề ỉ ễệ ì ểề ễ ệỉ ỉ ểề ểẹễé ỉ ễ ệỉ ỉ ểề ểệỉ ề ễ ệỉ ỉ ểề ìỉ é ĩ ìỉ ề ềìỉ ềỉ... ềỉ ế p ề ìể ỉ ểềề ỉ ễ ệ ề ễệể ììì ểềề ỉ ểệẹ éé ẹ ềỉ D, HD DD(D), t T , p, q D(t) : p / HD (q, t) ậ ẹ ễ ệỉ ỉ ểềề ẹ ềỉ ễ ệỉ ỉ ểề ễệể ììì p ệ é ỉ ẹ ềỉ ìỉ éé ềỉ ể HP D ề ỉ D ìỉ ểềề ỉ á é ềì ẹ é partition( p) ìỉ ỉ ỉ ệ ễ ệỉ ỉ ểềì ìỉ ề ểề ỉ ểề HP D (p, t) ìỉ é é ệ q HP D (p, t) éểệì ềểì é ì ỉ ìể ỉ ề ỉ ỉ ệ ểệệ ỉì ểềề ỉ ì ì ỉệể ì ềì ẹ é ì ặểì ệ ễễ éểềì ỉ ỉ ỉ ệ é ềìỉ ềỉ t ì ễệể ììì ểềề ĩ ểề ểéểềỉ