You are on page 1of 39

Sincronização

Parte 2

Sistemas Distribuídos
Sumário

Exclusão mútua.
– Definição.
– Soluções.
– Algoritmos.

Eleição.
– Definição.
– Algoritmos.
Exclusão Mútua

Concorrência é uma questão fundamental em
SD.
– Geralmente, processos vão precisar acessar
simultaneamente os mesmos recursos.
– Como evitar que acessos concorrentes corrompam
o recurso ou o tornem inconsistente ?
– Soluções que garantam acesso mutualmente
exclusivo.
Exclusão Mútua

Visão geral:
– Algoritmos distribuídos de exclusão mútua possuem duas
categorias:

Soluções baseadas em ficha (token).
– Consegue-se exclusão mútua com a passagem de uma mensagem
especial (ficha).
– Só há uma ficha e o processo que a detém poderá acessar o recurso
compartilhado.
– Se um processo não tem interesse no acesso ao recurso a ficha é
repassada.

Evita inanição (starvation).
● Fácil evitar deadlocks.
Exclusão Mútua

Visão geral:
– Algoritmos distribuídos de exclusão mútua
possuem duas categorias:

Abordagem baseada em permissão:
– Um processo consegue acesso ao recurso compartilhado pelo
pedido de permissão aos outros processos do grupo.
Exclusão Mútua: algoritmo
centralizado

Simula o comportamento de um sistema
monoprocessador:
– Um processo é eleito como coordenador.

Processos solicitam acesso a recursos através do envio
de mensagens ao coordenador.
– O coordenador concede o acesso ao recurso por
meio de uma mensagem de concessão.

Essa mensagem é enviada quando nenhum outro
processo está acessando àquele recurso.
Exclusão Mútua: algoritmo
centralizado
(b) Processo 2 pede acesso ao recurso e o coordenador se
abstém de responder, bloqueando-o.
Será que bloquear é boa opção ? Poderia responder “Permissão negada”.
Coordenador coloca o processo 2 na fila.

(c) Processo 1 finaliza a utilização do recurso e envia uma mensagem


ao coordenador para liberar o acesso exclusivo.
Coordenador envia mensagem de concessão por ordem da fila.
Exclusão Mútua: algoritmo
centralizado

Algoritmo garante exclusão mútua.
– Coordenador só permite acesso de um processo
por vez ao recurso.
– Também é justo, pois concede permissões na
ordem em que as requisições foram recebidas.
– Não há inanição.
– Fácil de implementar.
– Simplicidade o torna atraente para muitas
situações.
Exclusão Mútua: algoritmo
centralizado

Deficiências:
– Coordenador é ponto de falha único.
– Se processos bloquearem após fazer requisição,
não podem diferenciar um coordenador inativo de
uma “permissão negada”.
– Para sistemas de grande porte ter Coordenador
único pode ser um gargalo de desempenho.
Exclusão Mútua: algoritmo
descentralizado

Algoritmo baseado em votação:
– Adota-se como premissa que cada recurso é
replicado n vezes;
– Cada réplica possui um coordenador;
– Processo requisitante precisa receber maioria de
votos de coordenadores: m > n/2.

Em caso de permissão negada, o processo desistirá do
recurso por um período de tempo aleatório;

Depois fará uma nova tentativa.
Exclusão Mútua: algoritmo
descentralizado

Vantagens:
– Faz com que o algoritmo centralizado seja menos
vulnerável a falhas de um único coordenador.

Em caso de falha de um coordenador, os outros podem
fazer a votação.

Mas e se um coordenador demorar a retornar na falha ?

E se quando ele reiniciar, esquecer permissões dadas e
enviá-las incorretamente a outro processo ?
– Possibilita o uso de réplicas de recursos.
Exclusão Mútua: algoritmo
descentralizado

Desvantagens:
– Baixa proteção contra inanição (starvation).
– Muitos processos querendo acessar um recurso
resulta num cenário onde nenhum conseguirá
votos suficientes.

