sistemas distribuídos jorge surian [email protected] sistemas distribuídos: sincronização

25
Sistemas Distribuídos Jorge Surian [email protected] Sistemas Distribuídos: Sincronização

Upload: maria-luiza-martins-macedo

Post on 07-Apr-2016

259 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Sincronização

Sistemas DistribuídosJorge [email protected]

Sistemas Distribuídos: Sincronização

Page 2: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Sincronização

22

Relógios Físicos Hora atômica Internacional (International Atomic

Time) é baseada em relógios muito precisos (taxa de variação de 10 -13).

Hora Coordenada Internacional (Universal Coordinated Time – UCT) é o padrão para medição do tempo.

É baseada na hora atômica, mas ocasionalmente é ajustada pela hora astronômia.

'Broadcast' da hora é feito através de estações de rádio (WWV) e satélites (GPS).

Computadores que recebem o sinal sincronizam os relógios.

2

Page 3: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Sincronização

33

Relógios Físicos Seja C o valor do relógio 'ideal' (hora UTC). Seja Cp o valor do relógio no computador p. Se t é o tempo no relógio em sincronia com a

hora UTC, então temos o tempo em p dado por Cp(t).

Idealmente para todo p e para todo t, temos:– Cp(t) = t → C'p(t) = dC/dt = 1.

Clock skew (defasagem do relógio): denota a magnitude de diferença entre as frequências de dois relógios.

Page 4: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Sincronização

44

Relógios Físicos Seja x a taxa máxima de deriva (que especifica se

um relógio está adiantado ou atrasado).

Como fazer a sincronização periódica entre relógios?

Page 5: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Sincronização

55

Sincronização de Relógios Se existe um 'servidor de tempo' (receptor WWC

ou relógio de precisão)– Algoritmo proposto por Cristian (1989)

Se não existe uma fonte que disponibilize a hora coordenada universal (UCT)– Algoritmo de Berkeley

Tempo exato não importa!!– Relógios Lógicos → Algoritmo de Lamport e– Relógios vetoriais

Page 6: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Sincronização

66

Relógio de Cristian (1989)– Possibilidade de consultar servidores de tempo

equipados com um receptor WWV ou um relógio de alta precisão.

– Problema: Atrasos de mensagens farão com que a hora fornecida seja desatualizada!

– Variações na estimativa do atraso entre as máquinas.

Algoritmos...

Page 7: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Sincronização

77

Relógio de Cristian (1989)

– Computador A consulta a hora no computador B.

– Computador B inclui na resposta o valor do seu relógio → T3.

– Computador A atualiza o seu relógio com o valor do relógio em B adicionado ao retardo da mensagem entre B e A (One way delay).

– Estimativa para o one-way delay = RTT/2, caso atrasos em ambas direções sejam aproximados

Algoritmos...

Page 8: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Sincronização

88

Algoritmos...Relógio de Berkeley

– Algoritmo usado para a sincronização interna de um grupo de computadores.

– 'Servidor de tempo' é ativo (master) e coleta os valores de relógios de outros (slaves).

– Master usa estimativas do RTT para estimar o valor dos relógios dos computadores dentro dos grupos.

– Hora atual é resultante de uma média .– Master envia ao slaves o total de tempo em

que os relógios devem adiantar/atrasar.– Caso o master falhe, um novo computador

master é eleito.

Page 9: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Sincronização

99

AlgoritmosRelógio de Berkeley

Page 10: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Sincronização

1010

Relógios Lógicos Sincronização baseada em “tempo relativo”. Tempo relativo não possui nenhuma relação com

o tempo real. O mais importante é que os processos do Sistema

Distribuído concordem com a ordem em que os eventos ocorrem:– Algoritmo de Lamport– Relógios Vetoriais

Page 11: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Sincronização

1111

Relógios LógicosRelógios de Lamport, 1978.

– Em vez da sincronização de relógios, ordenação dos eventos:1)Se dois eventos ocorrem no mesmo

processo, então eles ocorrem na ordem observada pelo processo pi.

2)Quando uma mensagem m é trocada entre dois processos, e a é o evento de envio e b o de recebimento, então a → b.

3)Relação “acontece antes” é transitiva.

Page 12: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Sincronização

1212

Relógios LógicosRelógios de Lamport, 1978.

a b ( p1) c d (p2) b c dado m1 d f dado m2

Mas, nem todos os eventos podem ser relacionados através da relação “acontece antes”

Consideremos a e e (processos diferentes, sem a existência de cadeias de mensagens entre os processos)Não estão relacionados através da relação São definidos como processos concorrentes: a || e

Page 13: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Sincronização

1313

Relógios LógicosRelógios de Lamport, 1978.a b ( p1) c d (p2) b c dado m1 d f

dado m2

