SlideShare uma empresa Scribd logo
1 de 41
Sistemas Distribuídos II
Parte 02
Relógios e Sincronização
O Problema da
Sincronia de Tempo
• Não há garantias de que dois ou mais processos
cooperantes interpretem a contagem de
tempo igualmente
– Cada processo pode estar em uma máquina
diferente, o que significa que cada um pode estar
usando um relógio físico diferente
– Não há como garantir que os dois relógios estão
exatamente sincronizados (na verdade, isso é
quase impossível)
O Problema da
Sincronia de Tempo
• Que problemas isso pode gerar?
– Não há como garantir a troca de mensagens
síncrona
• A execução de eventos em determinada de sequência
pode ser comprometida
– Não há como garantir a exclusão mútua
• A alocação de recursos compartilhados pode falhar
– O monitoramento de eventos se turna mais
complexo
• Não há como determinar quando exatamente um
determinado evento ocorreu, o que pode
comprometer a reação desejada
O Problema da
Sincronia de Tempo (cont.)
• Como solucionar o problema?
–Opção 1: Solução Centralizada
• Funcionamento: Todos os processos envolvidos
em determinada atividade usam como referência
uma única fonte de tempo (um relógio único, um
processo,...)
• Vantagem:
– A garantia de que todos estão obtendo a informação
de tempo no mesmo lugar, o que evita informações
inconsistentes
O Problema da
Sincronia de Tempo (cont.)
• Como solucionar o problema?
–Opção 1: Solução Centralizada
• Problemas:
– A fonte única de tempo também é um ponto único de
falha, ou seja, diante de uma pane na fonte de tempo
todos os processos são comprometidos
– Dependendo da quantidade de processos envolvidos, a
fonte de tempo pode se sobrecarregar com a
quantidade de mensagens de/para ela
– As mensagens com informações de tempo podem
sofrer atrasos imprevisíveis durante seu tráfego na
rede, comprometendo a exatidão
O Problema da
Sincronia de Tempo (cont.)
• Como solucionar o problema? (cont.)
– Opção 2: Solução Distribuída
• Funcionamento:
• Vários processos se encarregam de regular as
informações de tempo, comparando e fazendo ajustes
entre si
O Problema da
Sincronia de Tempo (cont.)
• Como solucionar o problema? (cont.)
– Opção 2: Solução Distribuída
• Vantagem:
– Não há um ponto único de falha. A queda de um único
processo não interfere na sincronização do tempo entre os
demais
– Maior disponibilidade da informação de tempo, já que não há
uma fonte única
• Problemas:
– Maior complexidade para implementar a solução
– Quantidade variável de mensagens (nem sempre previsível)
O Problema da
Sincronia de Tempo (cont.)
• Como solucionar o problema? (cont.)
– A opção distribuída (opção 2) é a mais adequada
para ambientes distribuídos porque:
• As informações relevantes ao processo estão dispersas
por várias máquinas
• Cada processo deve tomar decisões baseado somente
em informações locais
• A existência de um ponto único de falha deve ser
evitada sempre que for póssível
• Não existe um relógio único para todas as máquinas
Relógios Lógicos
• Em algumas tarefas distribuídas, o tempo real
não é importante.
– O foco do controle de tempo é voltado para a
correta sequência de eventos que deve acontecer
• A informação de tempo neste caso é usada
como um contador de eventos, que determina
o que deve acontecer a cada momento
Relógios Lógicos
• A solução de Lamport
– Em 1978, Leslie Lamport publicou uma proposta de
ordenação de eventos baseada em tempo, onde:
– Não há tempo absoluto – toda a informação de
tempo é relativa entre os procesos que trocam
mensagens
– Se dois processos não interagem entre si, não há
necessidade de sincronização de tempo entre eles
– Na maioria das vezes é necessário que os processos
concordem com a informação de tempo entre eles,
mas este tempo não precisa ser real
Algoritmo de Lamport
• Funcionamento do algoritmo:
• Cada processo cooperante tem seu próprio relógio lógico (independente
do tempo real), que serve como contador de eventos
– Cada evento ocorrido incrementa uma unidade de tempo no
contador
• Cada mensagem trocada entre dois processos cooperantes contém uma
informação de tempo (relógio lógico) fornecida pelo emissor da
mensagem
• O processo receptor compara a informação de tempo contida na
mensagem com seu próprio relógio lógico:
– Se seu relógio lógico possuir um valor maior que o tempo contido na
mensagem, o relógio permanece com o mesmo valor
– Se seu relógio lógico possuir um valor menor ou igual que o tempo
contido na mensagem, o relógio é ajustado e passa a ter o valor da
mensagem mais um
Algoritmo de Lamport (exemplo)
• Imagine três processos (P1, P2 e P3) localizados em máquinas
diferentes que iniciam algum tipo de interação sincronizada
– Os 3 processos iniciam seus relógios lógicos, mas cada
clock físico oscila em frequencias diferentes
• Suponha:
– O clock lógico de P1 varia de 6 em 6 unidades
– O clock lógico de P2 varia de 8 em 8 unidades
– O clock lógico de P3 varia de 10 em 10 unidades
• No primeiro instante, todos os relógios estão zerados
• No segundo instante, os relógios lógicos já não estão iguais (P1=6,
P2=8 e P3=10)
• Esta variação aumenta conforma os instantes se passam
(exemplo: no instante 5  P1=24, P2=32 e P3=40)
Algoritmo de Lamport (exemplo)
– Cada mensagem trocada entre os processos precisa conter
o valor que o relógio físico de seu emissor para que o
receptor faça os ajustes necessários
• No instante 2 a mensagem A é enviada de P1 para P2
• No instante 4 a mensagem B é enviada de P2 para P3
• No instante 7 a mensagem C é enviada de P3 para P2
• No instante 9 a mensagem D é enviada de P2 para P1
– Considere que cada mensagem enviada chega a seu
destino no instante seguinte ao que foi enviada
• As mensagens A e B chegam a seus destinos sem causar impacto,
pois o relógio lógico de cada receptor contém um valor maior que
aquele que consta em cada mensagem
• As mensagens C e D obrigam seus receptores a efetuar um ajuste
nos relógios lógicos para garantir a correta sincronia dos eventos
Algoritmo de Lamport (exemplo)
Instante Relógio P1 Relógio P2 Relógio P3
1 0 0 0
2 6 8 10
3 12 16 20
4 18 24 30
5 24 32 40
6 30 40 50
7 36 48 60
8 42 61 70
9 48 69 80
10 70 77 90
11 76 85 100
Mensagem A (6)
Mensagem B (24)
Mensagem C (60)
Mensagem D (69)
Não necessita
de ajuste
no relógio
Necessita
de ajuste
no relógio
Problema no
Algoritmo de Lamport
• Considere:
– R(e1) o valor do relógio lógico para o evento “e1”
– R(e2) o valor do relógio lógico para o evento “e2”
– A solução porposta por Lamport não garante que se R(e1) < R(e2)
então o evento “e1” acontece antes que o evento “e2”
• Exemplo:
– Se compararmos os valores de relógio em cada mensgaem, temos:
• Msg-A (1) < Msg-B(4) então Msg-A ocorreu antes de Msg-B (correto)
• Msg-C (3) < Msg-B(4) então Msg-C ocorreu antes de Msg-B (incorreto)
Processo P1 Processo P2 Processo P3
0 0 0
1 3 2
2 6 4
3 9 6
4 12 8
Msg A (1)
Msg B (4)
Msg C (3)
Solução Vetorial (Mattern e Fidge)
• Solução proposta por Mattern e Fidge:
– O relógio lógico passa a ser um vetor contador de eventos
– Se existem N processos cooperando, o vetor terá N posições
inteiras, onde cada posição corresponde a um contador de
eventos
– Cada processo terá um vetor para si
– Cada mensagem enviada contém a versão atualizada do vetor
do emissor
• Esta solução é muito usada em:
– Verificação de consistência de estados em SD
– Controle de checkpoints
– Recuperação de erros
– Rollbacks
Solução Vetorial (Mattern e Fidge)
• Funcionamento
– Antes de cada evento em um processo, este incrementa mais 1 no valor de
sua posição no vetor
– Sempre que uma mensagem é enviada, o processo inclui uma cópia de seu
vetor na mensagem
– No recebimento de uma mensagem, o processo atualiza o seu vetor a partir
do vetor da mensagem.
• Ao receber uma mensagem, o processo faz uma operação de integração
(merge) entre o vetor recebido e seu próprio vetor local, atualizando os
dados deste último
– Sua posição no vetor assume o valor máximo existente no vetor da
mensagem
– O valor do contador correspondente ao emissor é incrementado em
uma unidade caso seu valor local já não seja maior que o recebido;
– Uma vez atualizado o vetor local, é possível determinar a ordem dos eventos
comparando-se o valor de cada posição dos vetores em cada evento
Solução Vetorial (Exemplo)
Solução Vetorial
• Desvantagem da solução:
– Ocupa-se mais espaço de armazenamento e carga útil da
mensagem
• Uma solução derivada dos relógios vetoriais:
– “Relógios de matriz”
• Além de seu próprio vetor, cada processo mantém estimativas do
tempo vetorial dos outros processos
Relógios Físicos
• O algoritmo de Lamport e as demais soluções de relógios
lógicos se preocupam apenas com a ordenação de eventos
– Os instantes de tempo associados a cada evento não são
necessariamente próximos do tempo em que os eventos realmente
aconteceram
• Em alguns sistemas o conhecimento do instante de tempo
real é muito importante (exemplo: sistemas de tempo real)
– Para este tipo de sistema são necessários clocks físicos externos
• Em certos casos, é desejável a existência de mais de um clock
externo, para garantir eficiência e redundância
– Problemas:
• Como sincronizá-los com o tempo real?
• Como sincronizar esses clocks entre si?
Evolução da Marcação de Tempo
• Primeiras soluções para marcação de
tempo
– Relógios de sol, estações do ano, ...
– Dia solar: intervalo decorrido entre duas
passagens consecutivas do Sol em
determinado ponto do céu
• Século XVII: primeiros relógios
mecânicos
– Quanto maior a qualidade do processo de
fabricação, mais preciso o processo de
marcação do tempo
– Ainda era muito difícil garantir uma sincronia
de tempo eficiente
Evolução da Marcação de Tempo
• Década de 1940: Ajustes para
compensar imprecisões
– Foram feitos ajustes artificiais na marcação
oficial de tempo para compensar imprecisões
resultantes de fenômenos naturais que
influenciam diretamente nas fontes de
tempo utilizadas
• Descobriu-se que a rotação da terra não
é constante, devido às marés e a
atmosfera (desaceleram a rotação da
Terra)
• A duração do ano (em dias) diminuiu (os
dias ficaram mais longos)
• O turbulências no núcleo do planeta
influenciam no comprimento do dia
Evolução da Marcação de Tempo
• Em 1948: invenção do relógio
atômico
– Contagem de segundos a partir
das transições de elétrons de
um átomo de Césio 133
• É uma medida mais precisa
e constante, que não sofre
influências externas
Evolução da Marcação de Tempo
• Atualmente:
– TAI (Tempo Atômico Internacional)
• Média de tempo dos relógios atômicos
• É mais preciso, porém ainda é necessário ajustá-lo a contagem de
tempo solar adotada no dia-a-dia
• Ajuste do TAI (Tempo Atômico Internacional)
– UTC (Tempo Universal Coordenado)
• É o TAI ajustado ao tempo solar
• O ajuste é feito inserindo-se segundos “bissextos”
• Vem gradativamente substituindo o uso do GMT
• Acesso: NIST (rádio WWV) e GEOS (Satélite)
Evolução da Marcação de Tempo
• Relógio Atômico Brasileiro (USP)
Evolução da Marcação de Tempo
• NIST
– National Institute of Standards and Technology
Evolução da Marcação de Tempo
• GEOS
Algoritmo de Cristian
• Funcionamento:
• Usa um servidor de tempo, que é um computador equipado com receptor
UTC
• As demais máquinas enviam mensagens para o servidor de tempo
perguntando pelo tempo corrente
• O servidor de tempo responde o mais rápido possível, com uma
mensagem contendo o tempo UTC corrente
• Cada máquina, ao obter a resposta, ajusta seu clock
• O servidor de tempo é PASSIVO. O ajuste depende da inciativa das demais
máquinas
• Problemas:
• O tempo nunca pode andar para trás (os ajustes são sempre progressivos)
• A consulta ao servidor de tempo gasta um tempo não-nulo (o retardo
pode vir a ser grande)
Algoritmo de Cristian (cont.)
• Mais um problema:
– É uma solução altamente centralizada
• Para minimizar a centralização, pode-se adotar os
seguintes caminhos:
– Ter vários servidores com receptor UTC
– As demais máquinas passam a solicitar a hora por meio de mensagens
multicast
• Esta solução é um algorítmo probabilístico, ou seja:
– Só se obtém uma sincronização aceitável se o tempo de ida e volta
das mensagens forem curtos o suficiente se comparados a precisão
desejada
Algoritmo de Cristian (cont.)
• Solução para os ajustes sempre progressivos
• A mudança no clock deve ser feita de forma gradativa e
sempre avançando o relógio
• Se o ajuste é de 10 ms, basta adicionar 9 ms para
atrazar ou 11 ms para adiantar
Algoritmo de Cristian (cont.)
• Solução para o retardo na mensagem
• Tentar medir (estimativa) o tempo de transmissão
T0 .................. tempo de envio da requisição
T1 .................. recebimento da resposta
(T1 - T0)/2 ....... tempo aproximado de propagação da mensagem
I .................... tempo de tratamento da interrupção
(T1 - T0 - I)/2 ... estimativa ainda mais precisa
• Outra solução:
– Realizar várias medidas e calcular a médias de tempo
(descartando valores fora de um certo limite)
Algoritmo de Berkeley
• Funcionamento
• O servidor de tempo é uma entidade ATIVA, que consulta periodicamente cada
uma das máquinas do sistema para saber o tempo corrente em cada uma delas
• Baseado nas respostas obtidas:
– Calcula o tempo médio e o ajuste que cada máquina terá que
fazer
– Informa às demais máquinas para adiantar ou atrasar seus
clocks, tornando-se iguais ao tempo médio calculado
– Não informa a hora corrente e sim o ajuste a ser feito
– O cálculo que o servidor faz também leva em conta a
existência de respostas “absurdas” (muito fora da média das
demais máquinas).
– Estas repostas “absurdas” são descartadas do cáculo de ajuste
para evitar um desvio indesejado dos resultados
Algoritmo de Berkeley
• A precisão deste algoritmo também depende
do tempo máximo gasto pelas mensagens de
ida e volta
• Indicado para:
– Quando nenhuma das máquinas tem um receptor
UTC
– A necessidade de precisão no ambiente é
pequena
Algoritmo de Berkeley (cont.)
• Problemas:
– O ajuste do servidor de tempo deve ser feito
periodicamente por um operador (de forma
manual)
– É uma solução altamente centralizada
• Para contornar esta fragilidade, ao se perceber que o
servidor de tempo falhou, elege-se outro servidor para
o seu lugar
• O problema agora passa a ser como determinar que o
servidor de tempo falhou
Network Time Protocol
• Os algorítmos de Cristian e Berkeley , embora
eficientes, se dedicam mais a redes pequenas
e intranets
– Em ambientes com uma grande quantidade de
máquinas, como a Internet, é quase impossível
garantir o bom funcionamento destas duas
soluções
• Pela natureza assíncrona das operações
desempenhadas na web
• Pela ausência de garantia de entrega de mensagens em
um tempo razoável
Network Time Protocol (cont.)
• O NTP foi projetado como um serviço e protocolo
para distribuir informações de tempo pela Internet
• Objetivos:
– Ser um serviço para clientes internet se sincronizarem
pelo UTC, superando atrasos e perdas de mensagens
• Isso é feito por meio de técnicas estatísticas de
filtragem da informação
– Fornecer um serviço confiável que sobreviva a longas
perdas de conectividade
• Usando servidores e rotas redundantes para circulação
das mensagens
Network Time Protocol (cont.)
• Características:
– Permite sincronização razoavelmente frequente
dos clientes
• Para compensar falhas originadas na
quantidade de clientes e servidores interagindo
– Fornece proteção ao serviço de tempo contra
interferências acidentais ou intencionais
• Autenticação, validação de mensagens
Network Time Protocol (cont.)
• Funcionamento:
– O NTP é formado por uma rede de servidores na
internet divididos pela seguinte hierarquia:
• Servidores Primários
– São máquinas conectadas diretamente a uma fonte de tempo
UTC
• Servidores Secundários
– Servidores que se sincronizam com os servidores primários
• Demais servidores
– Organizados em uma estrutura de árvore
– Cada “galho” se sincroniza com sua “raiz”
– A “árvore” é composta de sub-redes de sincronização
Network Time Protocol (cont.)
• Funcionamento:
– Cada nível da árvore é chamado de “stratum”
• Stratum 1: servidores primários (raiz)
• Stratum 2: servidores secundários
• Stratum 3: outros servidores
• Stratum 4: mais servidores
• e assim por diante...
– Quanto mais alto o número do stratum, a tendência é que
a precisão seja menor neste nível
– É possível realizar alterações na hierarquia para superar
indisponibilidade de serviço. Por exemplo:
• “Promover” máquinas mapa um stratum mais alto
• Deslocar “galhos” inteiros para se sincronizarem com outros servidores
Network Time Protocol (cont.)
• Como a sincronia é feita?
– As mensagens são transmitidas via protocolo UDP
– A mensagem pode ser enviada de 3 modos:
• Modo 1: Multicast
– Ideal para redes locais de alta velocidade
– Servidores de tempo enviam mensagem e as demais
máquinas ajustam seus relógios
– Possui uma margem de erro grande, que resulta em
baixa precisão
Network Time Protocol (cont.)
• Modo 2: RPC
– Usa a solução de Cristian para sincronizar
– É mais preciso que a opção de multicast
• Modo 3: Simétrico
– Adotado em máquinas cujo stratum é baixo
– É a opção mais precisa
– Os servidores trocam mesagens de tempo entre si e
as informações são armazenadas para uso posterior
visando melhorar cada vez mais a sincronia

