SlideShare une entreprise Scribd logo
1  sur  8
Télécharger pour lire hors ligne
http://informaticaentretenimento.blogspot.com/



CEP- CENTRO DE EDUCAÇÃO PROFISSIONAL DE ITAJUBÁ

             TÉCNICO DE INFORMÁTICA




                     Turma: V2I

                Verônica Veiga. Nº: 17




                Sistema Operacional

                Algoritmo de Lamport




                              Trabalho apresentado na disciplina:

                               Sistema Operacional. Do professor

                               Mário. No curso técnico em informá-

                               tica. Do CEP- Centro de Educação

                               Profissional de Itajubá.




               21 de setembro de 2011

                    ITAJUBÁ-MG
Algoritmo de lamport
                                    Introdução:
Lamport formou-se em matemática pelo Massachusetts Institute of Technology em 1960,
com mestrado e doutorado em matemática pela Universidade Brandeis, concluídos
respectivamente em 1963 e 1972. O tema de sua tese de doutorado foram singularidades
em equações diferenciais parciais analíticas.

Após a graduação, ele começou sua carreira como cientista computacional
noMassachusetts Computer Associates, SRI International, Digital, e Compaq. Em 2001, ele
se juntou à Microsoft Research em Mountain View, na California. Suas pesquisas
contribuíram com a fundação da teoria de sistemas distribuídos. Alguns dos seus mais
notáveis papers nesta área são os seguintes:

     "Time, Clocks, and the Ordering of Events in a Distributed System"
     "Distributed snapshots: determining global states of distributed systems"
     "The Byzantine Generals Problem"
     "The Part-time Parliament"



Esses artigos introduziram novos conceitos na ciência computacional, tais como relógios
lógicos (logical clocks) e a relação antes-depois, bem como as falhas Bizantinas. Estes são
alguns dos artigos mais citados no campo de sistemas distribuídos, e descrevem
algoritmos para a resolução de muitos problemas fundamentais em sistemas distribuídos,
incluindo:




     O algoritmo de Paxos para consenso the Paxos
     O algoritmo da padaria para exclusão mútua de múltiplos threads em um sistema de
    computadores que requerem as mesmas fontes ao mesmo tempo.
     O algoritmo Snapshot para determinação dos estados globais consistentes.

Dr. Lamport recebeu quatro títulos do Doutor 'Honoris Causa' por universidades europeias:
Universidade de Rennes e Universidade Christian Albrechts

de Kiel em 2003, EPFL em 2004, University of Lugano em 2006. Em 2004 ele também
recebeu o IEEE Piore Award por causa de suas expressivas contribuições no campo do
processamento de informação, em relação à ciência computacional, contribuído
significativamente ao avanço e ao melhoramento da sociedade.

                     http://informaticaentretenimento.blogspot.com/
Fora da ciência computacional, o Dr. Lamport é melhor conhecido como sendo o
desenvolvedor inicial do sistema de preparação de documentos, o LaTeX.




                               Relógios de Lamport

Relógios lógicos de Lamport são mecanismos usados em algoritmos de sincronização de
relógio baseados na relação happens-before definida por Lamport.

Marcas temporais

Nesses algoritmos cada processo do sistema distribuído mantém um contador crescente e
monotônico C (relógio lógico) e cada evento a possui uma marca temporal C(a) na qual
todos os processos concordam. Dessa forma, os eventos estão sujeitos às seguintes
propriedades derivadas da relação happens-before:

  1. Se a acontece antes de b no mesmo processo, então C(a) < C(b).
  2. Se a e b representam, respectivamente, o envio e o recebimento de uma mensagem,
     então C(a) < C(b).
  3. Sejam a e b eventos quaisquer, então C(a) ≠ C(b)

                       http://informaticaentretenimento.blogspot.com/
Ordenação parcial ou total

Ordenação total dos eventos se dá quando é possível definir a ordem de quaisquer dois
eventos. De acordo com as propriedades dos contadores (timers) Lamport nenhum par de
eventos terá uma mesma marcação temporal, pois basta ordenar os eventos de acordo
com o tempo que eles ocorrem em seus processos e desfazer empates comparando uma
propriedade arbitrária dos processos, como por exemplo, seu identificador. Quando este
empate não é desfeito, uma ordenação parcial é obtida.

Como em vários algoritmos distribuídos a ordenação total é necessária para evitar
ambiguidades, o algoritmo de Lamport é bastante citado na literatura. Nos algoritmos de
disputa a recursos compartilhados, apenas um processo pode usar um recurso por vez,
então os processos devem sincronizar para evitar conflitos, dessa forma ordenação total é
um requisito para esse algoritmo.

