sd06 (si) exclusão mútua
Post on 09-Jul-2015
270 Views
Preview:
TRANSCRIPT
Sistemas Distribuídos II
Parte 03Exclusão Mútua
Introdução
• Assim como em sistemas centralizados, os sistemas distribuídos enfrentam o problema de gerenciar recursos compartilhados sem comprometer sua consistência– Dois ou mais processos não podem acessar dados
compartilhados ao mesmo tempo– Ou seja, o acesso é feito por meio de “exclusão
mútua”
Introdução
• Em sistemas centralizados criou-se o conceito de “região crítica”, que funciona da seguinte forma:– Para que um processo seja autorizado a entrar no estado de
região crítica, nenhum outro processo pode fazer isso– Deste modo fica garantida a exclusão mútua em um recurso
compartilhado– Os sistemas centralizados mantém esta estrutura de acesso
funcionando por meio de mecanismos como semáforos, monitores e outras soluções similares
Introdução
• Qual o problema em usar essas soluções nos SDs?– Todas estas soluções se baseiam na existência de:• Relógio único: Os eventos em cada processo acontecem
sincronizados pelo mesmo relógio• Memória compartilhada: Toda a informação de controle
armazenada na memória compartilhada está facilmente disponível para qualquer processo envolvido
– Em sistemas distribuídos não meios de garantir que nenhuma das duas condições vá acontecer
Introdução(cont.)
• É preciso implementar outro tipo de solução baseada na forma de comunicação adotada: a troca de mensagens– Mas as características de exclusão mútua e região crítica
devem ser preservadas
Como você resolveria o problema de exclusão mútua e região crítica sem abrir mão das suas características fundamentais?
- Discuta propostas em sala
Soluções para Exclusão Mútua
• Veremos três possibilidades:– Opção 1: Algoritmo Centralizado
• Uma implementação usando troca de mensagens, mas mantendo as mesmas características de ambientes monoprocessados
– Opção 2: Algoritmo Distribuído• Uma alternativa que elimina a centralização característica da
opção 1
– Opção 3: Algoritmo em Anel• Outra solução descentralizada, mas com abordagem diferente da
opção 2
Algoritmo Centralizado
• Objetivo– Simular a metodologia de um sistemas
monoprocessado, ou seja, centralizar o controle em um processo coordenador• Existem várias formas de se obter um coordenador,
mas o algoritmo não se preocupa em exigir uma única forma de fazer isso, apenas deve garantir a existência do coordenador e um funcionamento padronizado perante os processos que interagem com ele
Algoritmo Centralizado
• Preparação– É preciso existir um processo coordenador para este
algoritmo. O coordenador pode ser:• Estático:
– existir de forma independente, sem ter sua existência vinculada a uma única situação de exclusão mútua (prestando apenas o serviço de coordenação)
• Eleito:– Eleito pelos processo participantes usando um algoritmo
distribuído (o funcionamento do algoritmo será discutido futuramente)
– O critério usado na eleição não vem ao caso (endereço de rede, identificação do processo, idade do processo,...)
Algoritmo Centralizado
• Funcionamento– Quando um processo deseja entrar em região crítica ele
envia uma mensagem para o coordenador solicitando permissão• Se nenhum outro processo estiver executando sua
região crítica o coordenador envia uma mensagem de resposta ao solicitante autorizando a entrada em região crítica• Se algum processo estiver executando a região crítica–O coordenador não responde –O processo solicitante fica aguardando a resposta– A requisição do processo solicitante é colocada em
uma fila
Algoritmo Centralizado
• Funcionamento (cont.)– Quando o processo deixa a região crítica ele envia uma
mensagem ao coordenador abrindo mão de seu acesso– O coordenador envia uma mensagem concedendo a
permissão ao primeiro processo da fila
Algoritmo Centralizado (cont.)
• Características do algoritmo:– É justo• Requisições são atendidas por ordem de chegada
– Nenhum processo espera indefinidamente• A menos que ocorra algum tipo de falha, o que não faz
parte do funcionamento normal do algoritmo
– É fácil de ser implementado:• Necessita de apenas 3 mensagens (requisição,
permissão e liberação) para se garantir o acesso a determinada região crítica
Algoritmo Centralizado (cont.)
• Problemas do algoritmo:– O coordenador é um ponto único de falha, o que
é uma condição indesejável em um SD– Se coordenador não responde em caso de
permissão negada:• Processos bloqueados não têm como distinguir a
situação “coordenador fora do ar” da situação “permissão de acesso negado”
– Para sistemas muito grandes: • um único coordenador pode degradar a performance
do sistema (gargalo)
Algoritmo Centralizado
• IMPORTANTE:– A descrição do funcionamento dos algoritmos de
exclusão mútua (todos – não apenas o centralizado) consideram uma situação ideal, onde não está prevista a ocorrência de falhas nas entregas das mensagens ou término anormal de processos.
– O tratamento de possíveis falhas varia de acordo com a implementação de cada solução, mas na maioria das vezes se baseia em controle de timeout e retransmissão de mensagens
Algoritmo Distribuído
• Funcionamento:– Quando um processo deseja entrar em uma
região crítica, envia mensagem para todos os processos (inclusive ele próprio) contendo o nome da região crítica, seu próprio número (identificação) e o tempo corrente
– (continua)
Algoritmo Distribuído
• Funcionamento (cont.):– Quando um processo recebe uma mensagem de
requisição:• Se o receptor não estiver executando a região
crítica e não deseja executar:– Envia de volta ao transmissor um mensagem de OK
• Se o receptor estiver executando a região crítica:– Não deve responder (deixa o solicitante esperando) e guarda
a requisição em uma fila– (continua)
Algoritmo Distribuído
• Funcionamento (cont.):– Quando um processo recebe uma mensagem de
requisição (continuação):• Se o receptor também deseja executar a região crítica,
mas ainda não iniciou:– Compara o tempo da mensagem recebida com o
tempo da mensagem de requisição que ele enviouSe o tempo da mensagem recebida for menor
envia um OK ao transmissorSe o tempo de sua própria mensagem for
menor coloca a requisição recebida em uma fila e não responde
– (continua)
Algoritmo Distribuído
• Funcionamento (cont.):– Após enviar uma requisição para executar uma região
crítica aguarda até que todos os demais processos lhe deem permissão
– Ao terminar a execução da região crítica envia mensagem de “OK” a todos os processo de sua fila
Algoritmo Distribuído
• Características do algoritmo:– Exige ordenação global de todos os eventos do
sistema• Para qualquer par de eventos, deve haver um
consenso sobre qual deles aconteceu antes• Baseado no algoritmo de Lamport para
sincronização de relógios lógicos
Algoritmo Distribuído
• Características do algoritmo (cont.):– Nenhum processo espera indefinidamente (não
há starvation)– Não há impasses (deadlocks)– Número de mensagens por entrada na região
crítica:• 2 (n-1) mensagens• Onde n é o número de processos do sistema
Algoritmo Distribuído
• Problemas do algoritmo:– O ponto único de falha foi substituído por n pontos de
falha• A falha de um processo bloqueia todas as tentativas subsequentes
de acesso à região crítica
– O tráfego gerado na rede é muito maior– Em sistemas muito grandes todos os processos se tornam
possíveis gargalos
Algoritmo Distribuído
• Problemas do algoritmo– Ou seja:• Este algoritmo funciona melhor para pequenos grupos
de processos• Podemos aumentar a eficiência do algoritmo com duas
pequenas alterações:
1. Envio de mensagem de negação de acesso à região crítica (problema: mais mensagens)
2. O processo pode entrar na região crítica quando obtiver a permissão da maioria dos processos (muito arriscado)
Algoritmo Token Ring
• Preparação– Construção de um anel lógico (ordenação de
processos)• Atribui-se a cada processo uma posição no anel– Não importa o critério de ordenação (ordem
numérica de endereços de rede, número de processo, ou qualquer outro meio conveniente)–O importante é que cada processo conheça o
próximo na sequência
– Continua
Algoritmo Token Ring
• Funcionamento:– Quando o anel é inicializado o processo 0 (primeiro)
recebe um bastão (token)– O token fica circulando no anel, obedecendo a ordenação
estabelecida– Se um processo estiver de posse do token e deseja entrar
em uma região crítica:• Executa a região crítica (não é permitido que ele entre em
uma segunda região crítica)• Ao terminar a execução da região crítica envia o token ao
seu vizinho
– Continua
Algoritmo Token Ring
• Funcionamento (cont.):
– Se um processo estiver de posse do token e NÃO deseja entrar em uma região crítica:
• Envia o token ao seu vizinho
Algoritmo Token Ring
• Características do algoritmo:
– Não há ocorrência de starvation
– Quando um processo deseja entrar em uma região crítica, o que pode acontecer de pior é ter que esperar que todos os processos antes dele executem alguma região crítica
Algoritmo Token Ring
• Problemas do algoritmo:– Se o token se perder há a necessidade de se criar
um novo– É difícil detectar a perda do token:• O fato do token não aparecer por muito tempo
não significa que ele esteja perdido– Se algum processo falhar, seu vizinho deve
identificar a falha e removê-lo do anel• Para isso, é necessário que todos conheçam a
configuração do anel (quais os integrantes)
Comparação:Quantidade de Mensagens• Algoritmo Centralizado:
– Mais simples e mais eficiente– Número de mensagens por entrada na região crítca:
• Apenas 3 (requisição, autorização e liberação)
• Algoritmo Distribuído:– Número de mensagens por entrada na região crítca :
• 2(n-1) mensagens, sendo (n-1) requisições e (n-1) autorizações
• Algoritmo Token Ring:– Número de mensagens por entrada na região crítca:
• É variável e imprevisível
– Se todos os processos desejam entrar em região crítica: necessita de apenas 1 mensagem
– Se ninguém desejar entrar em região crítica: imprevisível (o token pode circular por horas sem que haja nenhum processo interessado)
Comparação:Tempo de Espera (medido em quantidade de mensagens)
• Algoritmo Centralizado:– Retardo (tempo de espera) para entrar na região crítica:
• Apenas o tempo de 2 mensagens
• Algoritmo Distribuído:– Retardo (tempo de espera) para entrar na região crítica:
• O tempo equivalente a 2(n-1) mensagens
• Algoritmo Token Ring:– Retardo (tempo de espera) para entrar na região crítica:
• O tempo varia:– O token acaba de chegar: 0 mensagens– O token acaba de ser passado: n-1 mensagens
top related