• Nenhum resultado encontrado

Sistemas Distribuídos Capítulo 6 - Aula 10

N/A
N/A
Protected

Academic year: 2021

Share "Sistemas Distribuídos Capítulo 6 - Aula 10"

Copied!
17
0
0

Texto

(1)

1

Sistemas Distribuídos –

Capítulo 6 - Aula 10

Aula de hoje

Relógios Lógicos

Relógios de Lamport

Relógios Vetoriais

Aula de hoje

Introdução ao problema de

sincronização

Relógios Físicos

Algoritmos de

Sincronização

(2)

Algumas definições...

Um sistema distribuído pode ser visto como uma coleção P

de N processos pi, i = 1,2,… N

- Evento: ocorrência de uma ação associada ao processo

– Cada processo consiste de uma sequência de eventos execução de uma instrução de máquina

– Processos se comunicam através de mensagens

– Ações de um processo: enviar e receber mensagens, mudar o próprio status

Eventos dentro de um processo pi podem ser totalmente ordenados pela relação “acontece antes” (“happened

before”) → , ou seja, a b, se e somente se a ocorre

(3)

Relação Happened Before

1) Se dois eventos ocorrem no mesmo processo, então

eles ocorrem na ordem observada pelo processo p

i

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: a b e b

c, então a c.

(4)

“Happened Before”

Diagrama de tempo:

- Pontos representam eventos,

linhas verticais processos, e setas mensagens.

- p1 r4

- Uma alternativa a definição

“acontece antes” é dizer que a b→ significa que o evento a possa ter causado o evento b

- Dois eventos são denominados

concorrentes, se a não causa b e b não causa a

- p3 e q3 são concorrentes!

(mesmo que no diagrama de tempo temos que q3 tenha ocorrido antes de p3, o processo P não sabe que o

processo Q fez em q3 até P receber uma mensagem em p4)

(5)

“ Happened Before”

Se dois eventos d e f acontecerem em processos

diferentes e não trocarem mensagens entre si, nem mesmo indiretamente através de um terceiro processo, então nem d f e nem f d são verdadeiros.→ →

Estes eventos são considerados concorrentes (d || f ou f || d), o que simplesmente significa que nada pode ser dito a respeito de quando tais eventos ocorreram, ou sobre qual deles ocorreu antes e qual ocorreu depois.

(6)

Relógios de Lamport (1978)

Idéia: Introduzir um relógio que atribua um número a um evento, onde este identificador pode ser pensado como o tempo em que o evento ocorreu

- Ci relógio do processo Pi função que atribui um → número Ci (a) para qualquer evento a em Pi

- Função não está relacionada com tempo físico

- Se o evento a ocorre antes do evento b, então a deve ter acontecido em um tempo menor que o evento b

se a b então C(a) < C(b) : condição para

(7)

Relógios de Lamport (1978)

- Considerando os eventos concorrentes, a condição

se C(a) < C(b) então a b não se aplica,→ pois

significa que eventos concorrentes devem ocorrer ao mesmo tempo.

p2 e p3 são concorrentes com q3,

o que significa que p2 e p3 deveriam ocorrer no mesmo tempo que p2 e p3, contradizendo a consistência do

(8)

Relógios de Lamport (1978)

- Condição para consistência do relógio

C1: Se a e b são eventos em um processo Pi e a

acontece antes de b, entao Ci(a) < Ci(b)

C2: Se a envia uma mensagem a partir do processo Pi e

b recebe esta mensagem no processo Pj então Ci(a) < Cj(b)

(9)

Relógios de Lamport (1978)

- Garantindo a condição para consistência do relógio

Para garantir C1: Cada processo Pi incrementa o relógio Ci entre dois eventos sucessivos

Para garantir C2: Se o evento a envia uma mensagem

m a partir do processo Pi, a mensagem m possui o

timestamp Tm = Ci(a). Ao receber a mensagem m, Pj ajusta seu próprio relógio local para Cj ← max (Cj, Tm) + 1

Sistema de relógios que satisfaça a condição de

consistência do relógio pode ser usado para ordernar o conjunto de eventos de um sistema distribuído.

(10)
(11)

Relógios de Lamport (1978)

-

Para ordenar totalmente os eventos, podemos usar o PID

