Você está na página 1de 41

Sistemas

Distribudos

Parte 05
Sincronizao

O Problema da
Sincronia de Tempo
No h garantias de que dois ou mais
processos cooperantes interpretem a
contagem de tempo igualmente
Cada processo pode estar em uma
mquina diferente, o que significa que
cada um pode estar usando um relgio
fsico diferente
No h como garantir que os dois relgios
esto exatamente sincronizados (na
verdade, isso quase impossvel)

O Problema da
Sincronia de Tempo
Que problemas isso pode gerar?
No h como garantir a troca de
mensagens sncrona

A execuo de eventos em determinada de


sequncia pode ser comprometida

No h como garantir a excluso mtua

A alocao de recursos compartilhados pode


falhar

O monitoramento de eventos se turna


mais complexo

No h como determinar quando exatamente


um determinado evento ocorreu, o que pode
comprometer a reao desejada

O Problema da
Sincronia de Tempo (cont.)
Como solucionar o problema?
Opo 1: Soluo Centralizada
Funcionamento: Todos os processos
envolvidos em determinada atividade usam
como referncia uma nica fonte de tempo
(um relgio nico, um processo,...)
Vantagem:
A garantia de que todos esto obtendo a
informao de tempo no mesmo lugar, o que
evita informaes inconsistentes

O Problema da
Sincronia de Tempo (cont.)
Como solucionar o problema?
Opo 1: Soluo Centralizada
Problemas:
A fonte nica de tempo tambm um ponto nico
de falha, ou seja, diante de uma pane na fonte de
tempo todos os processos so comprometidos
Dependendo da quantidade de processos
envolvidos, a fonte de tempo pode se
sobrecarregar com a quantidade de mensagens
de/para ela
As mensagens com informaes de tempo podem
sofrer atrasos imprevisveis durante seu trfego na
rede, comprometendo a exatido

O Problema da
Sincronia de Tempo (cont.)
Como solucionar o problema? (cont.)
Opo 2: Soluo Distribuda
Funcionamento:
Vrios processos se encarregam de regular
as informaes de tempo, comparando e
fazendo ajustes entre si

O Problema da
Sincronia de Tempo (cont.)
Como solucionar o problema? (cont.)
Opo 2: Soluo Distribuda
Vantagem:
No h um ponto nico de falha. A queda de um
nico processo no interfere na sincronizao do
tempo entre os demais
Maior disponibilidade da informao de tempo, j
que no h uma fonte nica

Problemas:
Maior complexidade para implementar a soluo
Quantidade varivel de mensagens (nem sempre
previsvel)

O Problema da
Sincronia de Tempo (cont.)
Como solucionar o problema? (cont.)
A opo distribuda (opo 2) a mais
adequada para ambientes distribudos porque:
As informaes relevantes ao processo esto
dispersas por vrias mquinas
Cada processo deve tomar decises baseado
somente em informaes locais
A existncia de um ponto nico de falha deve ser
evitada sempre que for pssvel
No existe um relgio nico para todas as mquinas

Relgios Lgicos
Em algumas tarefas distribudas, o
tempo real no importante.
O foco do controle de tempo voltado
para a correta sequncia de eventos que
deve acontecer
A informao de tempo neste caso
usada como um contador de eventos,
que determina o que deve acontecer
a cada momento

Relgios Lgicos
Em 1978, Leslie Lamport publicou uma proposta de
ordenao de eventos baseada em tempo, onde:
No h tempo absoluto toda a informao de
tempo relativa entre os processos que trocam
mensagens
Se dois processos no interagem entre si, no h
necessidade de sincronizao de tempo entre eles
Na maioria das vezes necessrio que os
processos concordem com a informao de tempo
entre eles, mas este tempo no precisa ser real

Algoritmo de Lamport
Funcionamento do algoritmo:
Cada processo cooperante tem seu prprio relgio lgico (independente
do tempo real), que serve como contador de eventos
Cada evento ocorrido incrementa uma unidade de tempo no contador
Cada mensagem trocada entre dois processos cooperantes contm uma
informao de tempo (relgio lgico) fornecida pelo emissor da
mensagem
O processo receptor compara a informao de tempo contida na
mensagem com seu prprio relgio lgico:
Se seu relgio lgico possuir um valor maior que o tempo contido na
mensagem, o relgio permanece com o mesmo valor
Se seu relgio lgico possuir um valor menor ou igual que o tempo
contido na mensagem, o relgio ajustado e passa a ter o valor da
mensagem mais um
Isso garante que dois eventos nunca aconteam ao mesmo tempo

