Sistemas Distribuídos Capítulo 6 - Aula 12 Aula Passada Relógios Lógicos Relógios de Lamport Relógios Vetoriais Aula de hoje Exclusão Mútua Algoritmos de Eleição 1
Exclusão Mútua - Questão fundamental em SDs: Concorrência e colaboração entre vários processos Processos vão precisar acessar simultaneamente os mesmos recursos Para evitar que acessos concorrentes corrompam o recurso ou o tornem inconsistente acesso mutuamente exclusivos
Exclusão Mútua - Duas categorias diferentes: Soluções baseadas token: Passagem de uma mensagem especial entre os processos Token Com posse do token, o recurso pode ser acessado Ao término, token é repassado Evita starvation e deadlocks Problema: perda do token
Exclusão Mútua - Duas categorias diferentes: Soluções baseadas em permissão: Ao acessar um recurso, o processo primeiramente deve solicitar permissão aos outros processos Algoritmo Centralizado e algoritmo de Ricart e Agrawala (1981)
Exclusão Mútua Algoritmo Centralizado Modo mais direto de conseguir exclusão mútua: simular sistema monoprocessador Coordenador (Líder): 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
Exclusão Mútua Algoritmo Centralizado
Exclusão Mútua Algoritmo Centralizado Algoritmo centralizado garante exclusão mútua: coordenador permite o acesso de um processo por vez ao recurso justo, dado que as permissões são concedidas na ordem em que as requisições foram recebidas fácil de implementar: requer somente três mensagens por utilização de recurso (requisição, concessão, liberação) problema: coordenador é um único ponto de falha; como identificar um coordenador inativo de uma permissão negada.
Exclusão Mútua Algoritmo Distribuído Ricart e Agrawala (1981): melhoria do algoritmo proposto por Lamport (1978) Ordenação total de todos os eventos do sistema aplicação do algoritmo de Lamport
Exclusão Mútua Algoritmo Distribuído Quando um processo quer acessar um recurso compartilhado: monta mensagem que contém o nome do recurso, seu número de processo e a hora corrente envia a mensagem a todos os outros processos premissa: mensagens não se perdem
Exclusão Mútua Algoritmo Distribuído Quando um processo recebe uma mensagem: se o receptor não estiver acessando o recurso e não quiser acessá-lo: mensagem de OK se o receptor já tiver acesso ao recurso, não responde e coloca a requisição em uma fila se o receptor também quiser acessar o recurso, compara a marca da msg recebida com a marca da msg que enviou para todos. A msg com marca menor vence. Caso a marca da msg que chegou seja menor, envia OK. Caso contrário, enfileira a requisição
Exclusão Mútua Algoritmo Distribuído Após enviar requisições para permissão ao acesso a um recurso, processo espera pela permissão de todos os outros processos. Com todas as permissões, acessa o recurso e logo após tenha utilizado este recurso envia mensagem de OK para todos os processos que estão em sua fila e os remove.
Exclusão Mútua Algoritmo Distribuído
Exclusão Mútua Algoritmo Distribuído 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!
Exclusão Mútua Algoritmo Distribuído Algoritmo Distribuído: recusa ou falha? 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
Exclusão Mútua Algoritmo Distribuído 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
Exclusão Mútua 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
Exclusão Mútua 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
Exclusão Mútua 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 se um processo falha, este pode ser removido do grupo e o token é repassado para o próximo vizinho lógico
Exclusão Mútua Comparações
Algoritmos de Eleição Muitos algoritmos distribuídos requerem que um processo aja como coordenador No caso de processos iguais (sem característica distintiva), consideramos que cada um deles possui um número exclusivo. Em geral, algoritmos de eleição tentam localizar o processo que tenha o identificador mais alto, sendo este escolhido como coordenador Vamos considerar que todo processo sabe qual é o número de processo de todos os outros. O que não se sabe é quais estão funcionando e quais estão inativos Ao final, todos os processos devem concordar com o a escolha do novo líder (ou coordenador)
Algoritmos de Eleição Algoritmo do valentão (Bully) Proposto por Garcia-Molina (1982) Quando qualquer processo nota que o líder não está mais respondendo a requisições, ele inicia uma nova eleição. Processo P convoca uma eleição: (1) P envia msg de eleição para todos os processos com IDs maiores (2) Se ninguém responde, P vence eleição e torna-se coordenador (3) Se algum processo com ID maior responde, ele desiste. Quando processo recebe msg de eleição de membros com ID mais baixa Envia OK para remetente para indicar que está vivo e convoca eleição
Algoritmos de Eleição Algoritmo do valentão (Bully) Eventualmente todos os processos desistem menos um: novo coordenador Se processo que estava indisponível volta, inicia eleição Se for processo com maior ID, vence e toma coordenação Maior cara da cidade sempre vence: algoritmo do valentão
Algoritmos de Eleição Algoritmo do valentão (Bully)
Algoritmos de Eleição Algoritmo de anel Não utiliza token Quando qualquer processo nota que o coordenador não está funcionando, monta uma mensagem ELEIÇÃO, com o seu próprio número de processo, e envia ao seu sucessor Caso o sucessor tenha caído, o remetente segue até achar o próximo processo em funcionamento Ao longo do caminho, cada processo adiciona o seu número a lista na msg Ao retornar a origem, líder é definido (maior de todos os processos na lista) e msg COORDENADOR é enviada, com o novo líder e a lista de processos em funcionamento
Algoritmos de Eleição Algoritmo de anel