SISTEMAS DISTRIBUÍDOS

Documentos relacionados
SISTEMAS DISTRIBUÍDOS

Introdução Tempo Lógico Relógios Lógicos de Lamport Relógios Lógicos Vetoriais. Prof a Ana Cristina B. Kochem Vendramin DAINF / UTFPR

Ordenação. Relógios lógicos

SISTEMAS DISTRIBUÍDOS

Relógios Lógicos. Sumário. November 27, Relação Happened-Before. Relógios de Lamport. Relógios Vectoriais

Sistemas Distribuídos Capítulo 6 - Aula 10

SISTEMAS DISTRIBUÍDOS

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Roteiro. Introdução Sincronização de Relógio Físico Sincronização de Relógio Lógico Exclusão Mútua

Sistemas Distribuídos

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos Estados globais. Vinícius Fernandes Soares Mota

Introdução Sincronização Interna Sincronização Externa. Prof a Ana Cristina B. Kochem Vendramin DAINF / UTFPR

Tempos e Estados Globais. ECO036 - Sistemas Paralelos e Distribuídos

Sistemas Distribuídos. 7 Coordenação e Acordo. Coordenação e Acordo. Prof a Ana Cristina B. Kochem Vendramin DAINF / UTFPR

PADI. Tempo em Sistemas Distribuídos PJPF, LAV INESC-ID/IST

Desenvolvimento de um Middleware Distribuído para Ordenação de Mensagens Segundo os Algoritmos FIFO, Causal e Total

Sistemas Distribuídos. Ricardo Ribeiro dos Santos

Modelos Fundamentais. Introdução. Interação. Falhas. Segurança. Prof. Adriano Fiorese

Sistemas Distribuídos

Sincronização em Sistemas Distribuídos

Sistemas Distribuídos. 13 Transações Distribuídas. Transações Distribuídas. Prof a Ana Cristina B. Kochem Vendramin DAINF / UTFPR

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUÍDA

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS

Modelos Fundamentais de um SD. Modelo de Interação ou Sincronismo

Protocolo Request-Reply

Sistemas Distribuídos

Tempo e Relógios. Sincronização de Relógios - Algoritmo de Cristian - Algoritmo de Berkeley - Network Time Protocol.

Sincronização em Sistemas Distribuídos

Análise e desenho de algoritmos paralelos

Sistemas Distribuídos

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS

Exemplo de Aplicação Distribuída Serviço de Nomes Gerente de Segurança. Callbacks. Prof a Ana Cristina B. Kochem Vendramin DAINF / UTFPR

Sincronização de Relógios e Relógios Lógicos. Histórico da comunicação. Tempo Global. Mecanismos de ordenação total

Sistemas de arquivos distribuídos. ECO036 - Sistemas Paralelos e Distribuídos

SO: SISTEMAS OPERACIONAIS Curso: Sistemas de Informação

Comunicação entre Processos

SISTEMAS DISTRIBUÍDOS

Sistemas Distribuídos. Capítulo 7 - Aula 16

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

SISTEMAS DISTRIBUÍDOS

Relógio Lógico Algoritmo de Lamport. Relógio Lógico Algoritmo de Lamport. Relógio Físico Algoritmo Centralizado. Relógio Físico Algoritmo Centralizado

Sistemas Distribuídos

Sistemas Distribuídos Capítulo 6 - Aula 12

Sistemas Distribuídos

2) Em relação aos algoritmos de sincronização de relógios:

Sistemas Distribuídos

Redes de Computadores e Aplicações. Aula 30 Endereçamento IP Endereços Especiais

Replicação. Modelos de Consistência.

CENTRALIZADO DO WHL E1G PROCEDIMENTO PARA GERENCIAMENTO DE USUÁRIOS E SENHAS

Sistema de Software Distribuído

Sistemas Distribuídos

Orientação a Objetos (OO)

Sistemas Distribuídos: Conceitos e Projeto

Redes de Computadores e Aplicações. Aula 37 Roteamento IP Unicast Dinâmico RIP

Cliente-servidor Código móvel Agentes de software Processos pares. Prof a Ana Cristina B. Kochem Vendramin DAINF / UTFPR

Teoria dos Grafos Aula 1 - Introdução

Sistemas Operativos: Implementação de Processos

Sistemas Distribuídos (DCC/UFRJ)