Regras

Os relógios de Lamport obedecem as seguintes regras:

   1. Um processo incrementa seu contador antes de cada evento daquele processo;
   2. Quando um processo envia uma mensagem, esse inclui o valor de seu contador
      junto da mensagem;
   3. No recebimento de uma mensagem, o processo atualiza seu contador para um valor
      maior que o máximo entre seu próprio valor e o valor de contador recebido na
      mensagem.




Algoritmos distribuídos

Alguns algoritmos distribuídos podem fazer uso dos relógios de Lamport, tais quais:



Exclusão mútua

Em sistemas distribuídos onde há disputa de recursos normalmente há a implementação
de regiões críticas. Quando um processo precisa acessar uma certa informação
compartilhada, este primeiramente precisa acessar a região crítica e todos os processos
devem concordar que este processo está nesta região, a fim de garantir que nenhum outro
processo acessará o mesmo dado ao mesmo tempo

Uma solução centralizada para o problema seria adotar um processo coordenador que
seria responsável por receber solicitações para a região crítica e dar permissões de
entrada para o processo solicitante quando possível.

É fácil perceber que a solução garante exclusão mútua e é justa, porém o processo
coordenador se torna um possível gargalo de performance e um ponto único de falha.

                     http://informaticaentretenimento.blogspot.com/
Para contornar as desvantagens da versão centralizada do algoritmo, versões
descentralizadas foram apresentadas. Lamport em 1978 apresentou uma primeira versão
do algoritmo, e em 1981, Ricart e Agrawala o tornaram mais eficiente.

O algoritmo de Ricart e Agrawala faz uso da ordenação total dos eventos, portanto faz uso
dos relógios de Lamport e funciona da seguinte forma:

   •   Quando um processo quer entrar na região crítica, ele cria uma mensagem contendo
       o nome da região crítica, o número de seu processo e valor de seu contador. E então
       envia essa mensagem para todos os outros processos participantes do sistema.
       Para isso assume-se que o envio das mensagens é confiável.
   •   Quando um processo recebe uma mensagem de requisição de entrada na região
       crítica, três ações podem ser tomadas de acordo com o estado da região crítica:
           o Se ele não está na região crítica nomeada na mensagem e também não que
              entrar na mesma, responde a mensagem com um OK.
           o Se ele ja está na região crítica, ele não responde a mensagem. Ao invés disso,
              ele enfileira a requisição.
           o Se ele quer entrar na região crítica mas ainda não o fez, ele compara a marca
              temporal da mensagem recebida com a marca temporal da mensagem que ele
              enviou para todos. Se a mensagem recebida tiver a menor marca temporal, o
              processo responde com um OK, caso contrário, ele enfileira a requisição.
   •   Após enviar as requisições de entrada na região crítica para todos os outros
       processos, o processo espera as repostas dessas requisições. Uma vez que todas
       as permissões foram recebidas, o processo entra na região crítica.
   •   Ao sair da região crítica o processo envia OK para todos os processos que estão na
       sua fila de requisições e apaga esta fila.

Da mesma forma que o algoritmo centralizado citado acima, com o algoritmo
descentralizado a exclusão mútua é garantida sem deadlock ou starvation. O número de
mensagens trocadas por entrada na região crítica é 2(n-1), onde n é o número de
processos no sistema. Além disso, não há ponto único de falha nessa solução.



Porém, o ponto único de falha agora foi substituído por n pontos de falha. Quando algum
processo falha, ele pára de responder às requisições. Essa falta de resposta pode ser
interpretada como uma negação de permissão, bloqueando as entradas na região crítica
por outros processos. Esse problema pode ser contornando adicionando respostas,
inclusive de negação de permissão, a cada mensagem de requisição. Uma falha de entrega
agora pode ser detectada por timeout.

Outro problema que acaba existindo com o uso do algoritmo distribuído é a necessidade
de uma primitiva de comunicação em grupo. Cada processo agora precisa manter uma
lista dos membros do grupo, percebendo entradas, saídas e falhas desses membros.

Dessa forma, na versão distribuída do algoritmo, todos os processos estão envolvidos em
todas as decisões de entrada na região crítica. Comparando com o algoritmo centralizado
e a suposição de gargalo, se um dos nós não suporta a carga é pouco provável que
forçando a paralelização, fazendo com que todos os nós façam a mesma coisa, venha a
existir a solução para esse gargalo.

                      http://informaticaentretenimento.blogspot.com/