E os recursos ficando ociosos...
– Há um probabilidade positiva (baixa) de que 2
processos consigam acesso ao mesmo recurso ao
mesmo tempo (não garante exclusão mútua).
Exclusão Mútua: algoritmo distribuído

Para muitos, alcançar correção usando leis da
probabilidade não é bom o bastante.

Algoritmos baseados em uma abordagem
determinística foram propostos.
– Lamport (1978);
– Ricart e Agrawala (1981).
● Versão mais analisada.
Exclusão Mútua: algoritmo distribuído

Requer ordenação total de todos os eventos do
sistema.
– Algoritmo de Lamport (relógios lógicos).

Funcionamento:
– Quando um processo quer acessar um recurso,
monta uma mensagem com o nome do recurso, seu
número de processo e a hora corrente (lógica).
– Envia essa mensagem a todos os processos,
inclusive para ele mesmo.
Exclusão Mútua: algoritmo distribuído

Funcionamento (cont.)
– Quando um processo recebe essa mensagem de requisição,
executa uma ação de acordo com seu estado em relação ao
recurso:

Se o receptor não estiver acessando o recurso e nem quer acessá-
lo, retorna OK ao emissor.

Se já tem acesso ao recurso, não responde e coloca requisição em
uma fila.

Se o receptor também quer acesso àquele recurso, mas não tem a
permissão, compara sua marca de tempo com a da mensagem
recebida. Vence a mais baixa.
Exclusão Mútua: algoritmo distribuído

Funcionamento (cont.)
– O processo emissor aguarda o recebimento de
todas as respostas;
– Quando houver permissão de todos, o processo
acessa o recurso;
– A liberação do recurso acontece quando ocorre o
envio de um OK a todos.
Exclusão Mútua: algoritmo distribuído


Vantagens:
– Exclusão mútua garantida;
– Não há deadlocks e nem starvation.
– Nº de mensagens: 2(n – 1), onde n é o nº de processos.
– Não existe ponto de falha único.
Exclusão Mútua: algoritmo distribuído

Desvantagens:
– Ponto único de falha deu lugar a n pontos de falha.

Em caso de falha em qualquer processo, ele não
responderá as requisições.

O silêncio pode ser erradamente interpretado.
– Bloquearia todas as tentativas subsequentes de entrar em todas
as regiões críticas.

Uma possível solução seria sempre responder às
requisições.
– Requisitante não bloqueia e pode fazer novas tentativas com
timeouts.
Exclusão Mútua: algoritmo distribuído

Desvantagens:
– Como gerenciar o grupo de processos ?

Manter lista de associação ao grupo em cada processo;
– Processos que entram, saem e caem.

Ou utilizar multicast.
– Mais lento, complexo, caro em relação ao original
centralizado.
Exclusão Mútua: algoritmo token ring

Esquema determinístico que se baseia nas
redes token ring.
– Um anel lógico é construído em software:

Cada processo ocupa uma posição.

Posições podem ser alocadas em ordem numérica de
endereços de rede.

Cada processo deve saber de quem é a vez depois dele.
Exclusão Mútua: algoritmo token ring

a) Processos interligados pelo mesmo b) Anel construído em software.


barramento (Ethernet, por exemplo) Posições no anel: por ordem de
sem nenhuma ordenação. endereços de rede ou outra forma.
Importante: cada processo saiba de
quem é a vez após ele.
Exclusão Mútua: algoritmo token ring

Quando o anel é inicializado:
– P0 recebe uma ficha.
– A ficha deve circular pelo anel.
– Ela é passada de Pk para Pk+1
– Quando Pk recebe a ficha, verifica se precisa acessar recurso.

Se sim, acessa-o.

Senão, a ficha é repassada.
– Se o processo seguinte não precisar acessar o recurso,
repassa a ficha.
– Se ninguém quiser acessar o recurso, a ficha fica circulando.
Exclusão Mútua: algoritmo token ring

Problemas:
– Se a ficha se perder, precisa ser regenerada.
– Como saber se a demora no repasse significa perda da
ficha?

Pode ser que alguém esteja usando.
Exclusão Mútua: algoritmo token ring