Transcrição:

SISTEMAS DISTRIBUÍDOS Capítulo 7 - Tempo e ordenação de eventos Material de suporte às aulas de Sistemas Distribuídos Copyright DI FCT/ UNL / 1

NOTA PRÉVIA A estrutura da apresentação é semelhante e utiliza algumas das figuras do livro de base do curso: G. Coulouris, J. Dollimore, T. Kindberg, G. Blair Distributed Systems - Concepts and Design, Addison-Wesley, 5th Edition, 2011 Material de suporte às aulas de Sistemas Distribuídos Copyright DI FCT/ UNL / 2

MOTIVAÇÃO Num sistema distribuído é impossível sincronizar os relógios de vários computadores a menos dum dado valor. Porquê? Assim, é impossível usar o valor do relógio em diferentes computadores para saber a ordem dos eventos. E.g.: erro: 0:05 Como ordenar os dois eventos? E de acordo com os relógios? 12:05 12:06 12:07 12:00 12:03 Material de suporte às aulas de Sistemas Distribuídos Copyright DI FCT/ UNL / 3

COMO SE DEFINE ACONTECEU ANTES? Num sistema distribuído, estamos em geral interessados em conhecer as relações de causalidade, i.e., saber quais os eventos que podem ter causado outros eventos. Por exemplo: Rede social Permissões iniciais: amigos podem ver toda a informação. Para adicionar fotografia que não se pretenda que amigo X veja: 1. Remover X da lista de amigos; 2. Adicionar fotografia. Relação de causalidade importante porque quem veja a fotografia deverá ver também X removido da lista de amigos. Material de suporte às aulas de Sistemas Distribuídos Copyright DI FCT/ UNL / 4

COMO SE DEFINE ACONTECEU ANTES? Num sistema distribuído, estamos em geral interessados em conhecer as relações de causalidade, i.e., saber quais os eventos que podem ter causado outros eventos. A relação aconteceu antes capta esta propriedade: o evento e 1 aconteceu antes de e 2 se e 1 pode ter causado e 2. a1 a2 a3 m 1 a4 b1 b2 b3 m 2 c1 c2 c3 c4 c5 c6 c7 Material de suporte às aulas de Sistemas Distribuídos Copyright DI FCT/ UNL / 5

COMO SE DEFINE ACONTECEU ANTES? Num dado processo, a relação aconteceu antes pode-se definir pela ordem local de execução dos eventos local: a1 a2 a3 a4 b1 b2 b3 c1 c2 c3 c4 c5 c6 c7 a1 a2 a3 m 1 a4 b1 b2 b3 m 2 c1 c2 c3 c4 c5 c6 c7 Material de suporte às aulas de Sistemas Distribuídos Copyright DI FCT/ UNL / 6

COMO SE DEFINE ACONTECEU ANTES? (CONT.) Quando um processo envia uma mensagem a outro processo, o envio acontece necessariamente antes da recepção: a3 b2 b3 c7 a1 a2 a3 m 1 a4 b1 b2 b3 m 2 c1 c2 c3 c4 c5 c6 c7 Material de suporte às aulas de Sistemas Distribuídos Copyright DI FCT/ UNL / 7

COMO SE DEFINE ACONTECEU ANTES? (CONT.) A relação aconteceu antes é transitiva: x1 x2 e x2 x3 => x1 x3 Dois eventos e1, e2 dizem-se concorrentes (e1 e2) se e1 e2 e e2 e1. a1 b1, a1 c1, a1 c2,... a1 a2 a3 m 1 a4 b1 b2 b3 m 2 c1 c2 c3 c4 c5 c6 c7 Material de suporte às aulas de Sistemas Distribuídos Copyright DI FCT/ UNL / 8

DEFINIÇÃO: RELAÇÃO ACONTECEU ANTES (LAMPORT 1978) A relação aconteceu antes ou precede ( ) é definida por: e1 e2, se e1 e e2 ocorreram no mesmo processo e e1 ocorreu antes de e2 e1 e2, se e1 e e2 são, respectivamente, os eventos de enviar e receber a mensagem m e1 e2, se e3: e1 e3 e e3 e2 (relação transitiva) Dois eventos e1, e2 dizem-se concorrentes (e1 e2) se e1 e2 e e2 e1. Nota: objetivo é criar relação similar à causalidade física: Se o evento e 1 pode ser a causa do evento e 2, então e 1 aconteceu antes de e 2. Material de suporte às aulas de Sistemas Distribuídos Copyright DI FCT/ UNL / 9

