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.

20 Anais<br />

à aplicação: SafeSendT oken, SafeReceiveT oken e UpdateT oken. A aplicação<br />

<strong>de</strong>ve então substituir as suas funções originais utilizadas para enviar o token ao nó<br />

sucessor no anel e receber o token do pre<strong>de</strong>cessor pelas funções SafeSendT oken e<br />

SafeReceiveT oken respectivamente. A função UpdateT oken po<strong>de</strong> ser utilizada pela<br />

aplicação quando, em caso <strong>de</strong> falha, as informações guardadas pelo token precisarem ser<br />

atualizadas (veja seção 3.4). Consi<strong>de</strong>ramos que a aplicação se comporta corretamente,<br />

ou seja, um nó utiliza o token pour um intervalo <strong>de</strong> tempo limitado e <strong>de</strong>pois o envia ao<br />

seu sucessor direto no anel. Consi<strong>de</strong>ramos que inicialmente a aplicação sempre atribui o<br />

token a S 0 .<br />

Tanto a versão original do algoritmo da aplicação quanto a sua versão que utiliza<br />

as funções oferecidas por nosso algoritmo para tolerar falhas do token precisam assegurar<br />

as seguintes proprieda<strong>de</strong>s:<br />

• segurança (safety): A todo instante, existe, no máximo, um token no sistema.<br />

• vivacida<strong>de</strong> (liveness): A todo instante, todo processo correto receberá o token<br />

num intervalo <strong>de</strong> tempo limitado.<br />

Note que, momentaneamente, po<strong>de</strong> acontecer que não exista nenhum token no<br />

sistema pois ele está sendo regerado. No caso do nosso algoritmo, as cópias do token não<br />

são consi<strong>de</strong>radas como token enquanto não substituírem o verda<strong>de</strong>iro.<br />

3.1. Variáveis e Mensagens<br />

O nó S i possui as variáveis locais count Si e token Si . Aquela é utilizada para evitar que um<br />

nó consi<strong>de</strong>re uma mensagem 〈TOKEN〉 antiga como válida enquanto que esta controla se<br />

S i <strong>de</strong>tém o token, uma cópia <strong>de</strong>ste, ou nenhum dos dois. Os valores REAL, BACKUP<br />

e NONE po<strong>de</strong>m ser atribuídos à variável token Si : (1) token Si possui o valor REAL<br />

sempre que S i tiver o direito <strong>de</strong> utilizar o token, ou seja, o processo da aplicação que<br />

executa em S i po<strong>de</strong> usá-lo. Num dado instante t, apenas um processo tem sua variável<br />

token igual a REAL, o que assegura a unicida<strong>de</strong> do token; (2) o valor BACKUP é<br />

atribuído a token Si se S i é um dos k sucessores diretos do nó S t e <strong>de</strong>tém uma cópia<br />

válida do token. Se S i não falhar, haverá um momento em que o valor <strong>de</strong> token Si será<br />

substituído por REAL; (3) O valor NONE é atribuído à variável token Si quando S i não<br />

possui o token nem uma cópia <strong>de</strong>le.<br />

Os seguintes dois conjuntos são utilizados por S i :<br />

• D Si (Conjunto <strong>de</strong> <strong>de</strong>tecção, Detection set): Conjunto que inclui os nós que S i<br />

precisa monitorar para <strong>de</strong>tectar as respectivas falhas além do próprio S i . Ele é<br />

composto por {S t . . . S i }, ou seja, o conjunto <strong>de</strong> nós entre S t e S i na or<strong>de</strong>m crescente<br />

do anel, incluindo ambos os nós. Ele possui então no máximo k + 1 nós.<br />

• F Si (Conjunto <strong>de</strong> nós falhos, Faulty set): Conjunto <strong>de</strong> nós que S i <strong>de</strong>tectou como<br />

falhos.<br />

Se o valor <strong>de</strong> token Si for igual a REAL ou BACKUP , então D Si ≠ ∅. Os k + 1<br />

conjuntos <strong>de</strong> <strong>de</strong>tecção são construídos <strong>de</strong> forma que cada um difere do outro e um inclui<br />

o outro (nested <strong>de</strong>tection sets). O nó que <strong>de</strong>tém o token está presente em todos os k + 1<br />

conjuntos. A vantagem <strong>de</strong> tal construção é o baixo custo em termos <strong>de</strong> mensagens quando<br />

comparado a um sistema <strong>de</strong> monitoramento no qual cada um dos k + 1 nós monitora os<br />

outros k. Além disso, em caso <strong>de</strong> falha, a eleição do novo <strong>de</strong>tentor do token não requer<br />

nenhum envio <strong>de</strong> mensagem.

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

Saved successfully!

Ooh no, something went wrong!