Algoritmo de Lamport
(exemplo)

Imagine trs processos (P1, P2 e P3) localizados em


mquinas diferentes que iniciam algum tipo de interao
sincronizada
Os 3 processos iniciam seus relgios lgicos, mas cada
clock fsico oscila em frequencias diferentes
Suponha:
O clock lgico de P1 varia de 6 em 6 unidades
O clock lgico de P2 varia de 8 em 8 unidades
O clock lgico de P3 varia de 10 em 10 unidades
No primeiro instante, todos os relgios esto zerados
No segundo instante, os relgios lgicos j no esto iguais
(P1=6, P2=8 e P3=10)
Esta variao aumenta conforma os instantes se passam
(exemplo: no instante 5 P1=24, P2=32 e P3=40)

Algoritmo de Lamport
(exemplo)
Cada mensagem trocada entre os processos precisa
conter o valor que o relgio fsico de seu emissor para
que o receptor faa os ajustes necessrios

No
No
No
No

instante
instante
instante
instante

2
4
7
9

a
a
a
a

mensagem
mensagem
mensagem
mensagem

A enviada de P1 para P2
B enviada de P2 para P3
C enviada de P3 para P2
D enviada de P2 para P1

Considere que cada mensagem enviada chega a seu


destino no instante seguinte ao que foi enviada
As mensagens A e B chegam a seus destinos sem causar impacto,
pois o relgio lgico de cada receptor contm um valor maior que
aquele que consta em cada mensagem
As mensagens C e D obrigam seus receptores a efetuar um ajuste
nos relgios lgicos para garantir a correta sincronia dos eventos

Algoritmo de Lamport
(exemplo)
Instante

Relgio P1

Relgio P2

Relgio P3

10

3 No necessita 12
de ajuste
4 no relgio 18

16

20

24

32

30

40

36

48

42

61

48

10
11

6
7

Necessita
de ajuste
no relgio

Mensagem
A (6)

24

em
Mensag

D (69)

Mensa
g

30

em B (
24)

40
50

