18.03.2015 Views

XI Workshop de Testes e Tolerância a Falhas (WTF) - SBRC 2010

XI Workshop de Testes e Tolerância a Falhas (WTF) - SBRC 2010

XI Workshop de Testes e Tolerância a Falhas (WTF) - SBRC 2010

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>XI</strong> <strong>Workshop</strong> <strong>de</strong> <strong>Testes</strong> e Tolerância a <strong>Falhas</strong> 7<br />

sistema: por exemplo, mantendo dois arrays binários, um para processos e outro para canais,<br />

cujo valor "1" or "0" representa timely e untimely, respectivamente.<br />

Canais <strong>de</strong> comunicação são assumidos como confiáveis: não per<strong>de</strong>m ou alteram<br />

mensagens. Processos falham por parada silenciosa, mas po<strong>de</strong>m recuperar-se (crash/recovery).<br />

Como em [Aguilera et al. 1998], assumimos que processos po<strong>de</strong>m falhar e se recuperar<br />

seguidamente, apresentando um comportamento instavel. Estes processos po<strong>de</strong>m manter este<br />

comportamento instável durante o tempo todo, ou a partir <strong>de</strong> algum momento no tempo se<br />

tornar permanentemente em execução, ou em crash. Um processo que não falha durante um<br />

intervalo <strong>de</strong> tempo <strong>de</strong> interesse, ou que após um tempo <strong>de</strong> instabilida<strong>de</strong> não mais falha, é<br />

consi<strong>de</strong>rado correto.<br />

Sub-grafos Síncronos e Assíncronos<br />

Dado Π ′ ⊆ Π, Π ′ ≠ ∅ e χ ′ ⊆ χ, um sub-grafo <strong>de</strong> comunicação conectado C(Π ′ , χ ′ ) ⊆<br />

DS(Π, χ) é síncrono se ∀p i ∈ Π ′ and ∀c j ∈ χ ′ , p i e c j são timely. Se essas condições não se<br />

verificam, C(Π ′ , χ ′ ) é dito não síncrono. Utilizamos a notação Cs para <strong>de</strong>notar um sub-grafo<br />

síncrono e Ca para um sub-grafo não síncrono.<br />

Partições Síncronas<br />

Dado Cs(Π ′ , χ ′ ), <strong>de</strong>finimos partição síncrona como o maior sub-grafo P s(Π ′′ , χ ′′ ), tal<br />

que Cs ⊆ P s. Em outras palavras, DS não contém Cs ′ (Π ′′′ , χ ′′′ ) ⊃ Cs com |Π ′′′ | > |Π ′′ |.<br />

Assumimos que existe pelo menos um processo correto em cada partição síncrona 1 .<br />

No sistema distribuido Spa, a proprieda<strong>de</strong> <strong>de</strong> strong partitioned synchrony<br />

é necessaria para implementar <strong>de</strong>tecção perfeita <strong>de</strong> <strong>de</strong>feitos como <strong>de</strong>monstrado em<br />

[Macêdo and Goren<strong>de</strong>r 2009]<br />

strong partitioned synchrony: (∀p i ∈ Π)(∃P s ⊂ DS)(p i ∈ P s).<br />

Observamos ainda que o fato <strong>de</strong> P s ⊂ DS exclui <strong>de</strong>ssa especificação sistemas<br />

tipicamente síncronos com uma única partição com todos os processos do sistema.<br />

Em Spa, mesmo que strong partitioned synchrony não possa ser satisfeita, é possível<br />

tirar proveito das partições síncronas existentes para implementar <strong>de</strong>tectores parcialmente<br />

perfeitos, <strong>de</strong>s<strong>de</strong> que alguma partição síncrona exista [Macêdo and Goren<strong>de</strong>r 2009]. Definimos<br />

essa proprieda<strong>de</strong> a seguir.<br />

weak partitioned synchrony: o conjunto não vazio <strong>de</strong> processos que pertencem a<br />

partições síncronas é um sub-conjunto próprio <strong>de</strong> Π. Mais precisamente, assumindo que existe<br />

pelo menos uma partição síncrona P s x : (∃p i ∈ Π)(∀P s x ⊂ DS)(p i /∈ P s x ).<br />

No que se segue exploramos as proprieda<strong>de</strong>s <strong>de</strong> strong partitioned synchrony e weak<br />

partitioned synchrony sobre Spa para implementar um algoritmo <strong>de</strong> consenso on<strong>de</strong> processos<br />

po<strong>de</strong>m falhar e se recuperar.<br />

4. Consenso com Recuperação no Mo<strong>de</strong>lo Spa<br />

Como já visto anteriormente, assumimos o mo<strong>de</strong>lo <strong>de</strong> falhas crash-recovery, no qual os<br />

processos po<strong>de</strong>m falhar por colapso, e se recuperar, voltando a executar protocolos distribuídos<br />

1 Observe que essa hipótese é bastante plausível se consi<strong>de</strong>ramos clusters (partições síncronas) com tamanhos<br />

razoáveis - digamos, com mais <strong>de</strong> três unida<strong>de</strong>s por cluster

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!