Multicast totalmente ordenado



O algoritmo de multicast totalmente ordenado também faz uso dos relógios de Lamport e
da ordenação total. Ele se faz necessário quando precisamos garantir a mesma sequência
de eventos em todos os processos do sistema, como por exemplo, em uma atualização de
banco de dados replicado em diversas máquinas.



O algoritmo funciona da seguinte forma:



   1. Um processo cria uma mensagem contendo sua marca temporal atual e então faz
      multicast para todos os outros processos do grupo.


   2. Os contadores são atualizados no envio e recebimento das mensagens.

   3. Quando uma mensagem é recebida o processo o coloca em sua fila local de acordo
      com sua marca temporal e aguarda pela confirmação das mensagens enviadas.

Uma mensagem então só é de fato entregue à aplicação quando está na cabeça da fila e
todas confirmações daquela mensagem foram recebidas. Ou seja, o processo garante que
a marca temporal da mensagem entregue é menor que os contadores de outros processos.
Além disso, desempates de marcas temporais de mensagens são feitos através de
identificadores arbitrários dos processos, permitindo a ordenação total dos eventos.



                                      Conclusão:

Lamport ordering (ordenação) são algoritmos de sistemas distribuídos.

Através de observações de como os processos distribuídos deveríam se comportarem,
verificou-se que não importa que um processo que não tem interação com outro, estejam
sincronizados, pois o desempenho de um deles não irá afetar o resultado de outro.

Também não é necessário que todos tenham o clock perfeitamente sincronizados, desde
que todos eles concordem com a ordem que os eventos devem acontecer. Este clock é
chamado de clock lógico.

Exemplo: um processo é encarregado de realizar a compilação de um determinado
arquivo-fonte, outro é responsável por executá-lo, não importa o tempo que o primeiro irá
compilar o arquivo, desde que o segundo processo só execute depois que o arquivo já
esteja compilado.

Algoritmo de Lamport
Usa-se o nome clocks lógicos, ao invés de clocks físicos, usados em sistemas onde se
necessita do tempo correto de ocorrência de cada evento;

Lamport define a relação acontecimento-anterioridade: (a b) que indica que todos os
processos concordam que o evento a acontece primeiro e depois o b.



– Se a e b são eventos no mesmo processo, e a acontece antes de b então a b é verdade.

– Se a é o evento de uma mensagem sendo enviada por um processo e b é o evento de
outro processo recebendo aquela mensagem então a b é verdade.



                                      Algoritmo de Lamport

Se dois eventos acontecem em processos diferentes que não se comunicam, esses
eventos são ditos concorrentes.

• Mensagens são enviadas juntamente com clock da máquina do processo emissor.

• Máquina que recebe mensagem ajusta seu próprio clock caso seja necessário, isto é,
quando seu clock tem um valor igual ou inferior ao da mensagem.

• Pode-se usar número do processo para se resolver empates e implementar um clock
global, isto é, cada evento tem um tempo associado e os tempos associados de todos os
eventos são diferentes.




Fonte:

http://pt.wikipedia.org/wiki/Rel%C3%B3gios_de_Lamport

http://pt.wikipedia.org/wiki/Leslie_Lamport




                Acesse o blog abaixo: E seja bem vindo!
                                  Temos curso online
                        http://informaticaentretenimento.blogspot.com/
http://informaticaentretenimento.blogspot.com/

Contenu connexe

Tendances

Exception Handling
Exception HandlingException Handling
Exception Handlingbackdoor
 
Multi threading
Multi threadingMulti threading
Multi threadinggndu
 
Exception handling in java
Exception handling in javaException handling in java
Exception handling in javaPratik Soares
 
Parallel Algorithms Advantages and Disadvantages
Parallel Algorithms Advantages and DisadvantagesParallel Algorithms Advantages and Disadvantages
Parallel Algorithms Advantages and DisadvantagesMurtadha Alsabbagh
 
C++ Function
C++ FunctionC++ Function
C++ FunctionHajar
 
Java applet - java
Java applet - javaJava applet - java
Java applet - javaRubaya Mim
 
Pipelining
PipeliningPipelining
PipeliningAJAL A J
 
A History of PHP
A History of PHPA History of PHP
A History of PHPXinchen Hui
 
