Sincronização
Roteiro Introdução Sincronização de Relógio Físico Sincronização de Relógio Lógico Exclusão Mútua
Introdução A comunicação entre processos é importante, mas não é só isso que importa; Uma questão intimamente ligada a ela é o modo como processos cooperam e sincronizam uns com os outros Nessa aula iremos estudar os modos de como os processos podem sincronizar; Por exemplo, não é ideal que todos os processos acessem o mesmo recurso ao mesmo tempo (causaria deadlock);
Introdução Exemplos de sistemas que utilizam sincronização Sincronização de Relógio Físico Sincronização de Relógio Lógico Exclusão Mútua Entre outros
Relógio Físico Relógios físicos são imprecisos Eles são baseados na oscilação de cristais; Cada cristal tem a sua própria oscilação e são diferentes entre si; Como os computadores possui, cada um, um cristal, então, não há como terem a mesma hora
Relógio Físico Relógios atômicos são mais preciso, porém são mas caros; Nem todo mundo poderia ter um em casa; Solução: alguém oferece a hora do relógio atômico e os outros computadores atualizam dele.
Relógio Físico Protocolo de Tempo Real Em algumas atividades, é importante o relógio físico de todos os computadores estarem iguais; Como Funciona: Computador A consulta a hora no computador B Computador B inclui na resposta o valor do seu relógio Computador A atualiza o seu relógio com o valor do relógio em B adicionado ao retardo da mensagem entre B e A Desvantagem: Atrasos de mensagens farão com que a hora fornecida seja desatualizada
Relógio Físico Protocolo de Tempo Real - O computador B envia o tempo T3; - Para corrigir o tempo desatualizada, o computador A calcula soma o tempo recebido mais o tempo de espera (de T1 à t4) divido por dois (RTT/2); - Assim, ele consegue um valor próximo do valor real;
Relógio Físico Network Time Protocol (NTP) Algoritmos descentralizados permite atualizar a hora física em vários computadores, em diferentes regiões; Como Funciona: Organizado em uma estrutura hierárquica (em estratos) O estrato K + 1 sempre atualiza sua hora no estrato K Assim, todos os estratos serão atualizados no mesmo valor Desvantagem: Atrasos de mensagens farão com que a hora fornecida seja desatualizada; Essa hora desatualizada por se propagar em todos os estratos;
Relógio Físico Network Time Protocol (NTP) 1 estrato 2 estrato 3 estrato... E assim sucessivamente...
Relógio Físico Berkeley Em outros casos, é importante a hora está correta dentro de um grupo; Como funciona: O processo responsável pela sincronização é ativo; Ele pergunta aos outros processos o tempo; Depois que todo mundo responde, ele tira a média; Por fim, retorna a média para todo mundo ajustar; Desvantagem: Necessita que frequentemente um usuário informe manualmente a hora correta;
Relógio Físico Berkeley (a) Pergunta as outras máquinas a hora de cada uma; (b) Elas respondem; (c) Manda uma mensagem para ajustarem os relógios;
Relógio Lógico Há também os casos em que o tempo físico não é importante, o que prevalece é a ordem dos eventos (Tempo Relativo); Tempo relativo não possui nenhuma relação com o tempo real Determinar ordenação temporal de eventos que ocorrem em nodos diferentes, medidos por relógios diferente O mais importante é que os processos do Sistema Distribuído concordem com a ordem em que os eventos ocorrem Exemplos de algoritmos: Lamport Tempo Vetoriais (extensão de Lamport)
Relógio Lógico Lamport relação entre os eventos ( acontece antes de ) O importante é entender a relação entre os eventos: a aconteceu antes de b : a b Se a e b são eventos do mesmo processo e a é executado antes de b, então a b ex. a representa o envio de uma mensagem, enquanto b representa o recebimento dessa mensagem, logo, a b A relação acontece antes é transitiva; Se a b e b c, então a c Se a e b são eventos concorrentes (a b), não podemos afirma que: a b (a acontece antes b) e nem b a (b acontece antes de a)
Relógio Lógico Lamport relógio lógico Outro ponto importante é o conceito de Relógio Lógico (sempre crescente); Cada processo possui um Relógio Lógico; Para cada evento a, possamos designar um valor de tempo C(a) com o qual todos os processos concordam; Esses valores de tempo devem ter a propriedade de se a b, ou seja, C(a) < C(b);
Relógio Lógico Lamport Como funciona: Ci é incrementado de 1 antes de cada evento no processo Pi; Quando um processo Pi envia mensagem m, o tempo t = Ci é anexado a mensagem Quando Pj recebe a mensagem (e o tempo), o relógio é atualizado para Cj = max(cj, t) antes de aplicar 1) Desvantagem: Não existe a descrição de eventos casuais, todos tem que ser ordenados (o que na realidade, não é assim que ocorre);
Relógio Lógico Lamport (a) três processos, cada um com seu próprio relógio lógico; os relógios funcionam a uma taxa Diferente; (b) O algoritmo de Lamport corrige os relógios;
Relógio Lógico Lamport Exemplo - Consistência de dado
Relógio Lógico Tempo Vetoriais Vetores com marcas de tempo são usados para os eventos locais em cada processo Vetor de relógios VCi no processo Pi é um vetor de N inteiros Onde N é o número de processos existentes 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
Relógio Lógico Tempo Vetoriais Como funciona: Inicialmente CVi[j] = 0 for i, j = 1, 2,...N antes de cada evento, pi executa CVi[i] := CVi[i] +1 pi envia t = CVi em cada mensagem transmitida 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) Desvantagem: Pode ocorrer problemas de eficiência, porque mensagens podem ser retiras até quando as outras (atrasadas) chegarem; Nem todas as causalidades podem ser capturadas;
Relógio Lógico Tempo Vetoriais P0 P1 (1,0,0) (1,1,0) (1,1,0) P2 (0,0,0) (1,0,0) (1,1,0) (1) o processo P0 envia uma mensagem em multicast; (2) No entanto, uma a mensagem para o processo 2 chegará mais tarde (atrasada); (3) Enquanto isso, o processo P1, ao receber a mensagem, envia outra em broadcast; (4) O processo P0 recebe a mensagem corretamente, no entanto, o processo P2 não; (5) O processo P2 atrasa a mensagem e só irá libera quando receber a mensagem de P0; (6) Assim, todos processam as mensagens na mesma ordem;
Exclusão Mútua Necessita ordenar o acesso a um recurso, ou seja, ideal para: Evita deadlock; Permitir que todos os processos tenham acesso ao recurso; Há duas soluções: Baseados em Ficha Token Ring Baseada em Permissão Centralizada Distribuída
Exclusão Mútua Token Ring Como funciona: Os processos são organizados em um anel lógico; É criado um único token que permite o acesso ao recurso; Esse token circula entre os processos que fazem parte do anel lógico; Quando o processo recebe o token, ele decide se: Deseja utilizar o recurso e só repassa quando concluir a sua atividade, ou; Repassar o token para o próximo da vez; Desvantagem: Caso o processo com o token caia (por algum motivo), o token para se circular, portanto ninguém consegue mas acessar o recurso;
Exclusão Mútua Token Ring (a) Os computadores em grupo não estão ordenados; (b) Um anel é construído em um software; O token vai passando por cada processo; - caso o processo não utilize, ele repassa para o processo; - Caso utilize o recurso, ele só repassa depois que concluir a sua atividade;
Como funciona: Exclusão Mútua Centralizado Existe um processo exclusivo (o coordenador) para dá permissão de acesso ao recurso a outros processos Quando um processo requisição, caso: ninguém esteja utilizado o recurso, o coordenador libera o acesso Tenha alguém utilizado, o coordenador só libera o acesso ao recurso quando estiver livre; Desvantagem: O coordenador é um ponto de falha;
Exclusão Mútua Centralizado (a) O processo 1 solicita ao coordenador permissão para acessar um recurso compartilhado. A permissão é concedida. (b) Depois, o processo 2 solicita acesso o mesmo recurso. O coordenador não responde. (c) Quando o processo 1 libera o recurso, informa ao coordenador, que então responde para a 2.
Exclusão Mútua Distribuído Como funciona: Um processo pergunta (com um número) aos outros (e a ele mesmo) se pode acessar um recurso e aguarda pela resposta de todos*; Quando um processo recebe uma mensagem, ele pode retorna uma mensagem OK quando não quer utiliza o recurso; No entanto, caso queira acessar o recurso, ele compara se o número da sua mensagem é menor do que a da mensagem que acada de receber: Caso seja menor, ele não responde e acessa o recurso; Caso não seja, ele envia a mensagem OK e espera para ser liberado; Desvantagem: Um processo envia e recebe um grande número de mensagens; Caso um processo saia da rede e outro aguarda pela resposta; *E só irá acessar o recurso quando todos os processos responderem com a mensagem OK;
Exclusão Mútua Distribuído (a) dois processos querem acessar o mesmo recurso simultaneamente; (b) o tempo do processo 0 é o mais baixo, portanto vence; (c) Quando o processo 0 conclui, envia a mensagem OK, liberando o processo 2;
Outros Funções Sincronização de informação também é utilizada em outras áreas; A exemplo de Posicionamento de Nó; GPS; E também em Algoritmos de Eleição de Nós; LEACH;