Mais conteúdo relacionado

Mais procurados

Aula 05 sistemas de numeração
Aula 05   sistemas de numeraçãoAula 05   sistemas de numeração
Aula 05 sistemas de numeração
Daniel Moura
 
So gabarito exerciciosescalonamentocpu-2012
So gabarito exerciciosescalonamentocpu-2012So gabarito exerciciosescalonamentocpu-2012
So gabarito exerciciosescalonamentocpu-2012
Bill Lima
 
Gerenciamento de memória cap 03 (ii unidade)
Gerenciamento de memória cap 03 (ii unidade)Gerenciamento de memória cap 03 (ii unidade)
Gerenciamento de memória cap 03 (ii unidade)
Faculdade Mater Christi
 

Mais procurados (20)

Aula 05 sistemas de numeração
Aula 05   sistemas de numeraçãoAula 05   sistemas de numeração
Aula 05 sistemas de numeração
 
Modelo OSI - Camada de Transporte
Modelo OSI - Camada de TransporteModelo OSI - Camada de Transporte
Modelo OSI - Camada de Transporte
 
Exercício redes cap 3
Exercício redes cap 3Exercício redes cap 3
Exercício redes cap 3
 
Sistemas Distribuídos - Aula 02
Sistemas Distribuídos - Aula 02Sistemas Distribuídos - Aula 02
Sistemas Distribuídos - Aula 02
 