OBJETIVO Desenvolver mecanismo que substitua relógios físicos e permita: 1. Dados dois eventos, e 1 e e 2, e 1 e 2 C(e 1 ) < C(e 2 ) Material de suporte às aulas de Sistemas Distribuídos Copyright DI FCT/ UNL / 10

RELÓGIOS LÓGICOS: PRIMEIRA TENTATIVA Em cada processo, podemos usar um contador, L i, para etiquetar os eventos [ T(e i )=L i ; L i = L i + 1 ] Problema? Como se pode resolver? 1 2 3 m 1 4 1 2 3 m 2 1 2 3 4 5 6 7 Material de suporte às aulas de Sistemas Distribuídos Copyright DI FCT/ UNL / 11

RELÓGIOS LÓGICOS: SEGUNDA TENTATIVA Em cada processo, podemos usar um contador, L i, para etiquetar os eventos [ T(e i )=L i ; L i = L i + 1 ] Ao enviar uma mensagem, envia-se o valor do contador local Ao receber uma mensagem, antes de etiquetar a recepção, atualiza-se o relógio local para o máximo do valor recebido e do relógio local [ L i =max(l i,t(msg)) ] 1 2 3 m 1 4 1 4 5 m 2 1 2 3 4 5 6 7 Material de suporte às aulas de Sistemas Distribuídos Copyright DI FCT/ UNL / 12

DEFINIÇÃO: RELÓGIOS LÓGICOS (LAMPORT 1978) Um relógio lógico (de Lamport) é um contador monotonicamente crescente, usado para atribuir uma estampilha temporal a um evento. Cada processo i, mantém um relógio lógico L i que atualiza da seguinte forma: 1) Seja e um evento executado no processo i, faz-se: L i := L i + X (X > 0) T(e):=L i, com T(e) a estampilha temporal atribuída ao evento e. 2) Se e=send(m), aplica-se a regra anterior e envia-se (m,t), com t=t(send(m)) 3) Se e=receive(m,t), faz-se L i =max(l i,t) e, de seguida, aplica-se a regra base 1) Material de suporte às aulas de Sistemas Distribuídos Copyright DI FCT/ UNL / 13

RELÓGIOS LÓGICOS: PROPRIEDADES 1. Dados dois eventos, e 1 e e 2, e 1 e 2 C(e 1 ) < C(e 2 ) 2. Dados dois eventos, e 1 e e 2, C(e 1 ) < C(e 2 ) e 1 e 2? Exemplo? 1 2 3 m 1 4 1 4 5 m 2 1 2 3 4 5 6 7 Material de suporte às aulas de Sistemas Distribuídos Copyright DI FCT/ UNL / 14

RELÓGIOS LÓGICOS + ORDEM TOTAL Por vezes é importante estabelecer uma ordem total entre os eventos. Apenas os relógios lógicos não o permitem. Porquê? 1 2 3 m 1 4 1 4 5 m 2 1 2 3 4 5 6 7 Material de suporte às aulas de Sistemas Distribuídos Copyright DI FCT/ UNL / 15

RELÓGIOS LÓGICOS + ORDEM TOTAL Podemos obter uma ordem adicionado ao relógio o identificador do processo, T(e i )=(L i,p i ) (l i,p i ) < (l j,p j ) l i < l j (l i = l j p i < p j ) (1,p 1 ) (2,p 1 ) (3,p 1 ) (4,p 1 ) (1,p 2 ) (4,p 2 ) (5,p 2 ) (1,p 3 ) (2,p 3 ) (3,p 3 ) (4,p 3 ) (5,p 3 ) (6,p 3 ) (7,p 3 ) Material de suporte às aulas de Sistemas Distribuídos Copyright DI FCT/ UNL / 16

OBJETIVO Desenvolver mecanismo que substitua relógios físicos e permita: 1. Dados dois eventos, e 1 e e 2, e 1 e 2 C(e 1 ) < C(e 2 ) 2. Dados dois eventos, e 1 e e 2, C(e 1 ) < C(e 2 ) e 1 e 2 Material de suporte às aulas de Sistemas Distribuídos Copyright DI FCT/ UNL / 17