Page 14: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Sincronização

1414

Relógios LógicosRelógio de Lamport, 1978. Um relógio lógico é um contador

monotonicamente crescente. Não precisa estar relacionado com o relógio físico.

Como Funciona?– Cada processo pi tem o seu relógio lógico Ci

que pode ser usado para aplicar timestamps lógicos aos eventos.1)Ci é incrementado de 1 antes de cada

evento no processo pi.2)Quando um processo pi envia mensagem

m, o tempo t = Ci é anexado a mensagem.3)Quando pi recebe (m,t), o relógio é

atualizado para Ci = max(Cj, t) antes de aplicar 1.

Page 15: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Sincronização

1515

Relógios LógicosRelógio de Lamport, 1978 Em cada um dos processos p1, p2, p3 o relógio

lógico é inicializado com zero. Os valores dos relógios lógicos são aqueles que

ocorrem imediatamente após o evento. Podemos imaginar a=1, b=2 e assim sucessivamente.

Juntamente com m1, o valor 2 é enviado e o relógio em p2, após o evento c, recebe o max(0,2)+1 = 3.

a b implica em que C(a)<C (b ) mas C(a)<C (b ) não implica em a b!!!

Page 16: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Sincronização

1616

Relógios LógicosRelógio de Lamport – Exemplo 1

Page 17: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Sincronização

1717

Relógios LógicosRelógio de Lamport – Exemplo 2

Page 18: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Sincronização

1818

Relógios LógicosRelógio de Lamport – Problema

– C(a) < C(b): Não se pode inferir que a → b !!!!

Page 19: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Sincronização

1919

Relógios LógicosRelógios Vetoriais

– Criados por Mattern, Figdge,1988.– Implementados para evitar a limitação dos

relógios de Lamport: C(a) < C(b) não implica a “acontece antes” de b.

– Vetores com marcas de tempo são usados para os eventos locais em cada processo.

– Seja VCi [I] o número de eventos ocorridos em pi até o instante de tempo em questão.

– Seja VCi [j], o número de eventos que ocorreram em pj, portanto pi sabe quantos eventos ocorreram em pj.

Page 20: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Sincronização

2020

Relógios LógicosRelógios Vetoriais

– Como funcionam?» Vetor de relógios CVi no processo pi é um

vetor de N inteiros1)Inicialmente CVi[j] = 0 for i, j = 1, 2, …N2)Antes de cada evento, pi executa CVi[i] =

CVi[i] +13)pi envia t = CVi em cada mensagem

transmitida4)Quando pi recebe (m,t), o processo ajusta

CVi[j] = max(CVi[j] , t[j]) j = 1, 2, …N (antes do próximo evento adiciona 1 ao seu próprio contador de eventos)

Page 21: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Sincronização

2121

Relógios LógicosRelógios Vetoriais

– Exemplificando...– p1: a(1,0,0); b (2,0,0) envia (2,0,0) juntamente com a

mensagem m1.– Em p2, no recebimento de m1, o vetor de relógios é

modificado para max.– ((0,0,0), (2,0,0)) = (2, 0, 0) adicionando 1 ao seu próprio

relógio = (2,1,0)– Neste caso, o evento c 'sabe' que ocorreram 2 eventos

no processo p1 antes da ocorrência do evento c em p2– =,<=, max: devem ser realizadas entre pares de

elementos

Page 22: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Sincronização

2222

Relógios LógicosRelógios Vetoriais

– Eventos c e e são concorrentes, mas nem VC(e) <= VC(c) nem VC(c) <=VC(e) podem ser afirmados!!!!

Page 23: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Sincronização

2323

Relógios...

Algoritmos de Cristian e Berkeley sincronizam relógios físicos, apesar da defasagem entre relógios e retardos das mensagens

Para ordenar eventos em computadores diferentes, sincronização dos relógios nem sempre pode ser feito.

A relação “acontece antes” resulta em uma ordenação parcial dos eventos.

Page 24: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Sincronização

2424

Relógios

Relógios de Lamport são contadores que mudam de acordo com o relacionamento de “acontece antes” entre os eventos.

Relógios vetoriais são uma melhora nos relógios de Lamport, onde dois eventos são ordenados pela relação “acontece antes” ou são concorrentes através da comparação dos vetores com marcas de tempo.

Page 25: Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Sincronização

2525

Copyright © 2010 Prof. Jorge Surian

Todos direitos reservados. Reprodução ou divulgação total ou parcial deste documento é expressamente proíbido sem o consentimento formal, por escrito, do Professor Surian.

Fontes:Tanenbaum, Andrew S. e Steen, Marteen Van. Sistemas Distribuídos, São Paulo: Prentice Hall, 2008.

Imagem do Relógio, trecho da obra “Persistência do Tempo”, de Salvador Dali.