17.05.2013 Views

Chapter 3

Chapter 3

Chapter 3

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Sistemas Distribuídos<br />

Relógios Lógicos<br />

Relógios de Lamport<br />

Relógios Vectoriais<br />

Sérgio Duarte<br />

Sistemas Distribuídos<br />

Case study<br />

Como se implementar um Chat Room?<br />

‣ Requisitos:<br />

‣ N participantes<br />

‣ As mensagens não se perdem...<br />

‣ Ordenação????<br />

‣ Objectivo: minimizar a dúvida/ambiguidade...<br />

Sérgio Duarte<br />

Mestrado em Engenharia Informática<br />

(c) 2011 - DI / FCT / UNL<br />

Mestrado em Engenharia Informática<br />

(c) 2011 - DI / FCT / UNL


Eventos<br />

Sistemas Distribuídos<br />

Sérgio Duarte<br />

Mestrado em Engenharia Informática<br />

Entendem-se como eventos as acções individuais conduzidas por<br />

um processo à medida que executa...<br />

‣ acções de comunicação<br />

‣ transformações de estado<br />

A sequência de eventos ocorridos num processo denota a sua<br />

história...<br />

Eventos<br />

Sistemas Distribuídos<br />

Sérgio Duarte<br />

(c) 2011 - DI / FCT / UNL<br />

Mestrado em Engenharia Informática<br />

Registar a história de um processo consiste, então, em enumerar<br />

(ordenadamente) os eventos que nele ocorrem...<br />

‣ preservando a relação (temporal/causal) entre os eventos...<br />

Num processo isolado pi, com um único processador, existe<br />

sempre uma ordenação total única (→i) entre eventos:<br />

‣ e →i e’, se e só se e ocorre antes de e’, em pi<br />

‣ história(pi) = hi = < ei 0 , ei 1 , ei 2 , ... ><br />

(c) 2011 - DI / FCT / UNL


Sistemas Distribuídos<br />

Tempo: Eventos e Relógios<br />

Sérgio Duarte<br />

Mestrado em Engenharia Informática<br />

Pode-se usar o valor do relógio para registar quando um evento<br />

ocorreu.<br />

‣ Ao valor do relógio que fica associado ao evento chama-se estampilha<br />

temporal<br />

‣ A relação →i pode então ser ser capturada e reproduzível de uma forma<br />

concreta através destas estampilhas<br />

Será possível estender a ideia para um sistema distribuído?<br />

‣ Sim, parcialmente, mas necessitamos de sincronizar os relógios...<br />

Sistemas Distribuídos<br />

(c) 2011 - DI / FCT / UNL<br />

Mestrado em Engenharia Informática<br />

Estampilhas: Relógios Sincronizados<br />

t=3<br />

t=4<br />

t=5<br />

m0<br />

Relógios sincronizados<br />

m2<br />

t=7<br />

m3<br />

Sérgio Duarte<br />

m1<br />

É possível constatar que m0<br />

deve ser anterior a m1 e m3<br />

porque a estampilha temporal<br />

da sua emissão é inferior<br />

(c) 2011 - DI / FCT / UNL


Sistemas Distribuídos<br />

Mestrado em Engenharia Informática<br />

Estampilhas : Relógios Não Sincronizados<br />

t=3<br />

t=4<br />

t=5<br />

Relógios não sincronizados<br />

m0<br />

m2<br />

t=3<br />

m3<br />

Sérgio Duarte<br />

m1<br />

Sistemas Distribuídos<br />

Estampilhas : Limitações<br />

pi<br />

pj<br />

ti = tUTC + d<br />

Sérgio Duarte<br />

d<br />

tUTC<br />

tprop<br />

d<br />

Qual o evento que ocorreu antes?<br />

‣ O envio de m1 ou m3?<br />

O envio de m0 ou m3?<br />

O envio de m0 ou m1?<br />

tj = tUTC - d<br />

(c) 2011 - DI / FCT / UNL<br />

Mestrado em Engenharia Informática<br />

As estampilhas temporais ordenam eventos correctamente desde que o<br />

tempo de propagação das mensagens seja duas vezes superior ao desvio dos<br />

relógios físicos em causa.<br />

Alternativamente, os eventos a ter que ser espaçados no tempo em pelo<br />

menos duas vezes o desvio máximo dos relógios...<br />

(c) 2011 - DI / FCT / UNL<br />

tempo físico


Sistemas Distribuídos<br />

Relógios Físicos : Alternativas...<br />

Sérgio Duarte<br />

Mestrado em Engenharia Informática<br />

Não sendo possível sincronizar os relógios físicos de um sistema<br />

distribuído perfeitamente como fazer para ordenar eventos de<br />

forma coerente em todo o sistema?<br />

‣ dar menos importância à qualidade física do tempo<br />

‣ centrar o problema na questão da causalidade dos eventos<br />

Sistemas Distribuídos<br />

(c) 2011 - DI / FCT / UNL<br />

Mestrado em Engenharia Informática<br />

Relação “Happened Before” (Lamport 1978)<br />

A relação aconteceu antes * (→) é uma ordem parcial que<br />

pretende respeitar a causalidade física entre os eventos de um<br />

sistema distribuído.<br />

Definição:<br />

