Documente Academic
Documente Profesional
Documente Cultură
Clocks Lgicos
Em Lamport (1978) - Time, Clocks, and the Ordering of Events in a Distributed System ele mostra que a sincronizao dos relgios possivel e apresenta o algoritmo para se conseguir isto. Posteriormente, em outro artigo ele defende que a sincronizao dos clocks no precisa ser absoluta, pelos seguintes motivos: 1. Se dois processos no interagem, no necessrio que seus clocks sejam sincronizados (no observvel).
Disciplina: Sistemas Distribudos 2. Usualmente o que importa no que todos os processos concordem com o exato tempo em que os eventos aconteceram, mas que concordem na ordem em que os eventos ocorreram. * Clock Lgico - consistncia interna o que importa e no quanto eles esto prximos do tempo real. * Clock Fsico - os clocks no podem diferir do tempo real mais que um determinado valor.
Algoritmo de Lamport Lamport definiu a seguinte relao: acontece-antes: a --> b (a acontece antes de b) Significa que todos os processos concordam que primeiro o evento a ocorreu e depois disto, o evento b ocorreu. Esta relao pode ser observada em duas situaes: 1. Se a e b so eventos no mesmo processo, e a ocorre antes de b, ento a--> b verdadeiro 2. Se a o evento de uma mensagem sendo enviada por um processo, e b o evento da mensagem sendo recebida por outro processo, ento a--> b tambm verdadeiro. Uma
mensagem no pode ser recebida antes de ser enviada, ou no mesmo tempo em que foi enviada. A relao acontece-antes transitiva, logo: se a--> b e b--> c, ento a--> c Se dois eventos x e y, acontecem em diferentes processos que no trocam mensagens, ento x--
>y no verdadeiro, nem y-->x verdadeiro. Estes eventos so ditos concorrentes, o que significa que nada pode ser dito sobre quando eles aconteceram. Precisamos de um modo de medir o tempo de tal forma que para todo evento a, ns podemos assumir que ele aconteceu em um tempo C(a) no qual todo processo concorda. Se a-->b, ento C(a) < C(b).
1
0 8 16 2 4 32 40 48 56 64 72 80
2
0 10 20 30 40 50 60 70 80 90 100
Figura 1. Processos com clocks em freqncias diferentes. O que acontece de estranho entre as trocas de mensagens? Para fazer as correes necessrias o tempo de relgio C precisa sempre ser incrementado (nunca decrementado). Por exemplo, uma vez que C deixa sua mq uina no tempo 60 ele deve chegar na mquina destino no tempo 61 ou mais tarde. Assim, quando uma mensagem chega ao destino, o receptor verifica o tempo que a mensagem traz consigo referente ao tempo de origem e, com isso, o receptor adianta seu clock de modo a torn-lo uma unidade maior que o instante da transmisso.
0 6 12 18 24 30 36 42 48 70 76
0 8 16 24 32 40 48 61 69 77 85
0 10 20 30 40 50 60 70 80 90 100
Disciplina: Sistemas Distribudos Dessa forma, podemos utilizar o algoritmo de Lamport para atribuir tempos a todos os eventos em um SD, com as seguintes condies: 1. se a ocorrer antes de b no mesmo processo, ento C(a) < C(b). 2. se a e b so o envio e a recepo de uma mensagem, ento C(a) < C(b). 3. para quaisquer eventos a e b, C(a) ? C(b).
Clock Fsico
Em alguns sistemas (tempo-real por exemplo) um clock real importante. Nestes sistemas necessitamos de clocks fsicos externos. Por motivos de eficincia e de redundncia, desejvel que se tenha mais de um clock externo, o que causa os seguintes problemas: como sincroniz-los com o clock de tempo real e como sincronizar estes clocks entre si.
Periodicamente, cada mquina envia uma mensagem para o Servidor de Tempo perguntando pelo tempo corrente (atual). Esta mquina responde o mais rpido possvel com uma mensagem contendo o tempo corrente Cutc.
Algoritmo de Cristian
Tempo
Servidor de Tempo
T0 e T1 so medidos com o mesmo clock Tempo de Propagao da Mensagem (TP) TP = (T1 - T0)/2 No entanto, a estimativa pode ser melhorada considerando o tempo de manipulao da interrupo I: TP = (T1 - T0 - I)/2
Algoritmo de Berkeley (1989) - nenhuma mquina tem um receptor UTC Servidor de Tempo ativo, e requer, periodicamente de cada mquina, o tempo do seu relgio (estratgia oposta a proposta por Cristian). O Servidor de Tempo calcula a mdia dos tempos (considerando o tempo dele mesmo) e diz para cada mquina como ajustar seu relgio para ter seu tempo igual a mdia calculada.
Algoritmo de Berkeley
3:00 +25 3:00 -10 -20 3:05 +15
3:25
2:50
3:25
2:50
3:05
3:05
Excluso Mtua - Algoritmo Centralizado A melhor maneira de se conseguir excluso mtua em um sistema distribudo imitar o que feito no sistema centralizado (com um nico processador): 1. Um processo eleito como Coordenador. Quando um processo quer entrar na regio crtica, ele envia uma mensagem requisitando ao Coordenador permisso para isso. 2. Se nenhum outro processo est na regio crtica, o coordenador envia uma resposta dando permisso. Ao receber a mensagem o processo requisitante entra na regio crtica. Supondo que outro processo pea permisso para entrar na regio crtica, e o Coordenador sabendo que outro processo est na regio, no envia resposta bloqueando este processo at que ele possa entrar na regio. Uma outra opo enviar uma mensagem negando a solicitao. Por fim, quando o processo deixa a regio, ele envia para o Coordenador uma mensagem liberando a regio crtica.
0
requisio
1
OK
1
requisio
2
OK
2
Coordenador Fila Vazia
Disciplina: Sistemas Distribudos Excluso Mtua - Algoritmo Distribudo Algoritmo centralizado tem o problema de uma falha no Coordenador inviabilizar o mecanismo. Algoritmo distribudo - Quando um processo quer entrar na regio crtica, ele constri uma mensagem contendo o nome da regio, nmero do processo e o tempo corrente. Ele envia a mensagem para todos os outros processos. Quando um processo recebe uma mensagem de requisio de outro processo sua ao vai depender de sua situao relativa a regio crtica: 1- Se o receptor no est na regio crtica e no quer entrar, ele envia de volta uma msg OK; 2- Se o receptor j est na regio, ele no responde e coloca a requisio na fila; 3- Se o receptor quer entrar na regio crtica mas ainda no o fez, ele compara o tempo da msg que chegou com o tempo da msg que ele enviou para os outros processos. O menor tempo vence. Se a msg que chegou menor ele envia de volta uma msg com OK. Se a sua msg tem o menor tempo ele coloca na fila a requisio que chegou e no envia nada. Aps pedir permisso um processo espera at que todos tenham dado a sua permisso. Quando todas as permisses chegam o processo pode entrar na regio crtica. Quando ele sai da regio crtica, ele envia uma msg OK para todos os processos na sua fila.
0
OK
Disciplina: Sistemas Distribudos Algoritmo Token Ring construido um anel lgico por software no qual a cada processo atribuido uma posio no anel. Quando o anel inicializado, o processo 0 ganha o token. O token circula no anel (passa do processo k para o k+1). Quando o processo ganha o token ele verifica se ele quer entrar na regio crtica. Caso positivo, ele entra na regio, realiza o seu trabalho e ao deixar a regio passa o token para o elemento seguinte do anel. No permitido entrar em uma segunda regio crtica com o mesmo token. Se o processo no quer entrar na regio crtica ele simplesmente passa o token. Como consequncia quando nenhum processo quer entrar na regio crtica o token fica circulando pelo anel. Problemas: 1. Se o token perdido ele precisa ser regenerado. A deteco de um token perdido dificil. 2. Se um processo falha tambm ocorrem problemas. A soluo fazer o processo que recebe o token confirmar o recebimento. O processo que falhou pode ser retirado do anel, e o token enviado para o processo seguinte. Essa soluo requer que todos os processos conheam a configurao do anel.
1 0 9 8
3 token 4
5 7 6
Centralizado
3 2(n-1)
2 2(n-1) 0 a n-1
Distribuido
Perda do Token
Algoritmo de Eleio Muitos algoritmos distribudos requerem um processo como coordenador. Em geral no importa qual seja o processo coordenador, mas um deles inequivocamente tem que exercer esta funo. Algoritmo do Ditador (Garcia e Molina 1982) Quando um processo nota que o coordenador no est respondendo a uma requisio, ele inicia uma eleio. A eleio convocada por um processo P da seguinte forma: 1- P envia uma mensagem de ELEIO para todos os processos com nmeros maiores que o seu; 2- Se nenhum responde, P ganha a eleio e se torna coordenador; 3- Se um processo com nmero maior responde, ele assume a coordenao. Quando um processo recebe uma mensagem de ELEIO de um processo de menor nmero, ele envia uma mensagem OK de volta indicando que ele vai tomar o comando. Depois disso ele inicia uma eleio. Eventualmente todos os processos abandonam a disputa, com exceo de um que o novo coordenador. Ele envia uma mensagem a todos os processos avisando que o novo coordenador. Se um processo que estava fora do ar volta, ele inicia uma eleio. Caso ele seja o processo ativo de nmero mais alto rodando no sistema, ele ganha a eleio e assume a coordenao.
Disciplina: Sistemas Distribudos Transaes Atmicas (Atomic Transactions) O controle de excluso mtua obtido com o uso dos semforos, por exemplo, essencialmente de baixo nvel e, muitas vezes, incmodo para o programador. O desejvel utilizar um nvel de abstrao mais alto que permita que o programador se concentre apenas no algoritmo da aplicao. Pensando nisso criou-se o que chamamos de transao atmica (tudo-ou-nada). Imagine que um processo anuncie que quer comear uma transao com um ou mais processos. Eles executam varias operaes (criar e apagar objetos) por um certo periodo de tempo. Ento o processo que iniciou a negociao anuncia que quer que todos os outros confirmem (commit) o trabalho feito at ento. Se todos concordam o trabalho feito se torna permanente. Se um ou mais processos se recusam (ou falham), a situao revertida para o estado em que todos estavam antes da transao comear. Este procedimento chamado de propriedade do tudo-ou-nada e facilita o trabalho do programador. Exemplo: Retirada de dinheiro de uma conta bancria e depsito em outra usando um PC com um modem. Operao em dois passos: 1- Retirar (quantia, conta1) 2- Depositar (quantia, conta2) Se a conexo cair depois do primeiro passo, mas antes do segundo, como consequncia teremos o desaparecimento do dinheiro. O problema resolvido agrupando os dois passos em uma transao atmica. Ou os dois passos so completados ou nenhum deles ser executados. Se a transao falhar o sistema restaura o estado inicial. Primitivas da Transao Atmica 1- BEGIN_TRANSACTION - Marca o inicio da transao. 2- END_TRANSAAO - Termina a transao e tenta confirmao (commit). 3- ABORT_TRANSACTION - Interrompe a transao restaurando os valores antigos. 4- READ - L dado de um arquivo ou de qualquer outro objeto. 5- WRITE - Escreve dado em um arquivo ou qualquer outro objeto.
10
Disciplina: Sistemas Distribudos Propriedades das Transaes Atmicas Quatro propriedades essenciais: 1- Atomicidade - Para o ambiente externo, a transao acontece de forma indivisvel; 2- Consistncia - A transao no viola nenhuma invariante do sistema; 3- Isolamento - transaes concorrentes no interferem umas com as outras; 4- Durabilidade - Uma vez que a transao efetivada (commit), a mudana permanente. Estas propriedades so geralmente referenciadas pelas suas iniciais - ACID Implementao Questo: Como implementar as transaes atmicas? 1- Espao de Trabalho Privado Quando um processo comea uma transao, ele recebe um espao privado contendo todos os arquivos e demais objetos que ele tem que acessar. At o momento em que a transao se complete tudo o que o processo l ou escreve vai para esta rea de trabalho privada. O problema com este procedimento que o custo de copiar tudo para a rea privada geralmente proibitivo; entretanto, algumas otimizaes so possveis, por exemplo: quando um processo s l um arquivo no necessrio fazer uma cpia; em vez de copiar o arquivo todo, somente os indices do arquivo so copiados na rea privada. 2- Escrevendo um log (lista de intenes) Os arquivos so realmente modificados, mas antes de qualquer bloco ser modificado registrada, em um armazenamento estvel, a transao que est fazendo mudana; que arquivo e bloco esto sendo modificados; e os valores velho e novo. Se a transao abortar, o log pode ser usado para voltar o sistema ao estado original. Comeando do fim para o inicio, cada registro do log lido e a mudana desfeita. O log tambm pode ser usado para recuperar o sistema de uma falha. 3- Two-Phase Commit Protocol (Gray, 1978) A confirmao (committing) da transao precisa ser feita atomicamente, isto , de forma instantnea e indivisvel. Isto requer a cooperao de todos os processos participantes da transao. Um dos processos o coordenador, usualmente aquele que executou a transao. O protocolo comea quando o coordenador escreve uma entrada no arquivo log dizendo que ele comeou o _ Prof. Dr. Jean M. Laine 11
Disciplina: Sistemas Distribudos protocolo, enviando em seguida uma msg para cada processo participante dizendo para se prepararem para a confirmao. Cada um dos subordinados ir escrever no log e enviar a sua deciso para o coordenador. Este por sua vez ao receber todas as respostas saber se a transao teve sucesso ou no. O coordenador por sua vez comunica todos os outros participantes da deciso final.
Bibliografia
TANENBAUM, A. S. Distributed Operating Systems. 1st ed. New Jersey: Prentice Hall, 1994.
12