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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

28 Anais<br />

algoritmo <strong>de</strong> término.<br />

Vários autores [Chang and Roberts 1979], [Franklin 1982], [Peterson 1982], etc.<br />

propuseram algoritmos para o problema da eleição <strong>de</strong> um lí<strong>de</strong>r para nós interligados em<br />

uma estrutura lógica <strong>de</strong> anel. Os nós candidatos a se tornarem lí<strong>de</strong>r enviam uma mensagem<br />

<strong>de</strong> candidatura (token) ao seu sucessor que circula no anel segundo as regras <strong>de</strong><br />

comparação e transmissão do algoritmo em questão. Por exemplo, no algoritmo <strong>de</strong> Chang<br />

e Roberts, a mensagem é retransmitida enquanto um melhor candidato não é encontrado.<br />

Um nó é eleito lí<strong>de</strong>r quando receber a mensagem que contém a sua própria candidatura.<br />

Para assegurar a correta execução do algoritmo <strong>de</strong> Chang e Roberts na presença <strong>de</strong><br />

falhas, a circulação e a unicida<strong>de</strong> das mensagens <strong>de</strong> candidaturas precisam ser garantidas.<br />

Entretanto, uma mensagem <strong>de</strong> candidatura po<strong>de</strong> ser vista, analogamente ao token, como<br />

um objeto único que circula no anel. Em outras palavras, po<strong>de</strong>mos aplicar nosso algoritmo<br />

para garantir a tolerância a falha dos pedidos <strong>de</strong> candidatura: a mensagem < T OKEN ><br />

representa então a candidatura <strong>de</strong> um nó cuja i<strong>de</strong>ntificação S l está contida na mensagem.<br />

Como para um anel com N nós, o número máximo <strong>de</strong> pedidos pen<strong>de</strong>ntes é N, nosso<br />

algoritmo precisa controlar a circulação e unicida<strong>de</strong> <strong>de</strong> no máximo N objetos. Observe<br />

que consi<strong>de</strong>ramos a mesma hipótese (2) <strong>de</strong> que não há mensagens pen<strong>de</strong>ntes para o novo<br />

<strong>de</strong>tentor do objeto no caso <strong>de</strong> falhas <strong>de</strong> seus pre<strong>de</strong>cessores.<br />

O nosso algoritmo assegura que em presença <strong>de</strong> no máximo k + 1 falhas consecutivas,<br />

o algoritmo <strong>de</strong> eleição termina (se e somente se ao menos um dos candidatos<br />

emitiu k + 1 cópias da mensagem <strong>de</strong> candidatura). Vale ressaltar que não po<strong>de</strong>mos assegurar<br />

que o lí<strong>de</strong>r seja um processo correto. Entretanto, po<strong>de</strong>ríamos oferecer uma função<br />

UpdateT oken para tanto. O nó S j se torna lí<strong>de</strong>r ao receber sua própria mensagem <strong>de</strong><br />

candidatura. Esta foi enviada com a utilização da função SafeSendT oken e, consequentemente,<br />

também recebida pelos k sucessores <strong>de</strong> S j no anel, que monitoram então<br />

S j . No caso <strong>de</strong> falha <strong>de</strong>ste, a função UpdateT oken() é executada por S i , o sucessor correto<br />

<strong>de</strong> S j . Este sabe que se trata da falha <strong>de</strong> um lí<strong>de</strong>r pois o havia registrado como tal<br />

(currentLea<strong>de</strong>r). Assim, para assegura a eleição <strong>de</strong> um nó correto basta alterar a candidatura<br />

<strong>de</strong> S j pela <strong>de</strong> S i . Ao receber a sua propria candidatura S i se tornará então o novo<br />

lí<strong>de</strong>r. O código da função UpdateT oken() seria:<br />

45<br />

46<br />

47<br />

UpdateToken (〈TOKEN〉)<br />

if currentLea<strong>de</strong>r = S l then<br />

set S i as S l in 〈TOKEN〉<br />

4. Trabalhos Relacionados<br />

Vários algoritmos <strong>de</strong> exclusão mútua tolerante a falhas [Nishio et al. 1990]<br />

[Manivannan and Singhal 1994] [Chang et al. 1990], etc. existem na literatura. Porém,<br />

estes geralmente adotam soluções que não são escaláveis como por exemplo uma eleição<br />

global ou necessitam que o nó que <strong>de</strong>tectou a perda do token receba um confirmação (acknowledge)<br />

<strong>de</strong> todos os outros nó antes <strong>de</strong> recriar o token como em [Nishio et al. 1990]<br />

[Manivannan and Singhal 1994].<br />

Misra [Misra 1983] propõe em seu artigo sobre <strong>de</strong>tecção do término <strong>de</strong> uma<br />

aplicação distribuída para topologias em anel adaptar o algoritmo para que a perda do

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

Saved successfully!

Ooh no, something went wrong!