HB1: se ∃ pi : ea →i eb então ea → eb<br />

HB2: esend(m) → ereceive(m), para qualquer mensagem m<br />

HB3: se ea → eb e eb → ec, então ea → ec (transitividade)<br />

Se ¬ ea → eb ∧ ¬ eb → ea então ea e eb dizem-se concorrentes ( ea || eb )<br />

* Happened Before<br />

Sérgio Duarte<br />

(c) 2011 - DI / FCT / UNL


Sistemas Distribuídos<br />

Mestrado em Engenharia Informática<br />

Relação “Happened Before” : Exemplo<br />

a c<br />

b<br />

a → c → f<br />

d → e<br />

b → g<br />

c → d<br />

e → g<br />

a → c → d → e → g<br />

Sérgio Duarte<br />

Sistemas Distribuídos<br />

d e<br />

a || b<br />

c || b<br />

d || b<br />

...<br />

f<br />

g<br />

(c) 2011 - DI / FCT / UNL<br />

Mestrado em Engenharia Informática<br />

Relação “Happened Before” : Considerações<br />

A relação aconteceu antes apenas regista relações de causalidade<br />

que derivam exclusivamente das mensagens enviadas no próprio<br />

sistema.<br />

A relação aconteceu antes estabelece potenciais relações de<br />

causalidade entre eventos.<br />

‣ Se ea → eb, então ea poderá ter causado eb, ou não.<br />

Os relógios lógicos são a mecanismo inventado por Lamport<br />

para capturar numericamente a relação aconteceu antes<br />

Sérgio Duarte<br />

(c) 2011 - DI / FCT / UNL


Sistemas Distribuídos<br />

Relógios Lógicos (Lamport 1978)<br />

Sérgio Duarte<br />

Mestrado em Engenharia Informática<br />

Um relógio lógico (de Lamport) é um contador monótono crescente<br />

usado para atribuir uma estampilha temporal a um evento.<br />

Cada processo pi, mantém um relógio lógico Li actualizado da seguinte forma:<br />

‣ LC1 :<br />

‣ Se e é um evento executado em pi, faz-se:<br />

‣ LC2 :<br />

Li := Li + 1 [ alternativamente, Li := Li + x , x > 0 ]<br />

C(e) := Li, com C(e) a estampilha temporal atribuída ao evento e<br />

‣ Se e = esend(m), usa-se a regra anterior e envia-se (m,t), com t =C(send(m))<br />

‣ Se e = ereceive(m,t), faz-se Li=max(Li, t) e, de seguida, aplica-se a regra LC1<br />

Sistemas Distribuídos<br />

Relógios Lógicos : Exemplo<br />

1 2 3<br />

a c<br />

1<br />

b<br />

Sérgio Duarte<br />

3 4<br />

d e<br />

f<br />

(c) 2011 - DI / FCT / UNL<br />

Mestrado em Engenharia Informática<br />

5<br />

g<br />

(c) 2011 - DI / FCT / UNL


Sistemas Distribuídos<br />

Mestrado em Engenharia Informática<br />

Relógios Lógicos : Ordenação Total<br />

Por vezes, é interessante ordenar totalmente os eventos que<br />

ocorrem num sistema distribuído<br />

Tal é possível juntando às estampilhas de Lamport um qualquer<br />

identificador extra que torne os seus valores globalmente únicos<br />

‣ O identificador do processo (guid), por exemplo.<br />

‣ Dado um evento e, executado no processo pi ( i = 1, 2, 3, ..n) com<br />

estampilha temporal Le, a estampilha temporal global é:<br />

(Le, i).<br />

‣ A ordem global das estampilhas temporais é definida por:<br />

(La, i) < (Le2, j), sse La < Lb ∨ La = Lb e i < j<br />

Sérgio Duarte<br />

Sistemas Distribuídos<br />

Relógios Lógicos<br />

Sérgio Duarte<br />

(c) 2011 - DI / FCT / UNL<br />

Mestrado em Engenharia Informática<br />

Dados dois eventos, ea e eb, tem-se ea → eb C(ea) < C(eb)<br />

‣ Pode-se demonstrar por indução no comprimento da sequência de<br />

eventos que estabelecem ea → eb<br />

O inverso não é necessariamente verdadeiro!<br />

‣ C(ea) < C(eb) ea → eb<br />

1 2 3<br />

a c<br />

1<br />

b<br />

C(b) < C(f) ∧ ¬(b → f)<br />

3 4<br />

d e<br />

(c) 2011 - DI / FCT / UNL<br />

f<br />

5<br />

g


Sistemas Distribuídos<br />

Relógios Lógicos: Limitações<br />

Sérgio Duarte<br />

Mestrado em Engenharia Informática<br />

Os relógios lógicos não permitem decidir se dois eventos são<br />

concorrentes...<br />

Sistemas Distribuídos<br />

Relógios Lógicos: Limitações<br />

Sérgio Duarte<br />

(c) 2011 - DI / FCT / UNL<br />

Mestrado em Engenharia Informática<br />

Os relógios lógicos não permitem decidir se dois eventos são<br />

concorrentes...<br />

Esta limitação pode ser resolvida usando relógios vectoriais<br />

(c) 2011 - DI / FCT / UNL

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!