0)
em C (6
g
a
s
n
e
M

60
70

69

80

70

77

90

76

85

100

Problema no
Algoritmo de Lamport
Considere:
R(e1) o valor do relgio lgico para o evento e1
R(e2) o valor do relgio lgico para o evento e2
A soluo porposta por Lamport no garante que se R(e1) <
R(e2) ento o evento e1 acontece antes que o evento e2

Exemplo:
Processo P1

Processo P2

Processo P3

Msg A (1)

2
3
4

Msg C (3
)

Msg B (4)

12

Se compararmos os valores de relgio em cada mensgaem, temos:


Msg-A (1) < Msg-B(4) ento Msg-A ocorreu antes de Msg-B (correto)
Msg-C (3) < Msg-B(4) ento Msg-C ocorreu antes de Msg-B (incorreto)

Soluo Vetorial

(Mattern e Fidge)

Soluo proposta por Mattern e Fidge:


O relgio lgico passa a ser um vetor contador de
eventos
Se existem N processos cooperando, o vetor ter N
posies inteiras, onde cada posio corresponde a um
contador de eventos
Cada processo ter um vetor para si
Cada mensagem enviada contm a verso atualizada do
vetor do emissor

Esta soluo muito usada em:

Verificao de consistncia de estados em SD


Controle de checkpoints
Recuperao de erros
Rollbacks

Soluo Vetorial

(Mattern e Fidge)

Funcionamento
Antes de cada evento em um processo, este incrementa mais 1 no valor de
sua posio no vetor
Sempre que uma mensagem enviada, o processo inclui uma cpia de seu
vetor na mensagem
No recebimento de uma mensagem, o processo atualiza o seu vetor a
partir do vetor da mensagem.
Ao receber uma mensagem, o processo faz uma operao de
integrao (merge) entre o vetor recebido e seu prprio vetor local,
atualizando os dados deste ltimo
Sua posio no vetor assume o valor mximo existente no vetor da
mensagem
O valor do contador correspondente ao emissor incrementado em
uma unidade caso seu valor local j no seja maior que o recebido;
Uma vez atualizado o vetor local, possvel determinar a ordem dos
eventos comparando-se o valor de cada posio dos vetores em cada
evento

Soluo Vetorial (Exemplo)

Soluo Vetorial
Desvantagem da soluo:
Ocupa-se mais espao de armazenamento e
carga til da mensagem

Uma soluo derivada dos relgios


vetoriais:
Relgios de matriz
Alm de seu prprio vetor, cada processo mantm
estimativas do tempo vetorial dos outros processos

Relgios Fsicos
O algoritmo de Lamport e as demais solues de relgios
lgicos se preocupam apenas com a ordenao de
eventos
Os instantes de tempo associados a cada evento no so
necessariamente prximos do tempo em que os eventos realmente
aconteceram

Em alguns sistemas o conhecimento do instante de tempo


real muito importante (exemplo: sistemas de tempo real)
Para este tipo de sistema so necessrios clocks fsicos externos
Em certos casos, desejvel a existncia de mais de um clock
externo, para garantir eficincia e redundncia
Problemas:
Como sincroniz-los com o tempo real?
Como sincronizar esses clocks entre si?

Evoluo da Marcao de
Tempo
Primeiras solues para marcao
de tempo
Relgios de sol, estaes do ano, ...
Dia solar: intervalo decorrido entre
duas passagens consecutivas do Sol
em determinado ponto do cu

Sculo XVII: primeiros relgios


mecnicos
Quanto maior a qualidade do processo
de fabricao, mais preciso o processo
de marcao do tempo
Ainda era muito difcil garantir uma
sincronia de tempo eficiente

Evoluo da Marcao de
Tempo
Dcada de 1940: Ajustes para
compensar imprecises
Foram feitos ajustes artificiais na
marcao oficial de tempo para
compensar imprecises resultantes de
fenmenos naturais que influenciam
diretamente nas fontes de tempo
utilizadas
Descobriu-se que a rotao da terra
no constante, devido s mars e
a atmosfera (desaceleram a rotao
da Terra)
A durao do ano (em dias) diminuiu
(os dias ficaram mais longos)
O turbulncias no ncleo do planeta
influenciam no comprimento do dia

Evoluo da Marcao de
Tempo
Em 1948: inveno do
relgio atmico
Contagem de segundos a
partir das transies de
eltrons de um tomo de
Csio 133
uma medida mais
precisa e constante,
que no sofre
influncias externas

Evoluo da Marcao de
Tempo
Atualmente:
TAI (Tempo Atmico Internacional)
Mdia de tempo dos relgios atmicos
mais preciso, porm ainda necessrio ajust-lo a
contagem de tempo solar adotada no dia-a-dia

Ajuste do TAI (Tempo Atmico Internacional)


UTC (Tempo Universal Coordenado)

o TAI ajustado ao tempo solar


O ajuste feito inserindo-se segundos bissextos
Vem gradativamente substituindo o uso do GMT
Acesso: NIST (rdio WWV) e GEOS (Satlite)

Evoluo da Marcao de
Tempo
Relgio Atmico Brasileiro (USP)

Evoluo da Marcao de
Tempo
NIST
National Institute of Standards and
Technology

Evoluo da Marcao de
Tempo
GEOS

Algoritmo de Cristian
Funcionamento:
Usa um servidor de tempo, que um computador equipado
com receptor UTC
As demais mquinas enviam mensagens para o servidor de
tempo perguntando pelo tempo corrente
O servidor de tempo responde o mais rpido possvel, com
uma mensagem contendo o tempo UTC corrente
Cada mquina, ao obter a resposta, ajusta seu clock
O servidor de tempo PASSIVO. O ajuste depende da
inciativa das demais mquinas

Problemas:
O tempo nunca pode andar para trs (os ajustes so sempre
progressivos)
A consulta ao servidor de tempo gasta um tempo no-nulo (o
retardo pode vir a ser grande)

Algoritmo de Cristian (cont.)


Mais um problema:
uma soluo altamente centralizada

Para minimizar a centralizao, pode-se


adotar os seguintes caminhos:
Ter vrios servidores com receptor UTC
As demais mquinas passam a solicitar a hora por meio de
mensagens multicast

Esta soluo um algortmo probabilstico, ou


seja:
S se obtm uma sincronizao aceitvel se o tempo de ida e
volta das mensagens forem curtos o suficiente se
comparados a preciso desejada

Algoritmo de Cristian (cont.)


Soluo para os ajustes sempre
progressivos
A mudana no clock deve ser feita de forma
gradativa e sempre avanando o relgio
Se o ajuste de 10 ms, basta adicionar 9 ms
para atrazar ou 11 ms para adiantar

Algoritmo de Cristian (cont.)


Soluo para o retardo na mensagem
Tentar medir (estimativa) o tempo de
transmisso
T0 .................. tempo de envio da requisio
T1 .................. recebimento da resposta
(T1 - T0)/2 ....... tempo aproximado de propagao da
mensagem
I .................... tempo de tratamento da interrupo
(T1 - T0 - I)/2 ... estimativa ainda mais precisa

Outra soluo:
Realizar vrias medidas e calcular a mdias de tempo
(descartando valores fora de um certo limite)

Algoritmo de Berkeley
Funcionamento
O servidor de tempo uma entidade ATIVA, que consulta periodicamente cada
uma das mquinas do sistema para saber o tempo corrente em cada uma delas
Baseado nas respostas obtidas:

Calcula o tempo mdio e o ajuste que cada mquina ter


que fazer
Informa s demais mquinas para adiantar ou atrasar seus
clocks, tornando-se iguais ao tempo mdio calculado
No informa a hora corrente e sim o ajuste a ser feito
O clculo que o servidor faz tambm leva em conta a
existncia de respostas absurdas (muito fora da mdia
das demais mquinas).
Estas repostas absurdas so descartadas do cculo de
ajuste para evitar um desvio indesejado dos resultados

Algoritmo de Berkeley
A preciso deste algoritmo tambm
depende do tempo mximo gasto
pelas mensagens de ida e volta
Indicado para:
Quando nenhuma das mquinas tem um
receptor UTC
A necessidade de preciso no ambiente
pequena

Algoritmo de Berkeley
(cont.)
Problemas:
O ajuste do servidor de tempo deve ser
feito periodicamente por um operador
(de forma manual)
uma soluo altamente centralizada
Para contornar esta fragilidade, ao se
perceber que o servidor de tempo falhou,
elege-se outro servidor para o seu lugar
O problema agora passa a ser como
determinar que o servidor de tempo falhou

Network Time Protocol


Os algortmos de Cristian e Berkeley ,
embora eficientes, se dedicam mais a
redes pequenas e intranets
Em ambientes com uma grande quantidade
de mquinas, como a Internet, quase
impossvel garantir o bom funcionamento
destas duas solues
Pela natureza assncrona das operaes
desempenhadas na web
Pela ausncia de garantia de entrega de
mensagens em um tempo razovel

Network Time Protocol


(cont.)
O NTP foi projetado como um servio e
protocolo para distribuir informaes de tempo
pela Internet
Objetivos:
Ser um servio para clientes internet se
sincronizarem pelo UTC, superando atrasos e perdas
de mensagens
Isso feito por meio de tcnicas estatsticas de
filtragem da informao
Fornecer um servio confivel que sobreviva a
longas perdas de conectividade
Usando servidores e rotas redundantes para
circulao das mensagens

Network Time Protocol


(cont.)
Caractersticas:
Permite sincronizao razoavelmente
frequente dos clientes
Para compensar falhas originadas na
quantidade de clientes e servidores
interagindo
Fornece proteo ao servio de tempo
contra interferncias acidentais ou
intencionais
Autenticao, validao de mensagens

Network Time Protocol


(cont.)
Funcionamento:
O NTP formado por uma rede de servidores
na internet divididos pela seguinte hierarquia:
Servidores Primrios
So mquinas conectadas diretamente a uma fonte de
tempo UTC

Servidores Secundrios
Servidores que se sincronizam com os servidores primrios

Demais servidores
Organizados em uma estrutura de rvore
Cada galho se sincroniza com sua raiz
A rvore composta de sub-redes de sincronizao

Network Time Protocol


(cont.)
Funcionamento:
Cada nvel da rvore chamado de stratum

Stratum 1: servidores primrios (raiz)


Stratum 2: servidores secundrios
Stratum 3: outros servidores
Stratum 4: mais servidores
e assim por diante...

Quanto mais alto o nmero do stratum, a tendncia


que a preciso seja menor neste nvel
possvel realizar alteraes na hierarquia para superar
indisponibilidade de servio. Por exemplo:
Promover mquinas mapa um stratum mais alto
Deslocar galhos inteiros para se sincronizarem com outros servidores

Network Time Protocol


(cont.)
Como a sincronia feita?
As mensagens so transmitidas via
protocolo UDP
A mensagem pode ser enviada de 3 modos:
Modo 1: Multicast
Ideal para redes locais de alta velocidade
Servidores de tempo enviam mensagem e as
demais mquinas ajustam seus relgios
Possui uma margem de erro grande, que
resulta em baixa preciso

Network Time Protocol


(cont.)
Modo 2: RPC
Usa a soluo de Cristian para sincronizar
mais preciso que a opo de multicast

Modo 3: Simtrico
Adotado em mquinas cujo stratum baixo
a opo mais precisa
Os servidores trocam mesagens de tempo
entre si e as informaes so armazenadas
para uso posterior visando melhorar cada
vez mais a sincronia

Você também pode gostar