Scylla Summit 2017: How to Use Gocql to Execute Queries and What the Driver D...
Scylla Summit 2017: How to Use Gocql to Execute Queries and What the Driver D...Scylla Summit 2017: How to Use Gocql to Execute Queries and What the Driver D...
Scylla Summit 2017: How to Use Gocql to Execute Queries and What the Driver D...ScyllaDB
 
Multithreading In Java
Multithreading In JavaMultithreading In Java
Multithreading In Javaparag
 

Tendances (20)

Exception Handling
Exception HandlingException Handling
Exception Handling
 
Networking in Java
Networking in JavaNetworking in Java
Networking in Java
 
Linguagem C 09 Ponteiros
Linguagem C 09 PonteirosLinguagem C 09 Ponteiros
Linguagem C 09 Ponteiros
 
Multi threading
Multi threadingMulti threading
Multi threading
 
Exception handling in java
Exception handling in javaException handling in java
Exception handling in java
 
Parallel Algorithms Advantages and Disadvantages
Parallel Algorithms Advantages and DisadvantagesParallel Algorithms Advantages and Disadvantages
Parallel Algorithms Advantages and Disadvantages
 
Lecture 21 - Preprocessor and Header File
Lecture 21 - Preprocessor and Header FileLecture 21 - Preprocessor and Header File
Lecture 21 - Preprocessor and Header File
 
Memory Management
Memory ManagementMemory Management
Memory Management
 
Threads
ThreadsThreads
Threads
 
C++ Function
C++ FunctionC++ Function
C++ Function
 
C# String
C# StringC# String
C# String
 
Java applet - java
Java applet - javaJava applet - java
Java applet - java
 
Pipelining
PipeliningPipelining
Pipelining
 
A History of PHP
A History of PHPA History of PHP
A History of PHP
 
Scylla Summit 2017: How to Use Gocql to Execute Queries and What the Driver D...
Scylla Summit 2017: How to Use Gocql to Execute Queries and What the Driver D...Scylla Summit 2017: How to Use Gocql to Execute Queries and What the Driver D...
Scylla Summit 2017: How to Use Gocql to Execute Queries and What the Driver D...
 
Method overloading
Method overloadingMethod overloading
Method overloading
 
javathreads
javathreadsjavathreads
javathreads
 
Recursividade
RecursividadeRecursividade
Recursividade
 
Java servlets
Java servletsJava servlets
Java servlets
 
Multithreading In Java
Multithreading In JavaMultithreading In Java
Multithreading In Java
 

En vedette

Sistemas Distribuídos - Aula 09 - Tempos, Relogios e Sincronizacao de Tempo
Sistemas Distribuídos -  Aula 09 - Tempos, Relogios e Sincronizacao de TempoSistemas Distribuídos -  Aula 09 - Tempos, Relogios e Sincronizacao de Tempo
Sistemas Distribuídos - Aula 09 - Tempos, Relogios e Sincronizacao de TempoArthur Emanuel
 
Introdução a-redes-cisco
Introdução a-redes-ciscoIntrodução a-redes-cisco
Introdução a-redes-ciscoMarcelo Gama
 
Configurando as ferramentas do Windows Server 2008
Configurando as ferramentas do Windows Server 2008Configurando as ferramentas do Windows Server 2008
Configurando as ferramentas do Windows Server 2008Guilherme Lima
 
Sincronização de um sistema distribuído
Sincronização de um sistema distribuídoSincronização de um sistema distribuído
Sincronização de um sistema distribuídoTiago R. Sampaio
 
Instalação do Windows Server 2008
Instalação do Windows Server 2008Instalação do Windows Server 2008
Instalação do Windows Server 2008Guilherme Lima
 
Sistemas Operacionais - Introducao
Sistemas Operacionais - IntroducaoSistemas Operacionais - Introducao
Sistemas Operacionais - IntroducaoLuiz Arthur
 
Aula 4 - Teste de mesa
Aula 4 - Teste de mesaAula 4 - Teste de mesa
Aula 4 - Teste de mesaPacc UAB
 

En vedette (9)

Sistemas Distribuídos - Aula 09 - Tempos, Relogios e Sincronizacao de Tempo
Sistemas Distribuídos -  Aula 09 - Tempos, Relogios e Sincronizacao de TempoSistemas Distribuídos -  Aula 09 - Tempos, Relogios e Sincronizacao de Tempo
Sistemas Distribuídos - Aula 09 - Tempos, Relogios e Sincronizacao de Tempo
 
Sd05 (si) relógios e sincronização
Sd05 (si)   relógios e sincronizaçãoSd05 (si)   relógios e sincronização
Sd05 (si) relógios e sincronização
 