Problemas:
– Se um processo cair?

Possível solução: inicialmente, exigir confirmação de
recebimento da ficha.
– Caso contrario, caiu…
– Processo morto é facilmente identificado e excluído do
grupo.
– Ficha é repassada para o próximo da sequência ou para o
próximo do próximo.

Exige que a configuração do anel seja mantida.
Algoritmos de Eleição

Utilizados quando há necessidade de um
processo agir como coordenador ou líder.
– Desempenhe um papel especial.
– Um dos processos tem que assumir essa
responsabilidade.

Exemplo: processo(s) que gerencia(m) o uso de recursos
compartilhados.
Algoritmos de Eleição

Como distinguir processos?

Deve-se buscar por característica distintiva.
– Considerando um processo por máquina: endereços
de rede.

A partir dele pode-se criar um identificador único.

Ou, o algoritmo pode determinar esse identificador.

Nos algoritmos a seguir, considera-se que todo
processo sabe o identificador de todos os
outros.
Algoritmos de Eleição

Exemplos tradicionais:
– Algoritmo do valentão;
– Algoritmo de anel.

Soluções para ambientes específicos:
– Algoritmos para sistemas ad hoc.
Algoritmos de Eleição

Algoritmo do valentão (Garcia-Molina,1982).
– Todos os processos possuem identificadores.
– Sempre que um processo P perceber que o coordenador
não responde, P inicia uma eleição.

P envia uma mensagem ELEIÇÃO a todos os processos de id's
mais altos.

Se nenhum responder, P vence a eleição e se torna o
coordenador.

Se um dos processos com id mais alto responder, ele toma o
poder e P finaliza sua tarefa.
– É eleito o processo com maior id.
Algoritmo do Valentão
Análise dos Algoritmos de Eleição

Algoritmo do valentão:
– Pior caso: processo com prioridade mais baixa
detecta falha no coordenador.

Em um sistema com n processos, n-1 eleições
acontecem.
– Melhor caso: processo que detecta falha é o de
maior prioridade.
Algoritmos de Eleição

Algoritmo baseado em anel (Chang, Roberts. 1979).
– Baseia-se no uso do anel (físico ou lógico), mas não usa ficha.
– Quando um processo detecta que o coordenador não está
funcionando:

Monta uma mensagem ELEIÇÃO, com seu próprio id e envia ao seu
sucessor ou o próximo que esteja funcionando.
– A cada etapa, o receptor adiciona seu id na mensagem,
tornando-se um candidato.
– Quando a mensagem chega ao primeiro emissor, ele monta uma
mensagem COORDENADOR para circular no anel informando a
todos o novo coordenador (quem tiver o id mais alto.)
Algoritmo em Anel
Algoritmo em Anel

Processos 2 e 5 descobrem que o 7 caiu.
– Montam mensagem ELEIÇÃO e fazem a mensagem
circular.
– Quando tiverem percorrido todo o caminho, as
converterão em mensagens COORDENADOR.

Com os mesmos membros e na mesma ordem.
– Casos desse tipo geram mensagens extras.

Consomem mais largura de banda.
Análise dos Algoritmos de Eleição

Algoritmo baseado em anel:
– Eleição precisa de 2(n-1) mensagens.
– n-1 mensagens para rotação da mensagem de
eleição.
– n-1 mensagens para rotação da mensagem de
informando quem é o novo coordenador.
Eleições em Ambientes Sem Fio

Algoritmos tradicionais partem de premissas que não
são realistas em ambientes sem fio:
– Troca de mensagens confiável.
– Topologia de rede não muda.
– Premissas falsas para redes ad hoc, por exemplo.
Exemplo: redes ad hoc
Eleições em Ambientes Sem Fio
Eleições em Ambientes Sem Fio
Referências

Slides criados a partir do material dos livros:
– TANENBAUM, A. S; STEEN, M. van. Distributed
Systems: Principles and Paradigms. Prentice-Hall.
– COULOURIS, G. et al. Sistemas Distribuídos: Conceitos
e Projeto. Addison-Wesley.

You might also like