Sistemas Distribuídos II
Parte 03
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”
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 enviou
Se o tempo da mensagem recebida for menor
envia um OK ao transmissor
Se 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

Sd06 (si) exclusão mútua

  • 1.
  • 2.
    Introdução • Assim comoem 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”
  • 3.
    Introdução • Em sistemascentralizados 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
  • 4.
    Introdução • Qual oproblema 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
  • 5.
    Introdução(cont.) • É precisoimplementar 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
  • 6.
    Soluções para ExclusãoMú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
  • 7.
    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
  • 8.
    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,...)
  • 9.
    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
  • 10.
    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
  • 11.
    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
  • 12.
    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)
  • 13.
    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
  • 14.
    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)
  • 15.
    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)
  • 16.
    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 enviou Se o tempo da mensagem recebida for menor envia um OK ao transmissor Se o tempo de sua própria mensagem for menor coloca a requisição recebida em uma fila e não responde – (continua)
  • 17.
    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
  • 18.
    Algoritmo Distribuído • Característicasdo 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
  • 19.
    Algoritmo Distribuído • Característicasdo 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
  • 20.
    Algoritmo Distribuído • Problemasdo 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
  • 21.
    Algoritmo Distribuído • Problemasdo 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)
  • 22.
    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
  • 23.
    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
  • 24.
    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
  • 25.
    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
  • 26.
    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)
  • 27.
    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)
  • 28.
    Comparação: Tempo de Espera(medidoem 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