Introdução a-redes-cisco
Introdução a-redes-ciscoIntrodução a-redes-cisco
Introdução a-redes-cisco
 
Configurando as ferramentas do Windows Server 2008
Configurando as ferramentas do Windows Server 2008Configurando as ferramentas do Windows Server 2008
Configurando as ferramentas do Windows Server 2008
 
Sincronização de um sistema distribuído
Sincronização de um sistema distribuídoSincronização de um sistema distribuído
Sincronização de um sistema distribuído
 
Trabalho: Rede sem fio.
Trabalho: Rede sem fio.Trabalho: Rede sem fio.
Trabalho: Rede sem fio.
 
Instalação do Windows Server 2008
Instalação do Windows Server 2008Instalação do Windows Server 2008
Instalação do Windows Server 2008
 
Sistemas Operacionais - Introducao
Sistemas Operacionais - IntroducaoSistemas Operacionais - Introducao
Sistemas Operacionais - Introducao
 
Aula 4 - Teste de mesa
Aula 4 - Teste de mesaAula 4 - Teste de mesa
Aula 4 - Teste de mesa
 

Similaire à Algoritmo lamport

Gerências de Processos: Sincronização
Gerências de Processos: SincronizaçãoGerências de Processos: Sincronização
Gerências de Processos: SincronizaçãoAlexandre Duarte
 
Um Injetor de Falhas para a Avaliação de Aplicações Distribuídas Baseadas no ...
Um Injetor de Falhas para a Avaliação de Aplicações Distribuídas Baseadas no ...Um Injetor de Falhas para a Avaliação de Aplicações Distribuídas Baseadas no ...
Um Injetor de Falhas para a Avaliação de Aplicações Distribuídas Baseadas no ...Dalton Valadares
 
Estudo sistemas operacionais p2
Estudo sistemas operacionais  p2Estudo sistemas operacionais  p2
Estudo sistemas operacionais p2Gustavo Souza
 
Introdução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptxIntrodução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptxPaulo Cardoso
 
Relógios lógicos
Relógios lógicosRelógios lógicos
Relógios lógicosJunior Asj
 
Regiões críticas dos Sistemas Operacionais
Regiões críticas dos Sistemas OperacionaisRegiões críticas dos Sistemas Operacionais
Regiões críticas dos Sistemas OperacionaisAbadia Cardoso
 

Similaire à Algoritmo lamport (12)

Lamport
LamportLamport
Lamport
 
SincronizacaoDist.pdf
SincronizacaoDist.pdfSincronizacaoDist.pdf
SincronizacaoDist.pdf
 
Sd06 (si) exclusão mútua
Sd06 (si)   exclusão mútuaSd06 (si)   exclusão mútua
Sd06 (si) exclusão mútua
 
Gerências de Processos: Sincronização
Gerências de Processos: SincronizaçãoGerências de Processos: Sincronização
Gerências de Processos: Sincronização
 
Um Injetor de Falhas para a Avaliação de Aplicações Distribuídas Baseadas no ...
Um Injetor de Falhas para a Avaliação de Aplicações Distribuídas Baseadas no ...Um Injetor de Falhas para a Avaliação de Aplicações Distribuídas Baseadas no ...
Um Injetor de Falhas para a Avaliação de Aplicações Distribuídas Baseadas no ...
 
Relógios Lógicos
Relógios LógicosRelógios Lógicos
Relógios Lógicos
 
Questionário sobre processos
Questionário sobre processosQuestionário sobre processos
Questionário sobre processos
 
Estudo sistemas operacionais p2
Estudo sistemas operacionais  p2Estudo sistemas operacionais  p2
Estudo sistemas operacionais p2
 
Introdução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptxIntrodução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptx
 
Relógios lógicos
Relógios lógicosRelógios lógicos
Relógios lógicos
 
Regiões críticas dos Sistemas Operacionais
Regiões críticas dos Sistemas OperacionaisRegiões críticas dos Sistemas Operacionais
Regiões críticas dos Sistemas Operacionais
 
Análise de Algoritmos
Análise de AlgoritmosAnálise de Algoritmos
Análise de Algoritmos
 

Plus de Verônica Veiga

Plus de Verônica Veiga (17)

Trabalho: Arquitetura e software paralelo
Trabalho: Arquitetura e software paralelo  Trabalho: Arquitetura e software paralelo
Trabalho: Arquitetura e software paralelo
 
Projeto: Montagem de uma rede local
Projeto: Montagem de uma rede local Projeto: Montagem de uma rede local
Projeto: Montagem de uma rede local
 
