Sistemas de Informa¸c˜ao – Univ´as
Roberto Ribeiro Rocha
Abril de 2014
Sum´
ario
1 Objetivos 1
2 Motiva¸c˜ao 1
3 Introdu¸c˜ao 1
4 Tempo F´ısico 1
4.1 Rel´ogios f´ısicos . . . 1 4.2 Algoritmo de Cristian . . . 2
5 Rel´ogios L´ogicos 3
5.1 Eventos . . . 3 5.2 Tempo l´ogico - Causalidade . . . 3
6 Rel´ogio l´ogico de Lamport 4
7 Exclus˜ao m´utua em um sistema distribu´ıdo 8
7.1 Um algoritmo centralizado . . . 8 7.2 Um algoritmo distribu´ıdo . . . 9 7.3 Outros exemplos de uso de rel´ogio l´ogico . . . 10
8 Considera¸c˜oes Finais 11
1
Objetivos
• Apresentar a ideia que envolve Rel´ogios L´ogicos, suas caracter´ısticas e funciona-mento.
• Apresentar no¸c˜oes sobre Sincroniza¸c˜ao em Sistemas Distribu´ıdos.
2
Motiva¸c˜
ao
Entender o funcionamento e a utilidade dos Rel´ogios L´ogicos na sincroniza¸c˜ao de processos em sistemas distribu´ıdos.
3
Introdu¸c˜
ao
Em um ambiente distribu´ıdo, cada processo ´e executado em uma m´aquina, indepen-dentemente de outros processos, por´em eles se comunicam atrav´es de mensagens que s˜ao enviadas de um remetente at´e um destinat´ario.
Essas mensagens devem ser recebidas e processadas na ordem que foram enviadas, por´em atrasos no meio de comunica¸c˜ao podem afetar essa premissa, gerando resultados diferentes do esperado.
N´os temos a necessidade que o sistema distribu´ıdo como um todo tenha um com-portamento sincronizado, que ´e obtido atrav´es do uso de Rel´ogios L´ogicos.
Em sistemas com ´unica CPU, se resolve esse problema via sem´aforos e monitores. Por´em estes m´etodos n˜ao s˜ao adequados para sistemas distribu´ıdos, pois as partes envol-vidas n˜ao compartilham o mesmo espa¸co de endere¸camento.
4
Tempo F´ısico
Aqui precisamos esclarecer a maneira como ´e tratado o tempo. A no¸c˜ao de tempo f´ısico ´e relativamente problem´atica em sistemas distribu´ıdos, devido `a sincroniza¸c˜ao f´ısica dos clocks.
4.1
Rel´
ogios f´ısicos
S˜ao dispositivos que geram interrup¸c˜oes continuamente, utilizando frequˆencia de hardware. Cada interrup¸c˜ao pode ser interpretada por um software, gerando um n´umero (timestamp), usados para marcar qualquer evento dos processos.
Por´em o hardware ´e sujeito a atrasos, devido a fenˆomenos naturais. Assim existem certas dificuldades de sincroniza¸c˜ao f´ısica:
• Definir o tempo de propaga¸c˜ao de uma mensagem na rede;
• Possibilidade de falhas nos processadores ou meios de comunica¸c˜ao.
Para sincronizar um rel´ogio f´ısico, normalmente existe uma referˆencia: UTC (Uni-versal Coordinated Time), que usa o rel´ogio atˆomico (de C´esio 133). Existem v´arios transmissores de r´adio no mundo enviando regularmente um pulso no in´ıcio de cada se-gundo UTC. Por´em existe o tempo gasto para a mensagem ser transmitida e recebida. Ent˜ao se perde de 1 a 10 ms. E mais ainda, cada receptor pode ter diferentes tempos de recebimento. Assim o problema de sincroniza¸c˜ao ainda persiste.
4.2
Algoritmo de Cristian
Esse algoritmo foi proposto para fazer a sincroniza¸c˜ao de rel´ogios f´ısicos, onde pe-riodicamente uma m´aquina cliente envia uma mensagem para um servidor de rel´ogio pedindo o valor da hora corrente. Otime server responde o mais r´apido que puder, com uma mensagem contendo seu tempo corrente, conforme mostrado na Figura 1.
Figura 1: Algoritmo de Cristian
Assim, quando o emissor recebe a resposta, ele atualiza seu clock.
Por´em ainda existem 2 problemas:
• a diferen¸ca entre os rel´ogios do cliente e servidor e
5
Rel´
ogios L´
ogicos
V´arias aplica¸c˜oes interessam na ordem em que os eventos ocorreram, n˜ao se impor-tando muito com o tempo real da ocorrˆencia.
Um rel´ogio l´ogico mede o tempo discreto, ou seja, um contador que acumula o n´umero de eventos ocorridos entre um evento de referˆencia e um outro evento.
5.1
Eventos
´
E a ocorrˆencia de uma a¸c˜ao executada por um processo, e mesmo se a mesma a¸c˜ao for executada v´arias vezes, cada execu¸c˜ao dela ´e um evento.
Um processo ´e composto por uma sequˆencia de eventos: e1,e2,. . .,en. Esses eventos podem ser dos seguintes tipos: internos, envio e recebimento de mensagens.
Figura 2: Um processo e seus eventos
Figura 3: Dois processos e seus eventos
Figura 4: Trˆes processos e seus eventos
Aten¸c˜ao: Nem sempre ´e necess´ario o rel´ogio ser sincronizado, mas sim estabelecer uma ordem dos eventos.
5.2
Tempo l´
ogico - Causalidade
“N˜ao conseguimos sincronizar os rel´ogios f´ısicos perfeitamente logo n˜ao podemos utiliz´a-los para determinar a ordem de ocorrˆencia de dois eventos quaisquer num Sistema Distribu´ıdo” (Lamport, 78)
Solu¸c˜ao:
Ao inv´es de sincronizarmos os rel´ogios f´ısicos podemos ordenar os eventos num Sistema Distribu´ıdo.
A sincroniza¸c˜ao dos rel´ogios l´ogicos ocorre seguindo a rela¸c˜ao deprecedˆencia cau-sal entre os eventos.
Precedˆencia Causal ou ordem causal ou causalidade ou rela¸c˜ao de ordem
ourela¸c˜ao happens before (hb)
Essa rela¸c˜ao ´e representada por: →
A express˜ao a → b ´e lida como “a precede b” e significa que todos os processos concordam com o fato de primeiro acontecer o evento a e depois ocorrer o eventob.
A rela¸c˜ao de causa e efeito ´e regida por 3 regras:
1. Se a e b s˜ao eventos no mesmo processo nessa ordem, ent˜ao a→b;
2. Sea´e o evento do envio de uma mensagem por um processo eb´e o evento da mesma mensagem sendo recebida pelo processo de destino, ent˜ao a→b;
3. Se a→b e b→c, ent˜ao a→c. Rela¸c˜ao transitiva.
Eventos concorrentes s˜ao representados da seguinte forma: a||b
onde percebemos que ¬(a → b) ∨ ¬(b → a), ou seja, n˜ao ´e poss´ıvel determinar qual evento ocorreu antes ou depois.
Exerc´ıcio 1 –
Utilizando as imagens das Figuras 3 e 4, fazer:
1. Ordenar os eventos de acordo com suas ocorrˆencias, ou seja escrever a sequˆencia de ocorrˆencia dos eventos para o sistema como um todo.
2. Indicar qual a rela¸c˜ao de causalidade entre os eventos abaixo, para cada figura:
a c a d a e a f b c b d
b e b f c e c f d e d f
Tabela 1: Rela¸c˜ao entre os eventos
Exerc´ıcio 2 –
Ordenar os eventos da imagem a seguir.
6
Rel´
ogio l´
ogico de Lamport
´
Figura 5: Exerc´ıcio 2.
Ele mede o tempo interno, ou seja, um contador (L) que acumula o n´umero de eventos ocorridos entre um evento de referˆencia e um outro evento interno do processo.
A rela¸c˜ao entre → e Lamporttimestamps ´e:
e1→e2 =⇒L(e1)< L(e2) (1)
Cada processo P item seu rel´ogio l´ogico designado por Li.
Lamport definiu 3 regras de atualiza¸c˜ao do rel´ogio, onde ostimestampss˜ao colocados nos eventos de acordo com as regras abaixo (Li ´e o rel´ogio do processoi):
1. Evento local: Li ´e incrementado antes de coloc´a-lo como timestamp num evento local;
2. Send: quando P i envia uma mensagemm,P i copia em m o valor do seu Li;
3. Receive: quando P j recebe uma mensagem m com timestamp t, P j faz Lj =
max(Lj, t) + 1.
Exemplo:
• L1, L2 e L3 s˜ao inicializados com zero
• No envio de m1,P1 envia L1 = 2 junto na mensagem
• P2 recebe m1 e faz L2 = max(0,2) + 1
• No envio de m2,P2 envia L2 = 4 junto na mensagem
• P3 recebe m2 e faz L3 = max(1,4) + 1
Importante:
Figura 6: Trˆes processos e seus eventos enumerados
• Por´em o contr´ario n˜ao ´e verdadeiro: L(e1)< L(e2) n˜ao implica e1→e2
Exemplo: na imagem anterior L(e)< L(b) por´em n˜ao h´a a garantia que o evento e
sempre ocorrer´a antes de b, pois e||b.
Assim o Rel´ogio L´ogico de Lamport define uma ordem parcial de eventos que satisfaz a rela¸c˜ao causal (HB) entre eventos, mas n˜ao completamente.
Exerc´ıcio 3 –
Enumerar corretamente os eventos das imagens a seguir
utilizando o rel´ogio l´ogico de Lamport.
Figura 7: Exerc´ıcio 3.1.
Figura 8: Exerc´ıcio 3.2.
7
Exclus˜
ao m´
utua em um sistema distribu´ıdo
Sistemas envolvendo m´ultiplos processos s˜ao frequentemente mais facilmente progra-mados utilizando regi˜oes cr´ıticas. Quando um processo deve ler ou atualizar estruturas de dados compartilhadas, ele primeiro tenta garantir exclus˜ao m´utua para o acesso a regi˜ao cr´ıtica.
Em um ambiente centralizado a tarefa de impor a exclus˜ao m´utua ´e facilitada pelo uso de sem´aforos ou monitores. Em ambientes distribu´ıdos impor a exclus˜ao m´utua exige cuidado maior.
7.1
Um algoritmo centralizado
A maneira mais direta de implementar exclus˜ao m´utua em um sistema distribu´ıdo ´e simular o comportamento de um sistema com um ´unico processador. Um processo ´e eleito coordenador, geralmente executando em uma m´aquina com o endere¸co de rede mais alto.
Quando um processo deseja entrar na regi˜ao cr´ıtica, ele envia uma mensagem para o coordenador, solicitando e informando a regi˜ao cr´ıtica que ele deseja entrar.
Se nenhum outro processo estiver na regi˜ao cr´ıtica, o processo coordenador envia uma mensagem de resposta (reply) garantindo permiss˜ao ao processo. Quando a mensa-gem chega, o processo entra na regi˜ao cr´ıtica.
Se existir um outro processo na regi˜ao cr´ıtica, o processo coordenador pode tomar duas atitudes (dependendo da implementa¸c˜ao do sistema):
1. Enviar uma mensagem reply com o conte´udo permission denied.
2. N˜ao enviar resposta enquanto a regi˜ao cr´ıtica n˜ao estiver dispon´ıvel.
Quando um processo sai da regi˜ao cr´ıtica ele envia uma mensagem avisando o pro-cesso coordenador. Se houver propro-cesso aguardando, o coordenador retira o primeiro da fila e envia uma mensagem liberando o processo.
´
7.2
Um algoritmo distribu´ıdo
Um algoritmo distribu´ıdo pode ser alcan¸cado com a ordena¸c˜ao total dos eventos proposta por Lamport (1978).
A seguir ser´a descrito o algoritmo apresentado por Ricart e Agrawala (1981).
Quando um processo quer entrar na regi˜ao cr´ıtica, ele constr´oi uma mensagem con-tendo o nome da regi˜ao cr´ıtica que ele deseja utilizar, o n´umero de identifica¸c˜ao do pro-cesso, e o tempo corrente. Essa mensagem ´e enviada para os outros processos, inclusive ele pr´oprio. O envio da mensagem ´e assumido como confi´avel, ou seja, toda mensagem ter´a confirma¸c˜ao.
Quando um processo recebe uma mensagem de requisi¸c˜aorequest de outro processo, a sua a¸c˜ao depende de seu estado com respeito `a regi˜ao cr´ıtica descrita na mensagem. Trˆes casos devem ser distinguidos:
1. Se o receptor n˜ao est´a na regi˜ao cr´ıtica e n˜ao deseja entrar nela, ele envia de volta uma mensagem de OK para o emissor.
2. Se o receptor est´a na regi˜ao cr´ıtica, ele n˜ao responde a mensagem, ao contr´ario, ele coloca a requisi¸c˜ao em um fila de espera.
3. Se o receptor quer entrar na regi˜ao cr´ıtica, mas ainda n˜ao conseguiu, ele compara o timestamp da mensagem que chegou com otimestamp da mensagem que ele enviou. A menor vence. Se a mensagem que chegou ´e menor, o receptor envia uma mensa-gem de OK para o processo emissor. Se a sua mensagem ´e a que possui o menor timestamp, o receptor coloca na fila a mensagem de requisi¸c˜ao e n˜ao responde ao emissor.
Ap´os enviar todas as mensagens de requisi¸c˜ao da regi˜ao cr´ıtica, o processo fica bloqueado aguardando a resposta de todos os outros processos. Assim que todas as mensagens de permiss˜ao chegarem, ele pode entrar na regi˜ao cr´ıtica.
Exerc´ıcio 4 –
Baseado na situa¸c˜ao da Figura 10, fa¸ca:
1. desenhar os eventos de envio e recebimento das mensagens, indicando as informa¸c˜oes necess´arias para que o processo P1 entre e saia da regi˜ao cr´ıtica, utilizando o al-goritmo distribu´ıdo. Enumere os eventos utilizando as regras do rel´ogio l´ogico de Lamport. Escreva, abreviadamente em cada mensagem, qual ´e seu conte´udo: req ou ok.
2. desenhar os eventos de envio e recebimento das mensagens indicando as informa¸c˜oes necess´arias para que o processo P1 entre e saia da regi˜ao cr´ıtica, por´em agora utilizando o algoritmo centralizado. Sugest˜ao: desenhar um processo extra para fazer o papel do processo coordenador.
Figura 10: Exerc´ıcio 4.
7.3
Outros exemplos de uso de rel´
ogio l´
ogico
• Exclus˜ao M´utua em sistemas distribu´ıdos;
• Depura¸c˜ao (debugging);
• Algoritmos para elei¸c˜ao;
• Detec¸c˜ao de termina¸c˜ao;
• Deadlock (Deadlock S˜ao Jo˜ao-Ipiranga);
• Coleta de lixo (recursos n˜ao mais usados);
• Monitoramento em geral (Deadlock S˜ao Jo˜ao-Ipiranga, Editora, Bancos);
Exerc´ıcio 5 –
Dada a Figura 11, complete o desenho com as mensagens
e o n´
umero de cada evento at´e que o processo
P
1 consiga entrar na regi˜ao
cr´ıtica.
Figura 11: Exerc´ıcio 5.
8
Considera¸c˜
oes Finais
A ordena¸c˜ao de eventos em um sistema distribu´ıdo ´e um assunto importante pois afetam diretamente nos resultados esperados da execu¸c˜ao. O uso do Rel´ogio L´ogico de Lamport permite que eventos dependentes sejam executados em sua pr´opria ordem, inde-pendente do rel´ogio f´ısico, por´em n˜ao impondo uma ordem total dos eventos. Com o uso de rel´ogios l´ogicos podemos implementar certos algoritmos que ajudam a resolver v´arios problemas em um ambiente distribu´ıdo.
9
Bibliografia
Sincroniza¸c˜ao em Sistemas Distribu´ıdos - Edmilson Marmo Moreira - UNIFEI
LAMPORT, L. Time, clocks, and the ordering of events in a distributed system. Communications of the ACM, v. 21, n. 7, p. 558–565, July 1978.
COULOURIS, G.; DOLLIMORE, J.; KINDBERG, T. Distributed Systems - Con-cepts and Design. 2. ed., 1994
TANENBAUM, A. S. Distributed Operating Systems. Prentice Hall, 1995.