MC714 - Sistemas Distribuídos Leandro Villas Aula de Hoje Aula Passada Relógios Lógicos Relógios de Lamport Relógios Vetoriais Aula de Hoje Exclusão Mútua Algoritmos de Eleição Leandro Villas Exclusão mútua Questão fundamental em SDs • Concorrência e colaboração entre vários processos. • Acesso simultâneo aos mesmos recursos. • Necessário evitar que recurso seja corrompido ou torne- se inconsistente. Acesso mutuamente exclusivo pelos processos. Leandro Villas Exclusão mútua Duas categorias de algoritmos de exclusão mútua Soluções baseadas em ficha (token). • Passagem de mensagem especial entre processos – ficha • Há somente uma ficha disponível • Quem tem a ficha pode acessar o recurso • Ao terminar, ficha é passada diante para o próximo processo • Se processo não precisar acessar o recurso, passa ficha adiante. Soluções baseadas em permissão. • Processo que quer acessar o recurso solicita permissão aos outros processos. Leandro Villas Exclusão mútua 1: Soluções baseadas em ficha (token) • Pode garantir com razoável facilidade que todo processo terá oportunidade de acessar o recurso evita inanição (starvation). • Fácil evitar deadlocks contribui para otimização do processo. • Desvantagem: ficha pode se perder precisa-se de procedimento distribuído para criar nova ficha única. Leandro Villas Algoritmo centralizado • Modo mais direto de conseguir exclusão mútua: simular como exclusão mútua é feita em monoprocessador. • Processo é eleito coordenador (Líder) • Outro processo quer acessar recurso compartilhado: • sempre que um processo quiser acessar um recurso compartilhado, envia uma mensagem de requisição ao líder • se nenhum outro processo estiver acessando o recurso, líder devolve uma resposta, concedendo permissão • caso exista um processo acessando o recurso, pedido deverá ser armazenado em uma fila Leandro Villas Algoritmo centralizado • Garante exclusão mútua • Justo: permissões concedidas na ordem • Não há starvation • Fácil de implementar. Três tipos de mensagem: Requisição, Concessão e Liberação Leandro Villas Algoritmo centralizado • Coordenador é ponto de falha único • Falha implica queda do sistema • Se processo bloqueia depois de pedir recurso, pode ficar bloqueado • como identificar um coordenador inativo de uma permissão negada • Coordenador pode ser gargalo Leandro Villas Algoritmo descentralizado Leandro Villas Algoritmo descentralizado • Ampliação do coordenador central. • Premissa: cada recurso é replicado n vezes. • Toda réplica tem seu próprio coordenador para controlar acesso concorrente. • Quando processo quer acessar um recurso, precisa de voto majoritário m > n/2 coordenadores. • Coordenador informa ao requisitante se não der permissão. • Torna solução centralizada original menos vulnerável a falhas Problema: Se muitos nós quiserem acessar o mesmo recurso, a utilização decresce rapidamente. • Haverá tantos nós competindo para obter acesso que, a certa altura, nenhum dels conseguirá votos suficientes, e o recurso deixará de ser utilizado. Leandro Villas Algoritmo distribuído Leandro Villas Algoritmo distribuído • Algoritmo distribuído determinístico para exclusão mútua • Lamport (1978), aprimorado por Ricart e Agrawala (1981) • Requer ordenação total de todos os eventos no sistema • Para qualquer par de eventos, como mensagens, não pode haver ambiguidade sobre o qual aconteceu primeiro. • Algoritmo de Lamport é um modo de conseguir essa ordenação. Leandro Villas Algoritmo distribuído Quando um processo quer acessar um recurso compartilhado: • Monta mensagem que contém nome do recurso, seu número de processo e hora (lógica) corrente. • Envia mensagem a todos os outros processos, incluindo ele mesmo. • Premissa: envio de mensagens é confiável. Leandro Villas Algoritmo distribuído Quando um processo recebe uma mensagem: Ação depende do seu próprio estado em relação ao recurso solicitado na mensagem. Se o receptor não está acessando recurso e não quer acessá-lo responde OK. 2. Se o receptor já tem acesso ao recurso Não responde e põe requisição na fila. 3. Se o receptor também quer acessar mas ainda não o fez, compara marca de tempo da mensagem que chegou com a que enviou para todos. A msg com marca menor vence 1. Caso a marca da msg que chegou seja menor, envia OK. Caso contrário, enfileira a requisição sem responder Leandro Villas Algoritmo distribuído • Após enviar requisições de permissão, processo espera até que todos tenham dado permissão. • Ao terminar, envia mensagem de OK para todos que estão em sua fila e remove todos da fila. Leandro Villas Algoritmo distribuído • Exclusão mútua é garantida sem starvation e deadlock • Número de mensagens para cada pedido de permissão é de 2(n-1), onde o número total de processos no sistema é n Problema: n pontos de falha → se qualquer processo falhar, não responderá as requisições, que será interpretada, de maneira incorreta como recusa! Solução? Leandro Villas Algoritmo distribuído • Quando uma requisição chega, o receptor sempre envia uma resposta, seja concedendo ou recusando permissão • Sempre que uma requisição ou uma resposta se perde, o remetente esgota a temporização de espera e continua tentando até que uma resposta volte ou que o remetente conclua que o destinatário está morto Leandro Villas Algoritmo distribuído • Maior número de mensagens trocadas • Maior probabilidade de falhas • Possível gargalho em todos os processos Importante para mostrar que, apesar das desvantagens, é possível ter um algoritmo distribuído que efetivamente promove a exclusão mútua Leandro Villas Token ring Leandro Villas Token ring Exclusão mútua por esquemas determinísticos em um SD • Anel lógico é construído em software e a cada processo é designada uma posição no anel • Cada processo deve saber quem deve receber o token Leandro Villas Token ring • Quando o anel é inicializado, o processo 0 recebe o token • O token é repassado do processo k para o k+1, através de msgs ponto-a-ponto • Quando um processo recebe o token, verifica se precisa acessar o recurso compartilhado • acessa o recurso e repassa o token ao próximo processo • caso contrário, simplesmente repassa o token Leandro Villas Token ring Corretude do algoritmo: • só um processo tem o token a qualquer instante • starvation é evitado Problemas • Se o token se perder, deve ser gerado novamente • Detectar que o token se perdeu é difícil • Se um processo falha, este pode ser removido do grupo e o token é repassado para o próximo vizinho lógico • Todos devem manter configuração corrente do anel Leandro Villas Comparação entre os 4 algoritmos Leandro Villas Algoritmos de eleição Leandro Villas Algoritmos de eleição • Objetivo: escolher um líder – processo que seja coordenador dentre um conjunto de processos. • Suposição: cada processo tem um número exclusivo (endereço de rede, por exemplo). • Abordagem geral: procurar processo com número mais alto e designá-lo como líder. • Algoritmos variam na maneira de localizar tal processo. Leandro Villas Algoritmos de eleição - suposições • Todo processo sabe o número de todos os outros. • Processos não sabem quais estão funcionando e quais estão inativos. • Meta do algoritmo de eleição: garantir que, quando uma eleição começar, ela terminará com todos os processos concordando com o novo coordenador escolhido. Leandro Villas Algoritmos de eleição tradicionais • 1. Algoritmo do valentão -- proposto por Garcia-Molina (1982) • Processo P qualquer nota que coordenador não está mais respondendo, inicia eleição da seguinte forma: • Envia mensagem ELEIÇÃO a todos os processos de número mais alto • Se nenhum responder, P vence a eleição e se torna coordenador • Se algum responder, este toma o poder e P conclui seu trabalho. Leandro Villas Algoritmos de eleição tradicionais • Processos podem receber mensagem ELEIÇÃO a qualquer momento de nós com número mais baixo. • Receptor envia OK de volta ao remetente, indicando que está vivo e que tomará o poder. • Receptor convoca uma eleição (a não ser que já tenha convocado uma) • Converge para situação onde todos desistem, exceto um, que será o novo coordenador. • Este anuncia a vitória enviando a todos os processos informando que ele é o novo coordenador. Leandro Villas Algoritmos de eleição tradicionais • Processo inativo convoca eleição quando volta. • Se for processo de número mais alto, ganha. • Mais “poderoso” sempre ganha. Leandro Villas Algoritmos de eleição tradicionais Leandro Villas Algoritmos de eleição tradicionais • 2. Algoritmo de anel • Processos ordenados por ordem física ou lógica • Cada um sabe quem é seu sucessor • Processo nota que coordenador não responde envia mensagem ELEIÇÃO, contendo seu número de processo. • Se sucessor não estiver respondendo, envia ao próximo membro ao longo do anel. Repete até encontrar um processo funcional. • Cada nó adiciona seu número de processo à mensagem, candidatando-se a coordenador. Leandro Villas Algoritmos de eleição tradicionais • Quando mensagem retornar ao iniciador da eleição: • Extrai maior número de processo que encontrar na mensagem. • Circula mensagem COORDENADOR com tal número, além dos participantes do anel. • Mensagem COORDENADOR chegou ao iniciador, é removida. • O que ocorre se dois processos iniciarem eleição? Leandro Villas Eleição em ambiente sem fio • Sem premissa de que troca de mensagem é confiável e topologia não muda. • Em especial redes ad hoc. Leandro Villas Eleição em rede ad hoc sem fio • Qualquer nó, chamado nó fonte, pode iniciar uma eleição • Envia mensagem ELEIÇÃO a seus vizinhos imediatos (nós que estão ao seu alcance). • Nó recebe ELEIÇÃO pela primeira vez: • Designa remetente como seu pai • Envia mensagem ELEIÇÃO a todos seus vizinhos imediatos (exceto pai) • Se nó recebe ELEIÇÃO de vizinho que não é seu pai, se limita a reconhecer o recebimento. Leandro Villas Eleição em rede ad hoc sem fio • Quando um nó R designou um nó Q como seu pai, repassa mensagem ELEIÇÃO aos vizinhos imediatos, exceto Q. • Aguarda que reconhecimentos cheguem antes de reconhecer e ELEIÇÃO recebida de Q. • Vizinhos que já tem pai respondem imediatamente a R. • Se todos os vizinhos já tem pai, R é um nó folha e pode responder a Q rapidamente. • Resposta inclui informações (tempo de vida útil da bateria, capacidades dos recursos) Leandro Villas Eleição em rede ad hoc sem fio • Q enviou mensagem ELEIÇÃO porque seu pai, P, havia enviado a ele. • Quando Q reconhecer mensagem de P, Q passará o nó mais qualificado a P. • O nó fonte saberá qual o melhor nó • Seleciona como líder • Transmite decisão em broadcast Leandro Villas