do processo, para ter desempate (isto ocorre quando os eventos são concorrentes!)

P Q R q1 q2 q3 q4 q5 r1 r2 r3 Condição Inicial: C(P) = 0, C(Q) = 2, C(R) =0 Processadores: pid(P) = 0, pid(Q) = 1, pid(R) = 2

Ordenamento total p1 = 10, p2 = 40, p3 = 50, p4 = 80 q1 = 31, q2 = 41, q3 = 51, q4 = 61, q5 = 71 r1 = 12, r2 = 22, r3 = 72 Ordenamento parcial p1 = 1, p2 = 4, p3 = 5, p4 = 8 q1 = 3, q2 = 4, q3 = 5, q4 = 6, q5 = 7 r1 = 1, r2 = 2, r3 = 7 p1 p2 p3 p4

(12)

Relógios Vetoriais

- Por usar inteiros simples como marcas de tempo, o algoritmo de Lamport perde informações de vários

ordenamentos válidos. Após aplicar o algoritmo de Lamport, temos apenas uma de várias ordenações possíveis! Ou seja, temos um SD totalmente ordenado

- No entanto, em algumas situações, é necessário ter

acesso a todas as ordenações parciais possíveis, que representam “fotografias” consistentes do Sistema Distribuído, ou seja estados globais.

- Em recuperação a falhas, é necessário termos acessos a estes estados globais.

(13)

Relógios Vetoriais

- Por exemplo, podemos estar interessados em saber se o evento n é concorrente com d, c ou y. Aplicando o

algoritmo de Lamport, teremos uma ordenação total que fará com que esta informação desapareça!

(14)

Relógios Vetoriais

(Mattern, Figdge,1988

)

Vetor de relógios VCi no processo pi é um vetor de N

inteiros

1) Inicialmente CVi[j] = 0 cada i, j = 1, 2, …N

2) antes de cada evento, pi executa CVi[i] := CVi[i] +1

3) pi envia t = CVi em cada mensagem transmitida

4) 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)

(15)

Relógios Vetoriais

(Mattern,Figdge,1988

)

a b c d e f m1 m2 (2,0,0) (1,0,0) (2,1,0) (2,2,0) (2,2,2) (0,0,1) p1 p2 p3 Physical time 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

(16)

Relógios Vetoriais

(Mattern,Figdge,1988

)

a b c d e f m1 m2 (2,0,0) (1,0,0) (2,1,0) (2,2,0) (2,2,2) (0,0,1) p1 p2 p3 Physical time Eventos c, e são concorrentes: nem VC(e) <= VC(c) nem VC(c) <=VC(e)

(17)

Algumas considerações...

Algoritmos de Cristian e Berkeley sincroniza 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

Relógios de Lamport são contadores que mudam de acordo

com o relacionamento de “acontece antes” entre os

eventos. Ao final, é possível determinar uma ordenação total válida, entre diversas possíveis

Relógios vetoriais possibilita definir todas as ordenações

Referências

Documentos relacionados

• A consciencialização dos doentes para os sintomas de reações causadas pela disseminação do efeito da toxina para locais distantes do local de administração e o que estes devem

We describe the case of an affected child with a combination of two different likely pathogenic SCN5A variants, presenting sinus node dysfunction, flutter and atrial fibrillation,

APROVADOS – 2ª ETAPA – PROVA DE CONHECIMENTO ESPECÍFICO. TÉCNICO EM SEGURANÇA DO

Este estudo analisa as características dos cursos de Ciências Con- tábeis no Brasil, classificando-os quanto aos melhores e aos piores desempenhos no Enade e no Exame de

biodiversos e os motivos da baixa adoção nas propriedades rurais da região Centro-Sul de Mato Grosso do Sul, 2015. Alternativa para recompor ambientes degradados;

Objective: To evaluate costs and length of hospital stay between groups of patients treated for ACS undergoing angioplasty with or without stent implantation (stent+ /

Nos demais tempos, para a formulação 1, valores maiores e diferentes de SS foram en- contrados para os doces acondicionados na embalagem de polipropileno opaca, quando comparado

Por isso, este trabalho prop˜oe uma abordagem para teste de robustez no Archmeds e para isso, contou com o desenvolvimento de uma ferramenta de inje¸c˜ao de falhas chamada WSInject,