ApresentaçãoSlides - Xfetecep
ApresentaçãoSlides - XfetecepApresentaçãoSlides - Xfetecep
ApresentaçãoSlides - Xfetecep
 
Apostila: tutorial bios setup ide
Apostila: tutorial bios setup ideApostila: tutorial bios setup ide
Apostila: tutorial bios setup ide
 
Apostila: Curso de java III
Apostila: Curso de java IIIApostila: Curso de java III
Apostila: Curso de java III
 
Apostila:Curso de java II
Apostila:Curso de java II  Apostila:Curso de java II
Apostila:Curso de java II
 
Apostila: Curso de java I
Apostila: Curso de java IApostila: Curso de java I
Apostila: Curso de java I
 
Apostila: Netbeans
Apostila: NetbeansApostila: Netbeans
Apostila: Netbeans
 
Apostila: CSS
Apostila: CSSApostila: CSS
Apostila: CSS
 
Apostila dreamweaver
Apostila dreamweaver Apostila dreamweaver
Apostila dreamweaver
 
Banco de dados
Banco de dados   Banco de dados
Banco de dados
 
Arquitetura paralela
Arquitetura paralelaArquitetura paralela
Arquitetura paralela
 
Placas de redes
Placas de redesPlacas de redes
Placas de redes
 
Processadores
ProcessadoresProcessadores
Processadores
 
Estrutura de linguagem C++
Estrutura de linguagem C++Estrutura de linguagem C++
Estrutura de linguagem C++
 
Relatório banda larga
Relatório banda largaRelatório banda larga
Relatório banda larga
 
Projeto rede local
Projeto rede localProjeto rede local
Projeto rede local
 

