Curso: REDES Disciplina: SISTEMAS DISTRIBUÍDOS Professor (a): MARCELA SANTOS Data da Aplicação: 23 de maio de 2010 Teste referente à AV2 Nota: Visto do Professor (a): Nome: 1) Sistemas monoprocessados não sofrem com problemas de sincronização, ao contrário dos sistemas multiprocessados. Qual o problema introduzido quando aplicações distribuidas são desenvolvidas e executadas em diferentes máquinas? Cite um exemplo que ilustre este problema. Defasagem entre os relógios diferença entreos valores dos horários diferenca entre a frequência de um relógio perfeito e um relógio comum. Como exemplo, podemos considerar o programa make, onde fonte e executável estão em máquinas diferentes 2) Em relação aos algoritmos de sincronização de relógios: a) Descreva o algoritmo de Cristian e o algoritmo de Berkeley em linhas gerais. Qual a principal diferença nos algoritmos? 1) Cristian: Servidor de tempo passivo; Necessidade de um servidor de tempo, com hora corrente exata 2) Berkley: Servidor de tempo ativo; Basta somente entrar em acordo em relação ao horário do servidor, mesmo que não tenha relação com a hora real b) Algoritmos de sincronização de relógios devem estimar os retardos de comunicação entre os nós para estimar os relógios. Como o NTP (protocolo de tempo de rede) trata esta estimativa de modo a suavizar erros de cálculo? Organizado em uma estrutura hierarquica o que evita as dependencias ciclicas. Assim um computador somente atualiza a sua hora, caso esteja em um de nivel inferior ao daquele que esta trocando informacoes no momento 3) Após calcular o deslocamento entre relógios, a alteração em cada um dos relógios deve ser feita de maneira gradual. Quando um nó sincroniza seu relógio com o de outro nó, em geral é uma boa idéia também levar em conta medições anteriores. Por que? Dê um exemplo de como essas leituras anteriores podem ser levadas em conta. Devido ao tempo gasto entre a troca de mensagens, tendo o valor das leituras anteriores pode-se calcular o valor exato que se deve alterar e sincronizar os relógios. A aplicação do algoritmo de Bekerley a seguir mostra isso
4)Ao se optar pela sincronização de relógios físicos ou relógios lógicos, deve-se considerar uma característica fundamental da aplicação, que determina a possibilidade da utilização de um dos algoritmos. Qual é esta característica? Para os processos (que formam a aplicação) não importa a hora exata, mas sim a ordem com que os eventos ocorrem 5) Descreve o algoritmo de Lamport para relógios lógicos. Qual a limitação da relação "acontece antes" que limita a aplicação deste algoritmo? O algoritmo de Lamport é utilizado para sincronizar relógios lógicos, ou seja, somente é importante para aplicação definir a ordem que ocorrem os eventos. É baseado na relação acontece antes ( a b). Cada processo pi possui um estado consistente si Processos se comunicam através de mensagens Ações de um processo: enviar e receber mensagens, mudar o próprio status Evento: ocorrência de uma ação associada ao processo Eventos dentro de um processo pi podem sertotalmente ordenados pela relação acontece antes ( happened before ), ou seja, a b, se e somente se a ocorre antes de b em pi Um sistema distribuído pode ser visto como uma coleção P de N processos pi, i = 1,2, N Ao invés da sincronização de relógios, ordenação dos eventos: 1) Se dois eventos ocorrem no mesmo processo, então eles ocorrem na ordem observada pelo processo pi 2) Quando uma mensagem m é trocada entre dois processos, e a é o evento de envio e b o de recebimento, então a b 3) Relação acontece antes é transitiva
Relógios de Lamport NÃO capturam causalidade.causalidade pode ser capturada por meio de relógios vetoriais. No caso de relógios vetoriais, cada um dos processos possui um vetor, onde cada elemento representa o número total de eventos que ocorreram anteriormente nos demais processos. 6) Descreva o algoritmo de relógios vetoriais. Qual a limitação que este algoritmo resolve em relação ao algoritmo de Lamport? Relógios vetoriais - implementados para evitar a limitação dos relógios de Lamport: C(a) < C(b) não implica a acontece antes de b Vetores com marcas de tempo são usados para os eventos locais em cada processo Seja VCi [I] o número de eventos ocorridos em pi até o instante de tempo em questão Seja VCi [j], o número de eventos que ocorreram em pj portanto pi sabe quantos eventos ocorreram em pj O seu funcionamento é o seguinte Vetor de relógios VCi no processo pi é um vetor de N inteiros 1) Inicialmente CVi[j] = 0 for i, j = 1, 2, N 2)antes de cada evento, pi executa CVi[i] := CVi[i] +1 3) pi envia t = CVi em cada mensagem transmitida 4) quando pi recebe (m,t), o processo ajusta CVi[j] :=max(cvi[j], t[j]) j = 1, 2, N (antes do próximo evento adiciona 1 ao seu próprio contador de eventos) Assim relógios vetoriais são uma melhora nos relógios de relação acontece antes ou são concorrentes através da comparação dos vetores com marcas de tempo. 7) Adicione uma nova mensagem à figura abaixo, tal que esta seja concorrente com a mensagem A, ou seja, que ela não ocorra nem antes nem após A. B
8) Descreva o algoritmo do valentão. Qual a pequena melhoria que poderia ser feita neste algoritmo? O algoritmo do Valentão é um algoritmo de eleição de líder em um sistema distribuído. Sempre que um processo P verifica que o coordernador não está respondendo a requisições, inicia 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 assume processo. Eventualmente todos os processos desistem menos um: novo coordenador Se processo que estava indisponível volta, inicia eleição 9) Descreva o algoritmo em anel para eleição de líderes. Uso de um anel, mas sem token Processos fisicamente ou logicamente ordenados - Conhecem sucessor Processo verifica que coordenador não funciona -Envia msg de eleição para sucessor - Msg contém seu ID - Se sucessor indisponível, manda para próximo, e assim sucessivamente - A cada passo, processo que recebe msg adiciona seu ID e repassa para sucessor - Eventualmente msg volta para quem começou eleição - Reconhece porque msg de eleição contém seu ID - Neste ponto muda msg para coordenador e a circula novamente para informar a todos 1. Novo coordenador: processo com maior ID 2. Nova configuração do anel Quando msg coordenador volta para processo que iniciou eleição, é removida e todos voltam a trabalhar 10) Na abordagem centralizada da exclusão mútua discutida na sala de aula, ao receber uma mensagem de um processo que está liberando seu acesso exclusivo aos recursos que estava usando, o coordernador normalmente concede permissão ao primeiro processo na fila. Cite um outro algoritmo possível para o coordenador. Um a outra abordagem são algoritmos distribuídos de para tratar a exclusão mútua em um sistema distribuído. Exemplos de algoritmos distribuídos para exclusão mútua são o de Ricart e Agrawala e o Token ring 11) Descreva o algoritmo distribuído de Ricart e Agrawala para exclusão mútua em sistemas distribuídos. Por quê é necessário a ordenação total de todos os eventos do sistema? Como esta ordenação pode ser feita?
a) Processo necessita acessar uma região crítica : - Envia uma mensagem a todos os outros processos: nome do recurso, número do processo, tempo corrente - Todas as mensagens devem ser confirmadas b) Processo recebe uma requisição: Ação depende do estado no qual se encontra o processo ao receber a requisição Se o processo não está acessando o recurso e nem pretende fazê-lo, envia uma OK Se estiver na região critica, requisição é enviada a uma fila Se não está acessando o recurso, mas pretende fazê-lo, comparação entre os tempos de geração dos pedidos. O menor ganha o acesso.