HISTÓRIA CAUSAL Se se quer saber o que aconteceu antes, porque não manter para cada evento o conjunto de eventos que ocorreram antes desse evento? {a 1 } {a 1,a 2 } {a 1,a 2,a 3 } {a 1,a 2,a 3,a 4 } {b 1 } {c 1 } {a 1,a 2,a 3, b 1, b 2 }............... {a 1,a 2,a 3, b 1, b 2, b 3 } {a 1,a 2,a 3, b 1, b 2, b 3, c 1,..., c 7 } Material de suporte às aulas de Sistemas Distribuídos Copyright DI FCT/ UNL / 18

HISTÓRIA CAUSAL A história causal dum evento, H(e), é um conjunto que inclui o próprio evento e os evento que aconteceram antes. Cada evento, e, é etiquetado com um identificador, E(e); a história causal desse evento é a reunião desse evento com os eventos anteriores (uma mensagem propaga a história no momento da emissão). {a 1 } {a 1,a 2 } {a 1,a 2,a 3 } {a 1,a 2,a 3,a 4 } {b 1 } {c 1 } {a 1,a 2,a 3, b 1, b 2 }............... {a 1,a 2,a 3, b 1, b 2, b 3 } {a 1,a 2,a 3, b 1, b 2, b 3, c 1,..., c 7 } Material de suporte às aulas de Sistemas Distribuídos Copyright DI FCT/ UNL / 19

HISTÓRIA CAUSAL Como comparar duas histórias causais? H(e 1 ) < H(e 2 ) ó H(e 1 ) H(e 2 ) H(e 1 ) H(e 2 ) {a 1 } {a 1,a 2 } {a 1,a 2,a 3 } {a 1,a 2,a 3,a 4 } {b 1 } {c 1 } {a 1,a 2,a 3, b 1, b 2 }............... {a 1,a 2,a 3, b 1, b 2, b 3 } {a 1,a 2,a 3, b 1, b 2, b 3, c 1,..., c 7 } Material de suporte às aulas de Sistemas Distribuídos Copyright DI FCT/ UNL / 20

RELÓGIO VETORIAL Um relógio vetorial, V(e), não é mais do que uma forma eficiente de representar uma história causal, mantendo um vetor que em cada posição tem o contador do último evento dum processo (todos os eventos anteriores desse processo são necessariamente conhecidos). [a b c] [1 0 0] [2 0 0] [3 0 0] [4 0 0] {a 1 } {a 1,a 2 } {a 1,a 2,a 3 } {a 1,a 2,a 3,a 4 } {b 1 } {a 1,a 2,a 3, {a 1,a 2,a 3, [0 1 0] [3 2 0] b 1, b 2 } b 1, b 2, b 3 } [3 3 0] {c............... {a 1,a 2,a 3, 1 } [0 0 1] b 1, b 2, b 3, [3 3 7] c 1,..., c 7 } Material de suporte às aulas de Sistemas Distribuídos Copyright DI FCT/ UNL / 21

DEFINIÇÃO: RELÓGIO VETORIAL Um relógio vetorial num sistema com n processos é um vetor de n inteiros, V[1..n]. Cada processo i mantém um relógio vectorial V i que usa para atribuir uma estampilha temporal aos eventos locais e atualiza-a da seguinte forma: Inicialmente, V i [j]=0, i,j Antes de etiquetar um evento e no processo i, faz-se: Vi[i] := Vi[i]+1. C(e)=Vi Se e=send(m), aplica-se a regra anterior e envia-se (m,t), com t=c(send(m)) Se e=receive(m,t) no processo i, faz-se Vi[j]=max(Vi[j],t[j]), j e, de seguida, aplica-se a regra base Dados dois relógios vectoriais V1 e V2, tem-se: V1=V2, sse V1[i]=V2[i], i V1 V2, sse V1[i] V2[i], i V1<V2, sse V1 V2 V1 V2 Material de suporte às aulas de Sistemas Distribuídos Copyright DI FCT/ UNL / 22

PARA SABER MAIS G. Coulouris, J. Dollimore and T. Kindberg, Distributed Systems Concepts and Design, Addison-Wesley, 5th Edition, 2011 Secção 14.2, 14.4 Material de suporte às aulas de Sistemas Distribuídos Copyright DI FCT/ UNL / 23