Aula 2 introdução a sistemas distribuídos
Aula 2   introdução a sistemas distribuídosAula 2   introdução a sistemas distribuídos
Aula 2 introdução a sistemas distribuídos
 
Modelo de falhas
Modelo de falhasModelo de falhas
Modelo de falhas
 
Introdução à computação - Aula Prática 4 - Redes de Computadores (Cabeamento ...
Introdução à computação - Aula Prática 4 - Redes de Computadores (Cabeamento ...Introdução à computação - Aula Prática 4 - Redes de Computadores (Cabeamento ...
Introdução à computação - Aula Prática 4 - Redes de Computadores (Cabeamento ...
 
So gabarito exerciciosescalonamentocpu-2012
So gabarito exerciciosescalonamentocpu-2012So gabarito exerciciosescalonamentocpu-2012
So gabarito exerciciosescalonamentocpu-2012
 
Simplex, Half-Duplex e Full-Duplex
Simplex, Half-Duplex e Full-DuplexSimplex, Half-Duplex e Full-Duplex
Simplex, Half-Duplex e Full-Duplex
 
Gerenciamento de memória cap 03 (ii unidade)
Gerenciamento de memória cap 03 (ii unidade)Gerenciamento de memória cap 03 (ii unidade)
Gerenciamento de memória cap 03 (ii unidade)
 
Tipos de Sistemas Operacionais
Tipos de Sistemas OperacionaisTipos de Sistemas Operacionais
Tipos de Sistemas Operacionais
 
Aula 01 - Introdução ao Sistema de Informação
Aula 01 - Introdução ao Sistema de InformaçãoAula 01 - Introdução ao Sistema de Informação
Aula 01 - Introdução ao Sistema de Informação
 
Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08
 
Análise, projeto e implementação de sistemas
Análise, projeto e implementação de sistemasAnálise, projeto e implementação de sistemas
Análise, projeto e implementação de sistemas
 
Conceitos base de programação - parte 2
Conceitos base de programação - parte 2Conceitos base de programação - parte 2
Conceitos base de programação - parte 2
 
Aula de Sistemas Distribuídos - Tolerância a Falhas
Aula de Sistemas Distribuídos - Tolerância a FalhasAula de Sistemas Distribuídos - Tolerância a Falhas
Aula de Sistemas Distribuídos - Tolerância a Falhas
 
RC - Módulo 1
RC - Módulo 1RC - Módulo 1
RC - Módulo 1
 
Apresentação Sistemas Operativos TUDO.pdf
Apresentação Sistemas Operativos TUDO.pdfApresentação Sistemas Operativos TUDO.pdf
Apresentação Sistemas Operativos TUDO.pdf
 
Blockchain: muito além das criptomoedas
Blockchain: muito além das criptomoedasBlockchain: muito além das criptomoedas
Blockchain: muito além das criptomoedas
 
Principais protocolos de rede
Principais protocolos de redePrincipais protocolos de rede
Principais protocolos de rede
 

Semelhante a Sd05 (si) relógios e sincronização

Aula1 - Sistemas Tempo-Real
Aula1 - Sistemas Tempo-RealAula1 - Sistemas Tempo-Real
Aula1 - Sistemas Tempo-Real
sestrem
 

Semelhante a Sd05 (si) relógios e sincronização (20)

SincronizacaoDist.pdf
SincronizacaoDist.pdfSincronizacaoDist.pdf
SincronizacaoDist.pdf
 
Relógios Lógicos
Relógios LógicosRelógios Lógicos
Relógios Lógicos
 
Ntp 1-cp2011
Ntp 1-cp2011Ntp 1-cp2011
Ntp 1-cp2011
 
Sd06 (si) exclusão mútua
Sd06 (si)   exclusão mútuaSd06 (si)   exclusão mútua
Sd06 (si) exclusão mútua
 
Categorias de Escalonamento e Objetivos do Algorítmo Escalonador
Categorias de Escalonamento e Objetivos do Algorítmo EscalonadorCategorias de Escalonamento e Objetivos do Algorítmo Escalonador
Categorias de Escalonamento e Objetivos do Algorítmo Escalonador
 
Processos e threads cap 02 (i unidade)
Processos e threads   cap 02 (i unidade)Processos e threads   cap 02 (i unidade)
Processos e threads cap 02 (i unidade)
 
Análise de Algoritmos
Análise de AlgoritmosAnálise de Algoritmos
Análise de Algoritmos
 
Parte1e
Parte1eParte1e
Parte1e
 
Apresentação Semáforos, monitores, troca de mensagens, Deadlock
Apresentação Semáforos, monitores, troca de mensagens, DeadlockApresentação Semáforos, monitores, troca de mensagens, Deadlock
Apresentação Semáforos, monitores, troca de mensagens, Deadlock
 
Gerências de Processos: Sincronização
Gerências de Processos: SincronizaçãoGerências de Processos: Sincronização
Gerências de Processos: Sincronização
 
(ACH2044) Sistemas Operacionais - Aula 05
(ACH2044) Sistemas Operacionais - Aula 05(ACH2044) Sistemas Operacionais - Aula 05
(ACH2044) Sistemas Operacionais - Aula 05
 
Categorias de escalonamento e objetivos do algoritmo de escalonamento
Categorias de escalonamento e objetivos do algoritmo de escalonamentoCategorias de escalonamento e objetivos do algoritmo de escalonamento
Categorias de escalonamento e objetivos do algoritmo de escalonamento
 
Aula1 - Sistemas Tempo-Real
Aula1 - Sistemas Tempo-RealAula1 - Sistemas Tempo-Real
Aula1 - Sistemas Tempo-Real
 
SRE - Engenharia de confiabilidade de sites 4
SRE - Engenharia de confiabilidade de sites 4SRE - Engenharia de confiabilidade de sites 4
SRE - Engenharia de confiabilidade de sites 4
 
Aula 04 qs - sistemas embarcados
Aula 04   qs - sistemas embarcadosAula 04   qs - sistemas embarcados
Aula 04 qs - sistemas embarcados
 
pentester 2.pdf
pentester 2.pdfpentester 2.pdf
pentester 2.pdf
 
Lamport
LamportLamport
Lamport
 
Sd04 (si) comunicação em sd
Sd04 (si)   comunicação em sdSd04 (si)   comunicação em sd
Sd04 (si) comunicação em sd
 
"Monitoração - muito além do sistema operacional" - Marcus Vechiato (Locaweb)...
"Monitoração - muito além do sistema operacional" - Marcus Vechiato (Locaweb)..."Monitoração - muito além do sistema operacional" - Marcus Vechiato (Locaweb)...
"Monitoração - muito além do sistema operacional" - Marcus Vechiato (Locaweb)...
 
Monitoração - muito além do sistema operacional - WeOp 2014
Monitoração - muito além do sistema operacional - WeOp 2014Monitoração - muito além do sistema operacional - WeOp 2014
Monitoração - muito além do sistema operacional - WeOp 2014
 

Mais de Computação Depressão (20)

Sd08 (si) sistemas de arquivos distribuídos
Sd08 (si)   sistemas de arquivos distribuídosSd08 (si)   sistemas de arquivos distribuídos
Sd08 (si) sistemas de arquivos distribuídos
 
Sd03 (si) conceitos básicos de sd
Sd03 (si)   conceitos básicos de sdSd03 (si)   conceitos básicos de sd
Sd03 (si) conceitos básicos de sd
 
Sd02 (si) gerenciamento de entrada e saída
Sd02 (si)   gerenciamento de entrada e saídaSd02 (si)   gerenciamento de entrada e saída
Sd02 (si) gerenciamento de entrada e saída
 
Sd01 (si) sistemas de arquivos
Sd01 (si)   sistemas de arquivosSd01 (si)   sistemas de arquivos
Sd01 (si) sistemas de arquivos
 
Sd07 (si) eleição
Sd07 (si)   eleiçãoSd07 (si)   eleição
Sd07 (si) eleição
 
Ufbamat2013
Ufbamat2013Ufbamat2013
Ufbamat2013
 
Ufbaingles2013
Ufbaingles2013Ufbaingles2013
Ufbaingles2013
 
Ufbagab mat 2013
Ufbagab mat 2013Ufbagab mat 2013
Ufbagab mat 2013
 
Ufbagab ingles2013
Ufbagab ingles2013Ufbagab ingles2013
Ufbagab ingles2013
 
Ufbagab fis 2013
Ufbagab fis 2013Ufbagab fis 2013
Ufbagab fis 2013
 
Ufbafisqui2013
Ufbafisqui2013Ufbafisqui2013
Ufbafisqui2013
 
Ufbagab qui 2013
Ufbagab qui 2013Ufbagab qui 2013
Ufbagab qui 2013
 
Questesdetecnologia ano2002
Questesdetecnologia ano2002Questesdetecnologia ano2002
Questesdetecnologia ano2002
 
Questesdematemtica ano2003
Questesdematemtica ano2003Questesdematemtica ano2003
Questesdematemtica ano2003
 
Questesdematemtica ano2002
Questesdematemtica ano2002Questesdematemtica ano2002
Questesdematemtica ano2002
 
Questesdefundamentos ano2003
Questesdefundamentos ano2003Questesdefundamentos ano2003
Questesdefundamentos ano2003
 
Questesdefundamentos ano2002
Questesdefundamentos ano2002Questesdefundamentos ano2002
Questesdefundamentos ano2002
 
Gabarito ano2011
Gabarito ano2011Gabarito ano2011
Gabarito ano2011
 
Gabarito ano2010
Gabarito ano2010Gabarito ano2010
Gabarito ano2010
 
Gabarito ano2009
Gabarito ano2009Gabarito ano2009
Gabarito ano2009
 

Sd05 (si) relógios e sincronização

  • 1. Sistemas Distribuídos II Parte 02 Relógios e Sincronização
  • 2. O Problema da Sincronia de Tempo • Não há garantias de que dois ou mais processos cooperantes interpretem a contagem de tempo igualmente – Cada processo pode estar em uma máquina diferente, o que significa que cada um pode estar usando um relógio físico diferente – Não há como garantir que os dois relógios estão exatamente sincronizados (na verdade, isso é quase impossível)
  • 3. O Problema da Sincronia de Tempo • Que problemas isso pode gerar? – Não há como garantir a troca de mensagens síncrona • A execução de eventos em determinada de sequência pode ser comprometida – Não há como garantir a exclusão mútua • A alocação de recursos compartilhados pode falhar – O monitoramento de eventos se turna mais complexo • Não há como determinar quando exatamente um determinado evento ocorreu, o que pode comprometer a reação desejada
  • 4. O Problema da Sincronia de Tempo (cont.) • Como solucionar o problema? –Opção 1: Solução Centralizada • Funcionamento: Todos os processos envolvidos em determinada atividade usam como referência uma única fonte de tempo (um relógio único, um processo,...) • Vantagem: – A garantia de que todos estão obtendo a informação de tempo no mesmo lugar, o que evita informações inconsistentes
  • 5. O Problema da Sincronia de Tempo (cont.) • Como solucionar o problema? –Opção 1: Solução Centralizada • Problemas: – A fonte única de tempo também é um ponto único de falha, ou seja, diante de uma pane na fonte de tempo todos os processos são comprometidos – Dependendo da quantidade de processos envolvidos, a fonte de tempo pode se sobrecarregar com a quantidade de mensagens de/para ela – As mensagens com informações de tempo podem sofrer atrasos imprevisíveis durante seu tráfego na rede, comprometendo a exatidão
  • 6. O Problema da Sincronia de Tempo (cont.) • Como solucionar o problema? (cont.) – Opção 2: Solução Distribuída • Funcionamento: • Vários processos se encarregam de regular as informações de tempo, comparando e fazendo ajustes entre si
  • 7. O Problema da Sincronia de Tempo (cont.) • Como solucionar o problema? (cont.) – Opção 2: Solução Distribuída • Vantagem: – Não há um ponto único de falha. A queda de um único processo não interfere na sincronização do tempo entre os demais – Maior disponibilidade da informação de tempo, já que não há uma fonte única • Problemas: – Maior complexidade para implementar a solução – Quantidade variável de mensagens (nem sempre previsível)
  • 8. O Problema da Sincronia de Tempo (cont.) • Como solucionar o problema? (cont.) – A opção distribuída (opção 2) é a mais adequada para ambientes distribuídos porque: • As informações relevantes ao processo estão dispersas por várias máquinas • Cada processo deve tomar decisões baseado somente em informações locais • A existência de um ponto único de falha deve ser evitada sempre que for póssível • Não existe um relógio único para todas as máquinas
  • 9. Relógios Lógicos • Em algumas tarefas distribuídas, o tempo real não é importante. – O foco do controle de tempo é voltado para a correta sequência de eventos que deve acontecer • A informação de tempo neste caso é usada como um contador de eventos, que determina o que deve acontecer a cada momento
  • 10. Relógios Lógicos • A solução de Lamport – Em 1978, Leslie Lamport publicou uma proposta de ordenação de eventos baseada em tempo, onde: – Não há tempo absoluto – toda a informação de tempo é relativa entre os procesos que trocam mensagens – Se dois processos não interagem entre si, não há necessidade de sincronização de tempo entre eles – Na maioria das vezes é necessário que os processos concordem com a informação de tempo entre eles, mas este tempo não precisa ser real
  • 11. Algoritmo de Lamport • Funcionamento do algoritmo: • Cada processo cooperante tem seu próprio relógio lógico (independente do tempo real), que serve como contador de eventos – Cada evento ocorrido incrementa uma unidade de tempo no contador • Cada mensagem trocada entre dois processos cooperantes contém uma informação de tempo (relógio lógico) fornecida pelo emissor da mensagem • O processo receptor compara a informação de tempo contida na mensagem com seu próprio relógio lógico: – Se seu relógio lógico possuir um valor maior que o tempo contido na mensagem, o relógio permanece com o mesmo valor – Se seu relógio lógico possuir um valor menor ou igual que o tempo contido na mensagem, o relógio é ajustado e passa a ter o valor da mensagem mais um
  • 12. Algoritmo de Lamport (exemplo) • Imagine três processos (P1, P2 e P3) localizados em máquinas diferentes que iniciam algum tipo de interação sincronizada – Os 3 processos iniciam seus relógios lógicos, mas cada clock físico oscila em frequencias diferentes • Suponha: – O clock lógico de P1 varia de 6 em 6 unidades – O clock lógico de P2 varia de 8 em 8 unidades – O clock lógico de P3 varia de 10 em 10 unidades • No primeiro instante, todos os relógios estão zerados • No segundo instante, os relógios lógicos já não estão iguais (P1=6, P2=8 e P3=10) • Esta variação aumenta conforma os instantes se passam (exemplo: no instante 5  P1=24, P2=32 e P3=40)
  • 13. Algoritmo de Lamport (exemplo) – Cada mensagem trocada entre os processos precisa conter o valor que o relógio físico de seu emissor para que o receptor faça os ajustes necessários • No instante 2 a mensagem A é enviada de P1 para P2 • No instante 4 a mensagem B é enviada de P2 para P3 • No instante 7 a mensagem C é enviada de P3 para P2 • No instante 9 a mensagem D é enviada de P2 para P1 – Considere que cada mensagem enviada chega a seu destino no instante seguinte ao que foi enviada • As mensagens A e B chegam a seus destinos sem causar impacto, pois o relógio lógico de cada receptor contém um valor maior que aquele que consta em cada mensagem • As mensagens C e D obrigam seus receptores a efetuar um ajuste nos relógios lógicos para garantir a correta sincronia dos eventos
  • 14. Algoritmo de Lamport (exemplo) Instante Relógio P1 Relógio P2 Relógio P3 1 0 0 0 2 6 8 10 3 12 16 20 4 18 24 30 5 24 32 40 6 30 40 50 7 36 48 60 8 42 61 70 9 48 69 80 10 70 77 90 11 76 85 100 Mensagem A (6) Mensagem B (24) Mensagem C (60) Mensagem D (69) Não necessita de ajuste no relógio Necessita de ajuste no relógio
  • 15. Problema no Algoritmo de Lamport • Considere: – R(e1) o valor do relógio lógico para o evento “e1” – R(e2) o valor do relógio lógico para o evento “e2” – A solução porposta por Lamport não garante que se R(e1) < R(e2) então o evento “e1” acontece antes que o evento “e2” • Exemplo: – Se compararmos os valores de relógio em cada mensgaem, temos: • Msg-A (1) < Msg-B(4) então Msg-A ocorreu antes de Msg-B (correto) • Msg-C (3) < Msg-B(4) então Msg-C ocorreu antes de Msg-B (incorreto) Processo P1 Processo P2 Processo P3 0 0 0 1 3 2 2 6 4 3 9 6 4 12 8 Msg A (1) Msg B (4) Msg C (3)
  • 16. Solução Vetorial (Mattern e Fidge) • Solução proposta por Mattern e Fidge: – O relógio lógico passa a ser um vetor contador de eventos – Se existem N processos cooperando, o vetor terá N posições inteiras, onde cada posição corresponde a um contador de eventos – Cada processo terá um vetor para si – Cada mensagem enviada contém a versão atualizada do vetor do emissor • Esta solução é muito usada em: – Verificação de consistência de estados em SD – Controle de checkpoints – Recuperação de erros – Rollbacks
  • 17. Solução Vetorial (Mattern e Fidge) • Funcionamento – Antes de cada evento em um processo, este incrementa mais 1 no valor de sua posição no vetor – Sempre que uma mensagem é enviada, o processo inclui uma cópia de seu vetor na mensagem – No recebimento de uma mensagem, o processo atualiza o seu vetor a partir do vetor da mensagem. • Ao receber uma mensagem, o processo faz uma operação de integração (merge) entre o vetor recebido e seu próprio vetor local, atualizando os dados deste último – Sua posição no vetor assume o valor máximo existente no vetor da mensagem – O valor do contador correspondente ao emissor é incrementado em uma unidade caso seu valor local já não seja maior que o recebido; – Uma vez atualizado o vetor local, é possível determinar a ordem dos eventos comparando-se o valor de cada posição dos vetores em cada evento
  • 19. Solução Vetorial • Desvantagem da solução: – Ocupa-se mais espaço de armazenamento e carga útil da mensagem • Uma solução derivada dos relógios vetoriais: – “Relógios de matriz” • Além de seu próprio vetor, cada processo mantém estimativas do tempo vetorial dos outros processos
  • 20. Relógios Físicos • O algoritmo de Lamport e as demais soluções de relógios lógicos se preocupam apenas com a ordenação de eventos – Os instantes de tempo associados a cada evento não são necessariamente próximos do tempo em que os eventos realmente aconteceram • Em alguns sistemas o conhecimento do instante de tempo real é muito importante (exemplo: sistemas de tempo real) – Para este tipo de sistema são necessários clocks físicos externos • Em certos casos, é desejável a existência de mais de um clock externo, para garantir eficiência e redundância – Problemas: • Como sincronizá-los com o tempo real? • Como sincronizar esses clocks entre si?
  • 21. Evolução da Marcação de Tempo • Primeiras soluções para marcação de tempo – Relógios de sol, estações do ano, ... – Dia solar: intervalo decorrido entre duas passagens consecutivas do Sol em determinado ponto do céu • Século XVII: primeiros relógios mecânicos – Quanto maior a qualidade do processo de fabricação, mais preciso o processo de marcação do tempo – Ainda era muito difícil garantir uma sincronia de tempo eficiente
  • 22. Evolução da Marcação de Tempo • Década de 1940: Ajustes para compensar imprecisões – Foram feitos ajustes artificiais na marcação oficial de tempo para compensar imprecisões resultantes de fenômenos naturais que influenciam diretamente nas fontes de tempo utilizadas • Descobriu-se que a rotação da terra não é constante, devido às marés e a atmosfera (desaceleram a rotação da Terra) • A duração do ano (em dias) diminuiu (os dias ficaram mais longos) • O turbulências no núcleo do planeta influenciam no comprimento do dia
  • 23. Evolução da Marcação de Tempo • Em 1948: invenção do relógio atômico – Contagem de segundos a partir das transições de elétrons de um átomo de Césio 133 • É uma medida mais precisa e constante, que não sofre influências externas
  • 24. Evolução da Marcação de Tempo • Atualmente: – TAI (Tempo Atômico Internacional) • Média de tempo dos relógios atômicos • É mais preciso, porém ainda é necessário ajustá-lo a contagem de tempo solar adotada no dia-a-dia • Ajuste do TAI (Tempo Atômico Internacional) – UTC (Tempo Universal Coordenado) • É o TAI ajustado ao tempo solar • O ajuste é feito inserindo-se segundos “bissextos” • Vem gradativamente substituindo o uso do GMT • Acesso: NIST (rádio WWV) e GEOS (Satélite)
  • 25. Evolução da Marcação de Tempo • Relógio Atômico Brasileiro (USP)
  • 26. Evolução da Marcação de Tempo • NIST – National Institute of Standards and Technology
  • 27. Evolução da Marcação de Tempo • GEOS
  • 28. Algoritmo de Cristian • Funcionamento: • Usa um servidor de tempo, que é um computador equipado com receptor UTC • As demais máquinas enviam mensagens para o servidor de tempo perguntando pelo tempo corrente • O servidor de tempo responde o mais rápido possível, com uma mensagem contendo o tempo UTC corrente • Cada máquina, ao obter a resposta, ajusta seu clock • O servidor de tempo é PASSIVO. O ajuste depende da inciativa das demais máquinas • Problemas: • O tempo nunca pode andar para trás (os ajustes são sempre progressivos) • A consulta ao servidor de tempo gasta um tempo não-nulo (o retardo pode vir a ser grande)
  • 29. Algoritmo de Cristian (cont.) • Mais um problema: – É uma solução altamente centralizada • Para minimizar a centralização, pode-se adotar os seguintes caminhos: – Ter vários servidores com receptor UTC – As demais máquinas passam a solicitar a hora por meio de mensagens multicast • Esta solução é um algorítmo probabilístico, ou seja: – Só se obtém uma sincronização aceitável se o tempo de ida e volta das mensagens forem curtos o suficiente se comparados a precisão desejada
  • 30. Algoritmo de Cristian (cont.) • Solução para os ajustes sempre progressivos • A mudança no clock deve ser feita de forma gradativa e sempre avançando o relógio • Se o ajuste é de 10 ms, basta adicionar 9 ms para atrazar ou 11 ms para adiantar
  • 31. Algoritmo de Cristian (cont.) • Solução para o retardo na mensagem • Tentar medir (estimativa) o tempo de transmissão T0 .................. tempo de envio da requisição T1 .................. recebimento da resposta (T1 - T0)/2 ....... tempo aproximado de propagação da mensagem I .................... tempo de tratamento da interrupção (T1 - T0 - I)/2 ... estimativa ainda mais precisa • Outra solução: – Realizar várias medidas e calcular a médias de tempo (descartando valores fora de um certo limite)
  • 32. Algoritmo de Berkeley • Funcionamento • O servidor de tempo é uma entidade ATIVA, que consulta periodicamente cada uma das máquinas do sistema para saber o tempo corrente em cada uma delas • Baseado nas respostas obtidas: – Calcula o tempo médio e o ajuste que cada máquina terá que fazer – Informa às demais máquinas para adiantar ou atrasar seus clocks, tornando-se iguais ao tempo médio calculado – Não informa a hora corrente e sim o ajuste a ser feito – O cálculo que o servidor faz também leva em conta a existência de respostas “absurdas” (muito fora da média das demais máquinas). – Estas repostas “absurdas” são descartadas do cáculo de ajuste para evitar um desvio indesejado dos resultados
  • 33. Algoritmo de Berkeley • A precisão deste algoritmo também depende do tempo máximo gasto pelas mensagens de ida e volta • Indicado para: – Quando nenhuma das máquinas tem um receptor UTC – A necessidade de precisão no ambiente é pequena
  • 34. Algoritmo de Berkeley (cont.) • Problemas: – O ajuste do servidor de tempo deve ser feito periodicamente por um operador (de forma manual) – É uma solução altamente centralizada • Para contornar esta fragilidade, ao se perceber que o servidor de tempo falhou, elege-se outro servidor para o seu lugar • O problema agora passa a ser como determinar que o servidor de tempo falhou
  • 35. Network Time Protocol • Os algorítmos de Cristian e Berkeley , embora eficientes, se dedicam mais a redes pequenas e intranets – Em ambientes com uma grande quantidade de máquinas, como a Internet, é quase impossível garantir o bom funcionamento destas duas soluções • Pela natureza assíncrona das operações desempenhadas na web • Pela ausência de garantia de entrega de mensagens em um tempo razoável
  • 36. Network Time Protocol (cont.) • O NTP foi projetado como um serviço e protocolo para distribuir informações de tempo pela Internet • Objetivos: – Ser um serviço para clientes internet se sincronizarem pelo UTC, superando atrasos e perdas de mensagens • Isso é feito por meio de técnicas estatísticas de filtragem da informação – Fornecer um serviço confiável que sobreviva a longas perdas de conectividade • Usando servidores e rotas redundantes para circulação das mensagens
  • 37. Network Time Protocol (cont.) • Características: – Permite sincronização razoavelmente frequente dos clientes • Para compensar falhas originadas na quantidade de clientes e servidores interagindo – Fornece proteção ao serviço de tempo contra interferências acidentais ou intencionais • Autenticação, validação de mensagens
  • 38. Network Time Protocol (cont.) • Funcionamento: – O NTP é formado por uma rede de servidores na internet divididos pela seguinte hierarquia: • Servidores Primários – São máquinas conectadas diretamente a uma fonte de tempo UTC • Servidores Secundários – Servidores que se sincronizam com os servidores primários • Demais servidores – Organizados em uma estrutura de árvore – Cada “galho” se sincroniza com sua “raiz” – A “árvore” é composta de sub-redes de sincronização
  • 39. Network Time Protocol (cont.) • Funcionamento: – Cada nível da árvore é chamado de “stratum” • Stratum 1: servidores primários (raiz) • Stratum 2: servidores secundários • Stratum 3: outros servidores • Stratum 4: mais servidores • e assim por diante... – Quanto mais alto o número do stratum, a tendência é que a precisão seja menor neste nível – É possível realizar alterações na hierarquia para superar indisponibilidade de serviço. Por exemplo: • “Promover” máquinas mapa um stratum mais alto • Deslocar “galhos” inteiros para se sincronizarem com outros servidores
  • 40. Network Time Protocol (cont.) • Como a sincronia é feita? – As mensagens são transmitidas via protocolo UDP – A mensagem pode ser enviada de 3 modos: • Modo 1: Multicast – Ideal para redes locais de alta velocidade – Servidores de tempo enviam mensagem e as demais máquinas ajustam seus relógios – Possui uma margem de erro grande, que resulta em baixa precisão
  • 41. Network Time Protocol (cont.) • Modo 2: RPC – Usa a solução de Cristian para sincronizar – É mais preciso que a opção de multicast • Modo 3: Simétrico – Adotado em máquinas cujo stratum é baixo – É a opção mais precisa – Os servidores trocam mesagens de tempo entre si e as informações são armazenadas para uso posterior visando melhorar cada vez mais a sincronia