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
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