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
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
24 Anais<br />
acesso a C e nem a C d . Eles são introduzidos apenas por uma questão <strong>de</strong> conveniência da<br />
apresentação da prova.<br />
Para expressar o valor <strong>de</strong> certas variáveis <strong>de</strong> nosso algoritmo em relação a C,<br />
<strong>de</strong>finimos algumas funções. Para um dado t ∈ C e um dado site S, cada uma <strong>de</strong>stas<br />
funções retorna o valor da respectiva variável.<br />
Denotamos P(Π) o conjunto <strong>de</strong> potência <strong>de</strong> π. As funções que respectivamente<br />
retornam o valor das variáveis token, count e D para o nó S a t são:<br />
Token(S, t) : π × C → {NONE, BACKUP, REAL}<br />
Count(S, t) : π × C → N<br />
D(S, t) : π × C → P(Π)<br />
〈P end REAL 〉 e 〈P end BACKUP 〉 <strong>de</strong>notam uma mensagem 〈TOKEN,S i ,count〉 pen<strong>de</strong>nte<br />
que é en<strong>de</strong>reçada respectivamente a S i e um dos k sucessores <strong>de</strong> S i .<br />
Denotamos S d o nó que chama a função UseBackup.<br />
Para auxiliar a prova <strong>de</strong> nosso algoritmo, introduzimos as seguintes proprieda<strong>de</strong>s:<br />
• P SafetyCond(t): Existe no máximo um processo correto que <strong>de</strong>tém o REAL<br />
token ou que é o receptor <strong>de</strong> 〈P end REAL 〉.<br />
Se P SafetyCond(t) é satisfeita, nós <strong>de</strong>notamos:<br />
- Hol<strong>de</strong>r(t): o nó que satisfaz P SafetyCond(t).<br />
- HCount(t): equivale a Count(Hol<strong>de</strong>r(t), t), se T oken(Hol<strong>de</strong>r(t), t) =<br />
REAL ou ao valor <strong>de</strong> count <strong>de</strong> 〈P end REAL 〉, caso contrário.<br />
- T (t): o conjunto token a t, ou seja, o conjunto or<strong>de</strong>nado <strong>de</strong> k + 1 nós<br />
composto <strong>de</strong> Hol<strong>de</strong>r(t) e seus k sucessores.<br />
• P Hol<strong>de</strong>rCount(t): O <strong>de</strong>tentor do token possui o maior valor <strong>de</strong> count entre<br />
todos os nós não falhos e mensagens 〈TOKEN〉 pen<strong>de</strong>ntes.<br />
• P Hol<strong>de</strong>rMonitored(t): Se um nó não falho monitora outros nós, então<br />
Hol<strong>de</strong>r(t) está presente entre estes nós.<br />
• P NestedMonitoring(t): Se dois nós não falhos monitoram outros nós, ao<br />
menos um <strong>de</strong>les monitora o outro.<br />
Definimos que S i ≺ t S j , se S i prece<strong>de</strong> S j em T (t).<br />
Assumimos que o algoritmo que utiliza as funções oferecidas por nosso algoritmo<br />
as chamam corretamente e que o algoritmo original (sem as chamadas às referidas<br />
funções) satisfazem as proprieda<strong>de</strong>s <strong>de</strong> segurança e vivacida<strong>de</strong>.<br />
Hip 1 (Hipótese <strong>de</strong> Uso Correto) Um nó po<strong>de</strong> chamar a função SafeSendToken à<br />
condição que ele possua o REAL token. Depois <strong>de</strong> chamá-la ele não <strong>de</strong>tém mais o token.<br />
Lema 1 A t = 0, todas as proprieda<strong>de</strong>s acima <strong>de</strong>scritas são satisfeitas.<br />
Prova. A função Initialisation é chamada a t = 0. P SafetyCond(0): S 0 é o único <strong>de</strong>tentor<br />
do token e não há nenhuma mensagem 〈TOKEN〉 pen<strong>de</strong>nte; P Hol<strong>de</strong>rCount(0):<br />
o valor da variável count <strong>de</strong> todos os nós é igual a 0; P Hol<strong>de</strong>rMonitored(0) e<br />
P NestedMonitoring(0): os nós com um conjunto <strong>de</strong> <strong>de</strong>tecção não vazio, S 0 . . . S k ,<br />
são sucessivos no anel e monitoram nós entre S 0 , o <strong>de</strong>tentor do token, e ele próprio.<br />
Lema 2 ∀t ∈ C, P SafetyCond(t) ∧ P Hol<strong>de</strong>rCount(t) =⇒ P Hol<strong>de</strong>rCount(t + 1).