• Em um sistema distribuído, o tempo não é ambíguo.
• Quando um processo quer saber a hora, faz uma chamada de sistema, e o núcleo responde.
• Se o processo A perguntar a hora, e um pouco mais tarde o processo B também perguntar, o valor que B obtém será mais alto.
! "
#
• Em Unix, programas grandes são normalmente divididos em vários arquivos*fonte, de modo que uma alteração em um
arquivo*fonte requer que apenas um arquivo seja recompilado (e não todos).
! "
#
• Se o horário do arquivo*fonte input.c for 21:51 e o horário do arquivo*objeto input.o for 21:40, o arquivo input.c deve ser recompilado.
• Se o horário do arquivo*fonte output.c for 21:44 e o horário do arquivo*objeto output.o for 21:45, o arquivo output.c não será recompilado.
! "
#
• Imagine o que poderia acontecer se em um SD não houvesse nenhum acordo global sobre horários.
• Suponha que o horário do arquivo*fonte output.o for 21:44 e o horário do arquivo*objeto output.c tenha sido modificado mas recebeu o horário 21:43, porque o relógio estava um pouco atrasado.
21:44 21:45 21:46 21:47
21:42 21:43 21:44 21:45
Computador no qual o compilador executa
Computador no qual o editor executa
Criado output.o
Criado output.o
Horário de acordo com o relógio local
! "
#
• make não chamará o compilador e o programa binário executável resultante conterá uma
mistura de arquivos*objeto dos arquivos*fonte antigos e dos fonte novos.
• Provavelmente falhará e o programador ficará confuso tentando entender o que há de errado no código.
21:44 21:45 21:46 21:47
Computador no qual o compilador executa
Criado output.o
Horário de acordo com o relógio local
$
• Com a invenção do relógio atômico em 1948, tornou*se possível medir o tempo com muito mais exatidão.
• O segundo é o tempo que um átomo de Césio 133 leva para fazer 9.192.631.770 transições.
• Esse número foi escolhido de modo a fazer com que o segundo atômico fosse igual ao segundo solar médio no ano em que foi lançado.
% $
• Seja C o valor do relógio 'ideal' (hora UTC)
• Seja Cp o valor do relógio no computador p
• Se t é o tempo no relógio em sincronia com a hora UTC, então temos o tempo em p dado por Cp(t)
• & para todo p e para todo t:
$
• A defasagem do relógio (def) denota a magnitude de diferença entre as
frequências de dois relógios é dada por:
def = C’p(t) – 1
• O deslocamento em relação (desloc) à uma hora específica t é dada por:
$
'
(
• Considere um SD com 2 máquinas (1 e 2). Ambas possuem um relógio físico não ideal. Após a inicialização sincronizada das duas máquinas, passados 5 segundos (UTC) o relógio da máquina 1 marcava 5,001s e o relógio da máquina 2 marcava 4,997s.
a) Calcule a função que determina o tempo dos relógios das máquinas 1 e 2.
b) Calcule o deslocamento temporal dos relógios 1 e 2.
$
'
(
a) Calcule a função que determina o tempo dos relógios das máquinas 1 e 2.
• Primeiro devemos esboçar o gráfico temporal:
• Como todos os relógios inicializaram
sincronizados, logo o tempo zero é igual para ambos os relógios.
$
'
(
Relembrando.... como obter a equação de uma reta??
A equação de uma reta qualquer é dada por:
y = ax + b
Neste exercício, a reta azul (relógio da máquina 1) é dada por:
Cp1(t) = a1t +b1
Neste exercício, a reta vermelha (relógio da máquina 2) é dada por: a) Calcule a função que determina o tempo dos relógios das
13
$
'
(
Como descobrir os coeficientes da reta (a1 e b1)?
• A reta é formada por inúmeros pontos formados por (t, Cp1(t));
• Quando t = 0, Cp1 (0) = 0, logo substiuindo esse ponto na equação da reta, temos:
0 = a1.0 + b1 Logo ) * +
• Quando t = 5,001, Cp1 (0) = 5, logo substiuindo esse ponto na equação da reta, temos:
5 = a1 (5,001) + 0
a) Calcule a função que determina o tempo dos relógios das máquinas 1 e 2.
Logo a equação da reta que descreve o relógio da
máquina 1 é dada por:
$
'
(
Como descobrir os coeficientes da reta (a2 e b2)?
• A reta é formada por inúmeros pontos formados por (t, Cp2(t));
• Quando t = 0, Cp2 (0) = 0, logo substiuindo esse ponto na equação da reta, temos:
0 = a2.0 + b2 Logo )/ * +
• Quando t = 4,997, Cp2 (0) = 5, logo substiuindo esse ponto na equação da reta, temos:
a) Calcule a função que determina o tempo dos relógios das máquinas 1 e 2.
Logo a equação da reta que descreve o relógio da
$
'
(
b) Calcule o deslocamento temporal dos relógios 1 e 2.
deslocp1(t) = Cp1 - t
deslocp1(t) = 5,001 – 5
deslocp1(t) = 0,001s
deslocp2(t) = Cp2 - t
deslocp2(t) = 4,997 – 5
$
'
(
c) Calcule a defasagem temporal dos relógios 1 e 2.
Cp2(t) = 1,0006 t
0006 , 1 2 = dt dCp Cp1(t) = 0,9998 t
9998 , 0 1 = dt dCp
defp1(t) = 0,9998 – 1
defp1(t) = – 0,0002s
defp2(t) = 1,0006 – 1
$ % 0
• Uma abordagem comum a muitos protocolos é deixar que os clientes consultem um servidor de tempo.
• Este pode fornecer a hora corrente . Porém ao receber a hora exata e considerando o atraso da mensagem, a hora
fornecida estará desatualizada.
• A solução é achar uma boa estimativa para esses atrasos e corrigir a hora recebida.
• Algoritmo de Cristian
$
%
• A máquina A enviará uma requisição ao servidor do tempo B com uma marca de tempo registrará a hora em que recebeu a requisição (T2).
$
%
• Considera*se que os atrasos de propagação de A para B é o mesmo de B para A, logo:
T2 – T1 ≈ T4 – T3
• O deslocamento de A em relação a B pode ser estimado como:
2
)
(
)
(
2
3 4 12
T
T
T
T
dT
dT
$
%
1 "
2
• Algoritmo usado para a sincronização interna de um grupo de computadores.
• 'Servidor de tempo' é ativo ) e coleta os valores de relógios de outras máquina
• daemon do tempo calcula a média de horário de todas as máquinas: Hora atual é resultante de uma média.
• O daemon do tempo envia à todas as máquinas o total de tempo em que os relógios devem adiantar/atrasar.
3
• Até aqui, consideramos que a sincronização de relógios está naturalmente relacionada com a hora real.
3
3
• Para sincronizar relógios lógicos, Lamport definiu uma relação
denominada .
• A expressão → ) é lida como “a acontece antes de b” e
significa que todos os processos concordam que primeiro ocorre um evento e, depois um evento ).
• A relação acontece antes pode ser observada em duas situações:
a) Se e ) são eventos do mesmo processo, e ocorre antes de
), então → ) é verdadeira.
b) Se é o evento de uma mensagem sendo enviada por um
3
3
• Uma mensagem não pode ser recebida antes de ser enviada, ou até ao mesmo tempo que é enviada, visto que ela leva uma
quantidade de tempo finita, diferente de zero, para chegar.
• A relação → ) é transitiva, portanto se → ) e ) → , então → .
3
3
• Considere 3 processos representados na figura a seguir:
• Os processos executam em
máquinas diferentes, cada uma com seu próprio relógio, que funciona com sua própria velocidade.
• Como podemos ver, quando o relógio pulsa 6 vezes no
processo P1, pulsou 8 vezes no processo P2 e 10 vezes no
3
3
• Considere 3 processos representados na figura a seguir:
• No tempo 6, o processo P1 envia a mensagem ao processo P2.
3
3
• Considere 3 processos representados na figura a seguir:
• No tempo 60, o processo P3
envia a mensagem e chega em P2 aos 56s.
• No tempo 56, o processo P2
envia a mensagem e chega em P1 aos 54s.
3
3
• Considere 3 processos representados na figura a seguir:
• A solução de Lamport resulta diretamente da relação
“acontece antes”.