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> 25<br />

Prova.<br />

• Se t + 1 /∈ C d : P SafetyCond(t) assegura que existe no máximo um nó S i<br />

com T oken(S i , t) = REAL enquanto P Hol<strong>de</strong>rCount(t), que S i possui o maior<br />

valor <strong>de</strong> count. Além disso, Hyp.1 garante que S i é o único que po<strong>de</strong> executar<br />

SaveSendT oken e incrementar count (line 17) a t + 1. Consequentemente,<br />

quando S i enviar a mensagem 〈TOKEN〉 a t+1, esta contém o maior valor possível<br />

<strong>de</strong> count e o novo <strong>de</strong>tentor do token atribuirá este valor à sua própria variável count<br />

quando da recepção <strong>de</strong>sta mensagem (linha 24).<br />

• Se t + 1 ∈ C d : Quando o nó S d chama a função UseBackup, #(D(S d , t + 1)) − 1<br />

é adicionado à sua variável count (linha 39). Como S d monitorava Hol<strong>de</strong>r(t) a t:<br />

Count(Hol<strong>de</strong>r(t), t) − Count(S d , t + 1) < #(D(S i , t)) − 1<br />

=⇒ Count(Hol<strong>de</strong>r(t), t) < Count(S d , t + 1).<br />

Logo, como P Hol<strong>de</strong>rCount(t) assegura que Hol<strong>de</strong>r(t) possui o maior valor <strong>de</strong><br />

count a t, S d <strong>de</strong>tém o maior valor <strong>de</strong> count a t + 1.<br />

Lema 3 ∀t ∈ C, P SafetyCond(t) ∧ P Hol<strong>de</strong>rMonitored(t) =⇒<br />

P NestedMonitoring(t).<br />

Prova. Seja S i e S j dois nós cujos respectivos conjuntos <strong>de</strong> <strong>de</strong>tectores são não vazio.<br />

Como por hipótese P Hol<strong>de</strong>rMonitored(t) é verda<strong>de</strong>iro e estes conjuntos <strong>de</strong> <strong>de</strong>tectores<br />

são compostos <strong>de</strong> nós sucessivos (linha 25), então {Hol<strong>de</strong>r(t), .., S i } ∈ D(S i , t)<br />

e {Hol<strong>de</strong>r(t), .., S j } ∈ D(S j , t). Consequentemente, se S i ≺ t S j (resp. S j ≺ t S i ) em<br />

T (t), então {Hol<strong>de</strong>r(t), .., S i } ∈ D(S j , t) (resp. {Hol<strong>de</strong>r(t), .., S j } ∈ D(S i , t)).<br />

Lema 4 ∀t ∈ C, P SafetyCond(t) ∧ P Hol<strong>de</strong>rCount(t) ∧ P Hol<strong>de</strong>rMonitored(t) ∧<br />

P NestedMonitoring(t) =⇒ P Hol<strong>de</strong>rMonitored(t + 1).<br />

Prova.<br />

• Se t + 1 /∈ C d : Prova por contradição. Suponhamos que P SafetyCond(t) e<br />

P Hol<strong>de</strong>rCount(t) são verda<strong>de</strong>iros, mas não P Hol<strong>de</strong>rMonitored(t + 1), ou<br />

seja, existe um nó S j com D não vazio que não monitora Hol<strong>de</strong>r(t + 1).<br />

P SafetyCond(t) e Hyp.1 asseguram que apenas S i , o <strong>de</strong>tentor do token a t,<br />

po<strong>de</strong> chamar a função SafeSendT oken a t + 1 para enviar uma nova mensagem<br />

〈TOKEN〉 a seus k + 1 sucessores. Além disso, P Hol<strong>de</strong>rMonitored(t) garante<br />

que S j monitora o <strong>de</strong>tentor do token a t. Assim, por construção (linha 25), se<br />

S i ∈ D(S j , t), S j monitora todos os nós entre S i e S j no anel. Chegamos então a<br />

uma contradição pois o Hol<strong>de</strong>r(t + 1) = S i+1 é monitorado por S j .<br />

• Se t + 1 ∈ C d : S d não monitora nenhum nó correto pois todos os nós que pertencem<br />

a D(S d , t) são falhos. Além disso, P NestedMonitoring(t + 1) garante<br />

que dois nós não falhos com D ̸= ∅, ao menos um <strong>de</strong>les monitora o outro.<br />

Consequentemente, S d pertence a todo conjunto <strong>de</strong> <strong>de</strong>tecção não vazio. Como<br />

Hol<strong>de</strong>r(t + 1) = S d , P Hol<strong>de</strong>rMonitored(t + 1) é verda<strong>de</strong>iro.<br />

Lema 5 ∀t ∈ C, P SafetyCond(t) ∧ P Hol<strong>de</strong>rCount(t) ∧ P NestedMonitoring(t) ∧<br />

P Hol<strong>de</strong>rMonitored(t) =⇒ P SafetyCond(t + 1).

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

Saved successfully!

Ooh no, something went wrong!