Algoritmo lamport

  • 1. http://informaticaentretenimento.blogspot.com/ CEP- CENTRO DE EDUCAÇÃO PROFISSIONAL DE ITAJUBÁ TÉCNICO DE INFORMÁTICA Turma: V2I Verônica Veiga. Nº: 17 Sistema Operacional Algoritmo de Lamport Trabalho apresentado na disciplina: Sistema Operacional. Do professor Mário. No curso técnico em informá- tica. Do CEP- Centro de Educação Profissional de Itajubá. 21 de setembro de 2011 ITAJUBÁ-MG
  • 2. Algoritmo de lamport Introdução: Lamport formou-se em matemática pelo Massachusetts Institute of Technology em 1960, com mestrado e doutorado em matemática pela Universidade Brandeis, concluídos respectivamente em 1963 e 1972. O tema de sua tese de doutorado foram singularidades em equações diferenciais parciais analíticas. Após a graduação, ele começou sua carreira como cientista computacional noMassachusetts Computer Associates, SRI International, Digital, e Compaq. Em 2001, ele se juntou à Microsoft Research em Mountain View, na California. Suas pesquisas contribuíram com a fundação da teoria de sistemas distribuídos. Alguns dos seus mais notáveis papers nesta área são os seguintes:  "Time, Clocks, and the Ordering of Events in a Distributed System"  "Distributed snapshots: determining global states of distributed systems"  "The Byzantine Generals Problem"  "The Part-time Parliament" Esses artigos introduziram novos conceitos na ciência computacional, tais como relógios lógicos (logical clocks) e a relação antes-depois, bem como as falhas Bizantinas. Estes são alguns dos artigos mais citados no campo de sistemas distribuídos, e descrevem algoritmos para a resolução de muitos problemas fundamentais em sistemas distribuídos, incluindo:  O algoritmo de Paxos para consenso the Paxos  O algoritmo da padaria para exclusão mútua de múltiplos threads em um sistema de computadores que requerem as mesmas fontes ao mesmo tempo.  O algoritmo Snapshot para determinação dos estados globais consistentes. Dr. Lamport recebeu quatro títulos do Doutor 'Honoris Causa' por universidades europeias: Universidade de Rennes e Universidade Christian Albrechts de Kiel em 2003, EPFL em 2004, University of Lugano em 2006. Em 2004 ele também recebeu o IEEE Piore Award por causa de suas expressivas contribuições no campo do processamento de informação, em relação à ciência computacional, contribuído significativamente ao avanço e ao melhoramento da sociedade. http://informaticaentretenimento.blogspot.com/
  • 3. Fora da ciência computacional, o Dr. Lamport é melhor conhecido como sendo o desenvolvedor inicial do sistema de preparação de documentos, o LaTeX. Relógios de Lamport Relógios lógicos de Lamport são mecanismos usados em algoritmos de sincronização de relógio baseados na relação happens-before definida por Lamport. Marcas temporais Nesses algoritmos cada processo do sistema distribuído mantém um contador crescente e monotônico C (relógio lógico) e cada evento a possui uma marca temporal C(a) na qual todos os processos concordam. Dessa forma, os eventos estão sujeitos às seguintes propriedades derivadas da relação happens-before: 1. Se a acontece antes de b no mesmo processo, então C(a) < C(b). 2. Se a e b representam, respectivamente, o envio e o recebimento de uma mensagem, então C(a) < C(b). 3. Sejam a e b eventos quaisquer, então C(a) ≠ C(b) http://informaticaentretenimento.blogspot.com/
  • 4. Ordenação parcial ou total Ordenação total dos eventos se dá quando é possível definir a ordem de quaisquer dois eventos. De acordo com as propriedades dos contadores (timers) Lamport nenhum par de eventos terá uma mesma marcação temporal, pois basta ordenar os eventos de acordo com o tempo que eles ocorrem em seus processos e desfazer empates comparando uma propriedade arbitrária dos processos, como por exemplo, seu identificador. Quando este empate não é desfeito, uma ordenação parcial é obtida. Como em vários algoritmos distribuídos a ordenação total é necessária para evitar ambiguidades, o algoritmo de Lamport é bastante citado na literatura. Nos algoritmos de disputa a recursos compartilhados, apenas um processo pode usar um recurso por vez, então os processos devem sincronizar para evitar conflitos, dessa forma ordenação total é um requisito para esse algoritmo. Regras Os relógios de Lamport obedecem as seguintes regras: 1. Um processo incrementa seu contador antes de cada evento daquele processo; 2. Quando um processo envia uma mensagem, esse inclui o valor de seu contador junto da mensagem; 3. No recebimento de uma mensagem, o processo atualiza seu contador para um valor maior que o máximo entre seu próprio valor e o valor de contador recebido na mensagem. Algoritmos distribuídos Alguns algoritmos distribuídos podem fazer uso dos relógios de Lamport, tais quais: Exclusão mútua Em sistemas distribuídos onde há disputa de recursos normalmente há a implementação de regiões críticas. Quando um processo precisa acessar uma certa informação compartilhada, este primeiramente precisa acessar a região crítica e todos os processos devem concordar que este processo está nesta região, a fim de garantir que nenhum outro processo acessará o mesmo dado ao mesmo tempo Uma solução centralizada para o problema seria adotar um processo coordenador que seria responsável por receber solicitações para a região crítica e dar permissões de entrada para o processo solicitante quando possível. É fácil perceber que a solução garante exclusão mútua e é justa, porém o processo coordenador se torna um possível gargalo de performance e um ponto único de falha. http://informaticaentretenimento.blogspot.com/
  • 5. Para contornar as desvantagens da versão centralizada do algoritmo, versões descentralizadas foram apresentadas. Lamport em 1978 apresentou uma primeira versão do algoritmo, e em 1981, Ricart e Agrawala o tornaram mais eficiente. O algoritmo de Ricart e Agrawala faz uso da ordenação total dos eventos, portanto faz uso dos relógios de Lamport e funciona da seguinte forma: • Quando um processo quer entrar na região crítica, ele cria uma mensagem contendo o nome da região crítica, o número de seu processo e valor de seu contador. E então envia essa mensagem para todos os outros processos participantes do sistema. Para isso assume-se que o envio das mensagens é confiável. • Quando um processo recebe uma mensagem de requisição de entrada na região crítica, três ações podem ser tomadas de acordo com o estado da região crítica: o Se ele não está na região crítica nomeada na mensagem e também não que entrar na mesma, responde a mensagem com um OK. o Se ele ja está na região crítica, ele não responde a mensagem. Ao invés disso, ele enfileira a requisição. o Se ele quer entrar na região crítica mas ainda não o fez, ele compara a marca temporal da mensagem recebida com a marca temporal da mensagem que ele enviou para todos. Se a mensagem recebida tiver a menor marca temporal, o processo responde com um OK, caso contrário, ele enfileira a requisição. • Após enviar as requisições de entrada na região crítica para todos os outros processos, o processo espera as repostas dessas requisições. Uma vez que todas as permissões foram recebidas, o processo entra na região crítica. • Ao sair da região crítica o processo envia OK para todos os processos que estão na sua fila de requisições e apaga esta fila. Da mesma forma que o algoritmo centralizado citado acima, com o algoritmo descentralizado a exclusão mútua é garantida sem deadlock ou starvation. O número de mensagens trocadas por entrada na região crítica é 2(n-1), onde n é o número de processos no sistema. Além disso, não há ponto único de falha nessa solução. Porém, o ponto único de falha agora foi substituído por n pontos de falha. Quando algum processo falha, ele pára de responder às requisições. Essa falta de resposta pode ser interpretada como uma negação de permissão, bloqueando as entradas na região crítica por outros processos. Esse problema pode ser contornando adicionando respostas, inclusive de negação de permissão, a cada mensagem de requisição. Uma falha de entrega agora pode ser detectada por timeout. Outro problema que acaba existindo com o uso do algoritmo distribuído é a necessidade de uma primitiva de comunicação em grupo. Cada processo agora precisa manter uma lista dos membros do grupo, percebendo entradas, saídas e falhas desses membros. Dessa forma, na versão distribuída do algoritmo, todos os processos estão envolvidos em todas as decisões de entrada na região crítica. Comparando com o algoritmo centralizado e a suposição de gargalo, se um dos nós não suporta a carga é pouco provável que forçando a paralelização, fazendo com que todos os nós façam a mesma coisa, venha a existir a solução para esse gargalo. http://informaticaentretenimento.blogspot.com/
  • 6. Multicast totalmente ordenado O algoritmo de multicast totalmente ordenado também faz uso dos relógios de Lamport e da ordenação total. Ele se faz necessário quando precisamos garantir a mesma sequência de eventos em todos os processos do sistema, como por exemplo, em uma atualização de banco de dados replicado em diversas máquinas. O algoritmo funciona da seguinte forma: 1. Um processo cria uma mensagem contendo sua marca temporal atual e então faz multicast para todos os outros processos do grupo. 2. Os contadores são atualizados no envio e recebimento das mensagens. 3. Quando uma mensagem é recebida o processo o coloca em sua fila local de acordo com sua marca temporal e aguarda pela confirmação das mensagens enviadas. Uma mensagem então só é de fato entregue à aplicação quando está na cabeça da fila e todas confirmações daquela mensagem foram recebidas. Ou seja, o processo garante que a marca temporal da mensagem entregue é menor que os contadores de outros processos. Além disso, desempates de marcas temporais de mensagens são feitos através de identificadores arbitrários dos processos, permitindo a ordenação total dos eventos. Conclusão: Lamport ordering (ordenação) são algoritmos de sistemas distribuídos. Através de observações de como os processos distribuídos deveríam se comportarem, verificou-se que não importa que um processo que não tem interação com outro, estejam sincronizados, pois o desempenho de um deles não irá afetar o resultado de outro. Também não é necessário que todos tenham o clock perfeitamente sincronizados, desde que todos eles concordem com a ordem que os eventos devem acontecer. Este clock é chamado de clock lógico. Exemplo: um processo é encarregado de realizar a compilação de um determinado arquivo-fonte, outro é responsável por executá-lo, não importa o tempo que o primeiro irá compilar o arquivo, desde que o segundo processo só execute depois que o arquivo já esteja compilado. Algoritmo de Lamport
  • 7. Usa-se o nome clocks lógicos, ao invés de clocks físicos, usados em sistemas onde se necessita do tempo correto de ocorrência de cada evento; Lamport define a relação acontecimento-anterioridade: (a b) que indica que todos os processos concordam que o evento a acontece primeiro e depois o b. – Se a e b são eventos no mesmo processo, e a acontece antes de b então a b é verdade. – Se a é o evento de uma mensagem sendo enviada por um processo e b é o evento de outro processo recebendo aquela mensagem então a b é verdade. Algoritmo de Lamport Se dois eventos acontecem em processos diferentes que não se comunicam, esses eventos são ditos concorrentes. • Mensagens são enviadas juntamente com clock da máquina do processo emissor. • Máquina que recebe mensagem ajusta seu próprio clock caso seja necessário, isto é, quando seu clock tem um valor igual ou inferior ao da mensagem. • Pode-se usar número do processo para se resolver empates e implementar um clock global, isto é, cada evento tem um tempo associado e os tempos associados de todos os eventos são diferentes. Fonte: http://pt.wikipedia.org/wiki/Rel%C3%B3gios_de_Lamport http://pt.wikipedia.org/wiki/Leslie_Lamport Acesse o blog abaixo: E seja bem vindo! Temos curso online http://informaticaentretenimento.blogspot.com/