Sistemas Distribuídos Sincronização e Coordenação Instituto de Informática – UFG Verão 2005 Baseado em: Tanenbaum, cap. 5 Sincronização de Relógios Quando cada máquina tem seu próprio relógio, um evento que ocorreu depois de outro pode, não obstante, ser associado a um tempo anterior. Relógios Físicos (1) Computação do dia solar médio. Relógios Físicos (2) Segundos TAI são de duração constante, diferentemente de segundos solares. Segundos “bissextos” são introduzidos quando necessário para manter em fase com o sol. Algoritmos de Sincronização de Relógios A relação entre tempo de relógio e o tempo UTC quando os relógios “ticam” com taxas diferentes. Algoritmo de Cristian's Obtendo o tempo atual a partir de um servidor de tempo. O Algoritmo de Berkeley a) b) c) O daemon de tempo pergunta a todas as máquinas os valores de seus relógios locais As máquinas respondem O daemon de tempo instrui todas as máquinas a atualizarem seus relógios Marcas de Tempo de Lamport a) b) Três processos, cada um com seu próprio relógio. Os relógios “correm” a taxas diferentes. O algoritmo de Lamport corrige os relógios (relógios lógicos). Exemplo: Multicast Totalmente Ordenado Atualização de um banco de dados replicado deixando-o em um estado inconsistente. Estado Global (1) a) Um corte consistente b) Um corte inconsistente Estado Global (2) a) Organização de um processo e canais para um “instantâneo” distribuído Estado Global (3) b) c) d) Processo Q recebe um marcador pela primeira vez e registra seu estado local Q registra todas as mensagens que chegam Q recebe um marcador para seu canal entrante e pára de registrar o estado do canal entrante Eleição de Líder: O Algoritmo de “Bullying” (1) O algoritmo de eleição de bullying • Processo 4 inicia a eleição (após detectar a falha do antigo líder) • Processos 5 e 6 respondem, dizendo ao processo 4 para parar • Agora os processos 5 e 6 cada um iniciam suas eleições Eleição de Líder: O Algoritmo de “Bullying” (2) d) e) Processo 6 diz ao processo 5 para parar Processo 6 vence a eleição e avisa a todos os demais O Algoritmo do Anel Eleição utilizando um anel lógico de processos. Exclusão Mútua: Um Algoritmo Centralizado a) b) c) Processo 1 pede permissão ao coordenador para entrar em uma região crítica. A permissão é concedida. Processo 2 então pede permissão para entrar na mesma região crítica. O coordenador não responde. Quando o processo 1 sai da região crítica, ele informa ao coordenador, que então responde ao processo 2. Exclusão Mútua: Um Algoritmo Distribuído a) b) c) Dois processos desejam entrar na mesma região crítica (RC) ao mesmo tempo. Processo 0 tem a marca de tempo mais baixa; portanto, ele vence. Quando o processo 0 conclui o uso da RC, ele envia um OK para o processo pendente, de forma que 2 possa agora entrar na RC. Exclusão Mútua: Um Algoritmo de Anel de Token a) Um grupo não-ordenado de processos em uma rede. b) Um anel lógico construído em software. Comparação Messages per entry/exit Delay before entry (in message times) Problems Centralized 3 2 Coordinator crash Distributed 2(n–1) 2(n–1) Crash of any process Token ring 1 to 0 to n – 1 Lost token, process crash Algorithm Uma comparação de três algoritmos de exclusão mútua. O Modelo de Transações (1) Atualização de um registro mestre com tolerância a falhas. O Modelo de Transações (2) Primitive Description BEGIN_TRANSACTION Make the start of a transaction END_TRANSACTION Terminate the transaction and try to commit ABORT_TRANSACTION Kill the transaction and restore the old values READ Read data from a file, a table, or otherwise WRITE Write data to a file, a table, or otherwise Exemplos de primitivas para transações. O Modelo de Transações (3) BEGIN_TRANSACTION reserve WP -> JFK; reserve JFK -> Nairobi; reserve Nairobi -> Malindi; END_TRANSACTION (a) a) b) BEGIN_TRANSACTION reserve WP -> JFK; reserve JFK -> Nairobi; reserve Nairobi -> Malindi full => ABORT_TRANSACTION (b) Transação para reservar três vôos concluída com sucesso, i.e., commit Transação é abortada quando a reserva do terceiro vôo falha Transações Distribuídas a) b) Uma transação aninhada Uma transação distribuída Espaço de Trabalho Privativo a) b) c) O índice de arquivos e blocos de disco para um arquivo de três blocos Situação após uma transação ter modificado o bloco 0 e concatenado o bloco 3 Após o commit da transação Writeahead Log x = 0; y = 0; BEGIN_TRANSACTION; x = x + 1; y=y+2 x = y * y; END_TRANSACTION; (a) Log Log Log [x = 0 / 1] [x = 0 / 1] [y = 0/2] [x = 0 / 1] [y = 0/2] [x = 1/4] (b) (c) a) Uma transação b) – d) O log antes de cada sentença ser executada (d) Controle de Concorrência (1) Organização geral de gerentes para tratar transações. Controle de Concorrência (2) Organização geral dos gerentes para tratar transações distribuídas. Serializabilidade BEGIN_TRANSACTION x = 0; x = x + 1; END_TRANSACTION (a) BEGIN_TRANSACTION x = 0; x = x + 2; END_TRANSACTION BEGIN_TRANSACTION x = 0; x = x + 3; END_TRANSACTION (b) (c) Schedule 1 x = 0; x = x + 1; x = 0; x = x + 2; x = 0; x = x + 3 Legal Schedule 2 x = 0; x = 0; x = x + 1; x = x + 2; x = 0; x = x + 3; Legal Schedule 3 x = 0; x = 0; x = x + 1; x = 0; x = x + 2; x = x + 3; Illegal (d) a) – c) Três transações: T1, T2, e T3 d) Possíveis escalonamentos Two-Phase Locking (1) Aquisição e liberação de locks no algoritmo de two-phase locking. Two-Phase Locking (2) Two-phase locking estrito – todos os locks são liberados ao mesmo tempo. Ordenação com Marcas de Tempo Pessimista Controle de concorrência usando marcas de tempo.