Leslie Lamport é um cientista da computação conhecido por suas contribuições fundamentais para a teoria de sistemas distribuídos. Ele desenvolveu os relógios lógicos de Lamport, que permitem a ordenação total de eventos em sistemas distribuídos através da atribuição de marcas temporais aos eventos. O algoritmo de Lamport é amplamente utilizado em algoritmos distribuídos como exclusão mútua e multicast totalmente ordenado.
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/