sd06 (si) exclusão mútua

28
Sistemas Distribuídos II Parte 03 Exclusão Mútua

Upload: computacao-depressao

Post on 09-Jul-2015

268 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Sd06 (si)   exclusão mútua

Sistemas Distribuídos II

Parte 03Exclusão Mútua

Page 2: Sd06 (si)   exclusã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”

Page 3: Sd06 (si)   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

Page 4: Sd06 (si)   exclusão mútua

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

Page 5: Sd06 (si)   exclusão mútua

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

Page 6: Sd06 (si)   exclusão mútua

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

Page 7: Sd06 (si)   exclusão mútua

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

Page 8: Sd06 (si)   exclusão mútua

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,...)

Page 9: Sd06 (si)   exclusão mútua

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

Page 10: Sd06 (si)   exclusão mútua

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

Page 11: Sd06 (si)   exclusão mútua

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

Page 12: Sd06 (si)   exclusão mútua

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)

Page 13: Sd06 (si)   exclusão mútua

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

Page 14: Sd06 (si)   exclusão mútua

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)

Page 15: Sd06 (si)   exclusão mútua

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)

Page 16: Sd06 (si)   exclusão mútua

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)

Page 17: Sd06 (si)   exclusão mútua

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

Page 18: Sd06 (si)   exclusão mútua

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

Page 19: Sd06 (si)   exclusão mútua

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

Page 20: Sd06 (si)   exclusão mútua

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

Page 21: Sd06 (si)   exclusão mútua

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)

Page 22: Sd06 (si)   exclusão mútua

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

Page 23: Sd06 (si)   exclusão mútua

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

Page 24: Sd06 (si)   exclusão mútua

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

Page 25: Sd06 (si)   exclusão mútua

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

Page 26: Sd06 (si)   exclusão mútua

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)

Page 27: Sd06 (si)   exclusão mútua

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)

Page 28: Sd06 (si)   exclusão mútua

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