1 sincronização capítulo 5 – tanenbaum capítulo 10,11,12 e 13 - coulouris
TRANSCRIPT
1
Sincronização
Capítulo 5 – Tanenbaum
Capítulo 10,11,12 e 13 - Coulouris
2
Sumário
Introdução Sincronização de Relógio Relógios Lógicos Estado Global Algoritmos Distribuídos Transações Distribuídas
3
Introdução
Em um sistema centralizado a noção de tempo é não-ambígua
Quando um processo quer saber do tempo, efetua uma chamada e o
kernel responde
Se um processo A pergunta o tempo e pouco depois o processo B faz o
mesmo, certamente haverá diferença entre as respostas
Em sistemas distribuídos esta tarefa não é trivial, pois não existe uma
noção de relógio compartilhado globalmente
Cada processo, em diferentes máquinas, possui sua própria idéia de
tempo e dificilmente existe acordo sobre isso
A comunicação entre processos em sistemas distribuídos está
fortemente relacionada a forma como estes processos sincronizam
Sincronização refere-se a “ fazer a coisa certa na hora certa”
4
Network
5
Sincronização de Relógio
Durante o envio e recebimento de mensagens o tempo é levado
em consideração
Existem várias formas de sincronizar relógios em sistemas
distribuídos, mas todos são essencialmente baseados em troca
de informações de tempo
Variações no atraso das comunicações e a forma como estas
variações são tratadas, determinam a precisão dos algoritmos
de sincronização de relógio
Em muitos casos, conhecer o tempo absoluto não é necessário,
o que conta é que os eventos relacionados a diferentes
processos ocorram na ordem correta
6
Relógio Lógicos
Relógio físico
TAI – International Atomic Time
UCT – Universal Coordination Time
Para muitos propósitos , é suficiente que todas as máquinas
concordem sobre o tempo
Contudo, este acordo não precisa ser sobre o tempo absoluto mas
sobre a ordem em que os eventos ocorrem (noção de relógio lógico)
Quando um processo recebe uma mensagem, ele a coloca em uma fila
local, ordenada de acordo com seu selo de tempo (timestamp)
7
Problemas de Inconsistência
Cenário de atualização de débito e crédito em banco de dados replicados
8
Estado Global
Em muitas situações, é útil conhecer o estado global de um sistema distribuído
O estado global de um sistema distribuído consiste de:
estado local de cada processo
mensagens que estão atualmente em trânsito, ou seja, que foram enviadas mas ainda
não foram entregues
O que exatamente é o estado local de um processo depende no que estamos
interessados
No caso de banco de dados distribuídos, o estado pode consistir dos registros do
banco de dados e excluir registros temporários usados para processamento
Uma possível utilização do estado global é a detecção de deadlock (o estado
local não evolui)
9
Coordenação de Processos Distribuídos
Muitos algoritmos distribuídos de sincronização requerem a eleição de um
processo coordenador
Em geral, não interessa qual dos processos tomará para si esta
responsabilidade
Se todos os processos são exatamente iguais, com nenhuma característica que
os diferencie, a escolha se baseia em critérios aleatórios
Em geral, algoritmos de eleição de coordenador tentam localizar o processo de
maior processID e designá-lo como coordenador
A diferença entre algoritmos está na forma de localização e identificação do
coordenador
Existem vários algoritmos de eleição de coordenador, dentre eles:
Algoritmo Bully
Algoritmo Ring
10
Algoritmo Bully Proposto por Garcia-Molina
(1982) Quando um processo qualquer
(P) percebe que o coordenador não está respondendo a requisições, ele inicia uma eleição P envia mensagem ELECTION
para todos os processos de processID maiores
Se ninguém responder, P ganha a eleição
Se alguém responder, a eleição acaba e P efetua sua tarefa
11
Algoritmo Ring
Segue basicamente as mesmas orientações do algoritmo Bully
Diferencia pela circulação da mensagem ELECTION em forma de anel
Eventualmente, dois processo podem iniciar o processo de eleição no mesmo
momento, ocasionando problemas
Não usa passagem de token (diferente de outras abordagens)
É assumido que os processos estão ordenados fisicamente ou logicamente
Cada processo conhece seu sucessor
Se o o sucessor está inoperante a mensagem é enviada ao próximo da cadeia
Ganha eleição quem tiver o maior número e esteja ativo, obviamente
12
Exclusão Mútua em Sistemas Distribuídos
Sistemas envolvendo múltiplos processos são mais facilmente
programados através do uso de regiões críticas
Quando um processo tem que ler ou alterar estrutura de dados
compartilhada, primeiro entra na região crítica para obter
exclusão mútua
Em sistemas mono-processados, regiões críticas são protegidas
por semáforos, monitores e construtores similares
Em sistemas distribuídos tais mecanismos devem sofrer
adaptações
13
Algoritmo centralizado
Forma mais direta para obter exclusão mútua em sistemas distribuídos
Simula o ambiente mono-processado Um processo é eleito coordenador Sempre que um processo quer entrar na região crítica, envia
uma mensagem ao coordenador Se não existe outro processo na região crítica, o coordenador
envia mensagem garantindo a permissão Apesar de simples de implementar, o coordenador é um ponto
de falha Mensagens podem sofrer atrasos e perdas (request, grant,
release
14
Algoritmo Centralizado
P1 solicita entrar na região crítica e coordenador concede permissão
P2 solicita o mesmo, mas fica aguardando com requisição em fila
Quando P1 libera a região crítica, P2 obtém permissão
15
Algoritmo Distribuído Alternativa a um único ponto de falha (coordenador) em algoritmo
centralizado Quando um processo deseja entrar na região crítica, envia mensagem
para todos (inclusive para si mesmo) É assumida a comunicação confiável, através de ack Quando um processo recebe a mensagem (request) de outro processo,
a ação depende do seu estado a respeito da região crítica identificada na mensagem Se o receptor não está na RC e não quer entrar, envia OK para emissor Se o receptor está na RC, não responde a mensagem e enfileira a
requisição Se o receptor deseja entrar na RC, compara timestamp na mensagem com
o tempo contido na mensagem que ele próprio enviou. O menor vence.
Desvantagens: mais lento, mais complexo, mais caro
16
Transações Distribuídas Um conceito fortemente relacionado a exclusão mútua é o conceito de
transação Transações têm em comum a proteção de um recurso compartilhado
contra acesso simultâneo por processos concorrentes Em particular, transações permitem a um processo acessar e modificar
múltiplos itens de dados como uma única ação atômica Se o processo falhar durante a transação, tudo é recuperado a um
ponto antes do início da transação (abordagem tudo ou nada) Programação usando transações requer primitivas especiais que
devem ser fornecidas pelo ambiente de suporte ou pela linguagem A lista de primitivas depende do tipo de objeto em uso na transação:
Mail system: SEND, RECEIVE, FORWARD Sistema contábil: READ, WRITE
17
Transações Distribuídas
BEGIN_TRANSACTION e END_TRANSACTION são delimitadores da
transação
As operações entre estes delimitadores formam o corpo da transação
Todo o corpo da transação é completamente executado ou nenhuma
operação será (all-or-nothing)
Propriedades ACID das transações:
Atomic: para o exterior a transação é indivisível
Consistent: a transação não viola invariantes do sistema
Isolated: transações concorrentes não interferem entre si
Durable: uma vez que a transação conclui, as alterações são permanentes
18
Classificação de Transações
1. Flat Transaction:
Série de operações que satisfazem as propriedades ACID
2. Nested Transaction:
Transação construída a partir de um determinado número de
transações (que podem rodar em paralelo)
Importante para sistemas distribuídos
3. Distributed Transaction:
Difere sutilmente de Nested Transactions
19
Comparação entre Transações
Nested Transaction: divisão lógica em uma hierarquia de sub-transações
Distributed Transaction: transações indivisíveis que operam sobre dados
distribuídos
20
Controle de Transações Obter atomicidade na presença de falhas é um importante aspecto a considerar (a ser
tratado posteriormente) As propriedades consistent e isolation são basicamente manipuladas por controle de
concorrência através de: Data manager, Scheduler e Transaction manager