1
Relógio Lógico
Algoritmo de Lamport
• Objetivo: Sincronização de clocks lógicos
• Os tempos associados aos eventos não são necessariamente
próximos ao tempo real.
• Os processos não precisam estar de acordo sobre o valor
exato do tempo, mas sobre a ordem em que os eventos
ocorrem.
• Relação acontecimento-anterioridade:
– Se a e b são eventos dentro do mesmo processo e se o evento
“a” acontece antes do “b” então:
C(a) < C(b)
– Se a é o envio de uma mensagem para um processo e se b é a
recepção desta mensagem por outro processo, então devem ser
atribuídos valores a C(a) e C(b) de maneira que C(a) < C (b)
Relógio Lógico
Algoritmo de Lamport
• Os processos executam em máquinas
diferentes, cada uma com seu clock.
• Cada mensagem leva o valor do clock do
transmissor.
• Se a mensagem traz um tempo superior ao
do receptor, este adianta seu clock em uma
unidade maior que o tempo recebido.
Relógio Físico
Algoritmo Centralizado
• ALGORITMO DE CRISTIAN:
• Sistemas de tempo real: importante conhecer o tempo
real dos eventos.
• Existe um servidor de hora exata. Os clientes enviam
mensagem ao servidor perguntando o tempo corrente e
ajustam seus clocks.
• PROBLEMAS:
– Transmissor adiantado em relação ao servidor: não pode
atrasar, pois geraria inconsistências.
SOLUÇÃO: ajuste gradativo ( adiantar mais devagar).
– Tempo não nulo de comunicação entre cliente-servidor.
SOLUÇÃO: adicionar metade do tempo entre
solicitação/resposta.
Relógio Físico
Algoritmo Centralizado
• ALGORITMO DE BERKELEY:
• Servidor de tempo ativo: periodicamente consulta cada
máquina para saber o tempo corrente da cada uma.
• Cada máquina responde com seu tempo corrente.
• Baseado nas respostas, o servidor calcula o tempo
médio e informa a todas as máquinas para adiantar ou
“atrasar” ( gradativamente) seus clocks.
• Como o próprio servidor muda seu tempo,
periodicamente o operador deve ajustá-lo manualmente.
2
Relógio Físico
Algoritmo DISTRIBUÍDO
• Dividem o tempo em intervalos fixos de
“ressincronização”
• No início de cada intervalo, cada máquina envia
broadcast com seu tempo corrente.
• Como os clocks são diferentes, estas mensagens não
vão ser todas simultâneas.
• Após enviar sua mensagem, cada máquina inicia um
temporizador para receber as mensagens em broadcast
das outras máquinas ( intervalo de aceitação das
respostas).
• Cada máquina roda um algoritmo que calcula a média
dos valores de tempo de todas máquinas da rede,
descartando os m valores mais baixos e mais altos.
Exclusão Mútua
Algoritmo Distribuído
COM USO DO RELÓGIO LÓGICO
• Processo deseja entrar numa RC:
– envia mensagem para todos processos ( que deve
confirmar o recebimento), com nome da região
crítica, seu próprio número e o tempo corrente.
• Processo só entra na RC se todos processos
lhe dão permissão para executá-la.
Exclusão Mútua
Algoritmo Distribuído
COM USO DO RELÓGIO LÓGICO (cont.)
• Processo recebe mensagem de requisição a uma RC:
– Se o receptor não está executando a RC e não deseja executá-
la: envia OK de volta ao transmissor.
– Se o receptor está executando a RC: ele não responde, e
guarda a requisição em uma fila (envia OK após sair da RC).
– Se o receptor deseja entrar na RC mas não o fez: compara o
tempo da mensagem recebida com o que ele enviou (o seu). O
valor mais baixo ganha.
– Logo, se o tempo da mensagem recebida for mais baixo, o
processo envia OK ao transmissor.
– Se o tempo de sua própria mensagem (seu próprio tempo) for
menor, o receptor coloca a requisição recebida em uma fila e
não responde nada (envia OK após sair da RC).
Exclusão Mútua
Algoritmo Distribuído
COM USO DO RELÓGIO LÓGICO (cont.)
• PROBLEMAS:
– Número de mensagens por entrada :2(n-1), onde n é
o número de processos total do sistema.
– N pontos de falha: destinatário fora do ar não
responde OK.
– Solução: Cada processo responder negando ou
confirmando solicitação de permissão para entrar na
RC. Se processo não responde após N tentativas:
está fora do ar.
3
Exclusão Mútua
Algoritmo Distribuído
COM PASSAGEM DE TOKEN
• É constituído um anel lógico em software.
• Cada processo conhece qual o próximo da
sequência.
• No início, processo “0” recebe o token e envia
ao seu sucessor e assim por diante.
• Quando o processo recebe o token:
– Verifica se ele próprio está querendo entrar na RC. Se estiver,
entra na RC e após terminá-la, envia o token ao seu sucessor.
– Se não está querendo entrar na RC, passa o token para o seu
sucessor.
Algoritmos de Eleição
• Promovem eleição para escolha de um
coordenador.
• Cada processo é identificado por um número
inteiro e conhece o número de identificação de
todos os demais.
• Processo com número de identificação mais alto
é designado como coordenador.
• Todos os processos do sistema devem saber
quem é o novo coordenador ao terminar a
eleição.
Algoritmos de Eleição
Algoritmo do Mandão
• Processo P nota que o coordenador não está
respondendo: inicia uma eleição
• P inicia eleição:
– Envia mensagem indicativa de eleição a todos processos com
número de identificação superiores ao seu.
– Se nenhum processo responde, P ganha a eleição e torna-se o
novo coordenador.
– Se um ou mais processos responderem, eles passam a
controlar a eleição.
– Processo com número de identificação mais alto, ganha a
eleição e será o novo coordenador.
– Novo coordenador informa a todos os demais processos que é o
novo coordenador.
Algoritmos de Eleição
Algoritmo do Mandão
• Fig 11.13
4
0
2
7
1
3
6
5 4
0
2 1
3
6
5 4
0
2 1
3
6
5
7 7
4
0
2
7
1
3
6
5
4
0
2
7
1
3
6
5
Coordenador
Coordenador
Eleição
Eleição
Eleição
O coordenador
anterior está
fora do ar
Eleição
Eleição
Eleição
OK
OK
OK
4
Algoritmos de Eleição
Algoritmo do Anel Lógico
• Processos física ou logicamente ordenados: cada um
conhece quem é seu sucessor. Não usa token
• Processo nota que o coordenador não está
respondendo:
– Monta mensagem de convocação de eleição com seu próprio
número e envia ao seu sucessor.
– Se este estiver inativo, envia ao sucessor do mesmo e assim
por diante até encontrar um processo ativo.
– Este processo se repete novamente, até que a mensagem volte
ao processo de origem. Cada processo coloca seu número de
identificação na mensagem.
– O processo com maior número de identificação será o novo
sucessor.
– O processo de origem envia uma outra mensagem
informando o número de identificação do novo
coordenador.
Controle de Concorrência
ALGORITMO DE CONTROLE DE CONCORRENCIA
• Quando várias transações estiverem sendo executadas
simultaneamente por diferentes processos, rodando em
processadores diferentes, há a necessidade de
mecanismos para que nenhum deles interfira no
processamento do outro.
• TRAVA: bloqueio de acesso a um arquivo.
• O processo gerente de bloqueio rejeita todas as
tentativas de bloquear arquivos já bloqueados por outros
processos.
• O bloqueio de acesso a um arquivo, antes do início de
uma transação, garante que ele não vai ser modificado
no decorrer da transação.
Controle Otimista
• A transação não se preocupa com conflitos. Nenhum
objeto é bloqueado.
• No ponto de aceitação da transação (validação), o
algoritmo verifica as demais transações para ver se
algum arquivo foi modificado desde o início da
transação.
• Caso positivo, a transação é abortada. Caso
negativo, é aceita.
Deteção de Deadlocks
Algorimo Distribuído
• Processo espera por um recurso bloqueado por
outro processo: envia mensagem de sondagem
para o(s) processo(s) detentor(es) do(s)
recurso(s).
• mensagem composta por três números: No. do
processo bloqueado, No. do processo que
enviou a mensagem, No. Do processo para o
qual a mensagem está sendo enviada.
• Mensagem chega ao destino: Receptor verifica
se ele próprio está aguardando recursos de
algum processo.
5
Deteção de Deadlocks
Algorimo Distribuído
• Se estiver, atualiza a mensagem, mantendo o
primeiro campo e substituindo os demais por
seu próprio No. (origem) e pelo No. do destino.
• DEADLOCK: mensagem volta à origem (ciclo).
• DESFAZER DEADLOCK:
– Processo que iniciou sondagem comete suicídio
• PROBLEMA: dois ou mais processos poderiam suicidar-se,
sendo o problema resolvido com o suicídio de apenas um.
– Cada processo coloca seu No. no final da mensagem.
Quando a mensagem retorna ao transmissor, ele
mata o processo com No. mais alto ou o convida a
suicidar-se.
Deteção de Deadlocks
Algorimo Distribuído
0 1 2 3
4
5
6
7
8
(0, 8, 0)
(0, 2, 3)
Máquina 0 Máquina 1 Máquina 2
(0, 4, 6)
(0, 5, 7)
(0, 0,1) (0, 1, 2)
Prevenção de Deadlocks Distribuídos
Prevenção Estrutural
• Cada transação leva um carimbo indicando o momento em que a
transação se inicia.
• WAIT-DIE
– Processo está esperando por um recurso que outro processo
detém:
• Só poderão esperar os processos mais velhos (carimbo
menor do que o do processo que ele está esperando, ou
seja, que detém o recurso).
• No caso inverso (processo mais jovem espera por um
recurso que o mais velho detém), o processo mais jovem é
assassinado.
– Neste algoritmo, na cadeia de processos esperando, os
carimbos vão sempre crescer, tornando impossível a formação
de ciclos(deadlocks).
Prevenção de Deadlocks Distribuídos
Prevenção Estrutural
• WOUND-WAIT
– Só poderão esperar os processos com carimbo maior
( mais jovem) que o processo esperado. Neste caso
os carimbos decrescem ao longo da cadeia.
– Processo velho deseja recurso que pertence a um
mais jovem: O mais velho provoca preempção do
mais jovem, cuja transação é assassinada.
– Caso contrário, o processo mais jovem espera a
liberação do recurso detido pelo mais velho.

SincronizacaoDist.pdf

  • 1.
    1 Relógio Lógico Algoritmo deLamport • Objetivo: Sincronização de clocks lógicos • Os tempos associados aos eventos não são necessariamente próximos ao tempo real. • Os processos não precisam estar de acordo sobre o valor exato do tempo, mas sobre a ordem em que os eventos ocorrem. • Relação acontecimento-anterioridade: – Se a e b são eventos dentro do mesmo processo e se o evento “a” acontece antes do “b” então: C(a) < C(b) – Se a é o envio de uma mensagem para um processo e se b é a recepção desta mensagem por outro processo, então devem ser atribuídos valores a C(a) e C(b) de maneira que C(a) < C (b) Relógio Lógico Algoritmo de Lamport • Os processos executam em máquinas diferentes, cada uma com seu clock. • Cada mensagem leva o valor do clock do transmissor. • Se a mensagem traz um tempo superior ao do receptor, este adianta seu clock em uma unidade maior que o tempo recebido. Relógio Físico Algoritmo Centralizado • ALGORITMO DE CRISTIAN: • Sistemas de tempo real: importante conhecer o tempo real dos eventos. • Existe um servidor de hora exata. Os clientes enviam mensagem ao servidor perguntando o tempo corrente e ajustam seus clocks. • PROBLEMAS: – Transmissor adiantado em relação ao servidor: não pode atrasar, pois geraria inconsistências. SOLUÇÃO: ajuste gradativo ( adiantar mais devagar). – Tempo não nulo de comunicação entre cliente-servidor. SOLUÇÃO: adicionar metade do tempo entre solicitação/resposta. Relógio Físico Algoritmo Centralizado • ALGORITMO DE BERKELEY: • Servidor de tempo ativo: periodicamente consulta cada máquina para saber o tempo corrente da cada uma. • Cada máquina responde com seu tempo corrente. • Baseado nas respostas, o servidor calcula o tempo médio e informa a todas as máquinas para adiantar ou “atrasar” ( gradativamente) seus clocks. • Como o próprio servidor muda seu tempo, periodicamente o operador deve ajustá-lo manualmente.
  • 2.
    2 Relógio Físico Algoritmo DISTRIBUÍDO •Dividem o tempo em intervalos fixos de “ressincronização” • No início de cada intervalo, cada máquina envia broadcast com seu tempo corrente. • Como os clocks são diferentes, estas mensagens não vão ser todas simultâneas. • Após enviar sua mensagem, cada máquina inicia um temporizador para receber as mensagens em broadcast das outras máquinas ( intervalo de aceitação das respostas). • Cada máquina roda um algoritmo que calcula a média dos valores de tempo de todas máquinas da rede, descartando os m valores mais baixos e mais altos. Exclusão Mútua Algoritmo Distribuído COM USO DO RELÓGIO LÓGICO • Processo deseja entrar numa RC: – envia mensagem para todos processos ( que deve confirmar o recebimento), com nome da região crítica, seu próprio número e o tempo corrente. • Processo só entra na RC se todos processos lhe dão permissão para executá-la. Exclusão Mútua Algoritmo Distribuído COM USO DO RELÓGIO LÓGICO (cont.) • Processo recebe mensagem de requisição a uma RC: – Se o receptor não está executando a RC e não deseja executá- la: envia OK de volta ao transmissor. – Se o receptor está executando a RC: ele não responde, e guarda a requisição em uma fila (envia OK após sair da RC). – Se o receptor deseja entrar na RC mas não o fez: compara o tempo da mensagem recebida com o que ele enviou (o seu). O valor mais baixo ganha. – Logo, se o tempo da mensagem recebida for mais baixo, o processo envia OK ao transmissor. – Se o tempo de sua própria mensagem (seu próprio tempo) for menor, o receptor coloca a requisição recebida em uma fila e não responde nada (envia OK após sair da RC). Exclusão Mútua Algoritmo Distribuído COM USO DO RELÓGIO LÓGICO (cont.) • PROBLEMAS: – Número de mensagens por entrada :2(n-1), onde n é o número de processos total do sistema. – N pontos de falha: destinatário fora do ar não responde OK. – Solução: Cada processo responder negando ou confirmando solicitação de permissão para entrar na RC. Se processo não responde após N tentativas: está fora do ar.
  • 3.
    3 Exclusão Mútua Algoritmo Distribuído COMPASSAGEM DE TOKEN • É constituído um anel lógico em software. • Cada processo conhece qual o próximo da sequência. • No início, processo “0” recebe o token e envia ao seu sucessor e assim por diante. • Quando o processo recebe o token: – Verifica se ele próprio está querendo entrar na RC. Se estiver, entra na RC e após terminá-la, envia o token ao seu sucessor. – Se não está querendo entrar na RC, passa o token para o seu sucessor. Algoritmos de Eleição • Promovem eleição para escolha de um coordenador. • Cada processo é identificado por um número inteiro e conhece o número de identificação de todos os demais. • Processo com número de identificação mais alto é designado como coordenador. • Todos os processos do sistema devem saber quem é o novo coordenador ao terminar a eleição. Algoritmos de Eleição Algoritmo do Mandão • Processo P nota que o coordenador não está respondendo: inicia uma eleição • P inicia eleição: – Envia mensagem indicativa de eleição a todos processos com número de identificação superiores ao seu. – Se nenhum processo responde, P ganha a eleição e torna-se o novo coordenador. – Se um ou mais processos responderem, eles passam a controlar a eleição. – Processo com número de identificação mais alto, ganha a eleição e será o novo coordenador. – Novo coordenador informa a todos os demais processos que é o novo coordenador. Algoritmos de Eleição Algoritmo do Mandão • Fig 11.13 4 0 2 7 1 3 6 5 4 0 2 1 3 6 5 4 0 2 1 3 6 5 7 7 4 0 2 7 1 3 6 5 4 0 2 7 1 3 6 5 Coordenador Coordenador Eleição Eleição Eleição O coordenador anterior está fora do ar Eleição Eleição Eleição OK OK OK
  • 4.
    4 Algoritmos de Eleição Algoritmodo Anel Lógico • Processos física ou logicamente ordenados: cada um conhece quem é seu sucessor. Não usa token • Processo nota que o coordenador não está respondendo: – Monta mensagem de convocação de eleição com seu próprio número e envia ao seu sucessor. – Se este estiver inativo, envia ao sucessor do mesmo e assim por diante até encontrar um processo ativo. – Este processo se repete novamente, até que a mensagem volte ao processo de origem. Cada processo coloca seu número de identificação na mensagem. – O processo com maior número de identificação será o novo sucessor. – O processo de origem envia uma outra mensagem informando o número de identificação do novo coordenador. Controle de Concorrência ALGORITMO DE CONTROLE DE CONCORRENCIA • Quando várias transações estiverem sendo executadas simultaneamente por diferentes processos, rodando em processadores diferentes, há a necessidade de mecanismos para que nenhum deles interfira no processamento do outro. • TRAVA: bloqueio de acesso a um arquivo. • O processo gerente de bloqueio rejeita todas as tentativas de bloquear arquivos já bloqueados por outros processos. • O bloqueio de acesso a um arquivo, antes do início de uma transação, garante que ele não vai ser modificado no decorrer da transação. Controle Otimista • A transação não se preocupa com conflitos. Nenhum objeto é bloqueado. • No ponto de aceitação da transação (validação), o algoritmo verifica as demais transações para ver se algum arquivo foi modificado desde o início da transação. • Caso positivo, a transação é abortada. Caso negativo, é aceita. Deteção de Deadlocks Algorimo Distribuído • Processo espera por um recurso bloqueado por outro processo: envia mensagem de sondagem para o(s) processo(s) detentor(es) do(s) recurso(s). • mensagem composta por três números: No. do processo bloqueado, No. do processo que enviou a mensagem, No. Do processo para o qual a mensagem está sendo enviada. • Mensagem chega ao destino: Receptor verifica se ele próprio está aguardando recursos de algum processo.
  • 5.
    5 Deteção de Deadlocks AlgorimoDistribuído • Se estiver, atualiza a mensagem, mantendo o primeiro campo e substituindo os demais por seu próprio No. (origem) e pelo No. do destino. • DEADLOCK: mensagem volta à origem (ciclo). • DESFAZER DEADLOCK: – Processo que iniciou sondagem comete suicídio • PROBLEMA: dois ou mais processos poderiam suicidar-se, sendo o problema resolvido com o suicídio de apenas um. – Cada processo coloca seu No. no final da mensagem. Quando a mensagem retorna ao transmissor, ele mata o processo com No. mais alto ou o convida a suicidar-se. Deteção de Deadlocks Algorimo Distribuído 0 1 2 3 4 5 6 7 8 (0, 8, 0) (0, 2, 3) Máquina 0 Máquina 1 Máquina 2 (0, 4, 6) (0, 5, 7) (0, 0,1) (0, 1, 2) Prevenção de Deadlocks Distribuídos Prevenção Estrutural • Cada transação leva um carimbo indicando o momento em que a transação se inicia. • WAIT-DIE – Processo está esperando por um recurso que outro processo detém: • Só poderão esperar os processos mais velhos (carimbo menor do que o do processo que ele está esperando, ou seja, que detém o recurso). • No caso inverso (processo mais jovem espera por um recurso que o mais velho detém), o processo mais jovem é assassinado. – Neste algoritmo, na cadeia de processos esperando, os carimbos vão sempre crescer, tornando impossível a formação de ciclos(deadlocks). Prevenção de Deadlocks Distribuídos Prevenção Estrutural • WOUND-WAIT – Só poderão esperar os processos com carimbo maior ( mais jovem) que o processo esperado. Neste caso os carimbos decrescem ao longo da cadeia. – Processo velho deseja recurso que pertence a um mais jovem: O mais velho provoca preempção do mais jovem, cuja transação é assassinada. – Caso contrário, o processo mais jovem espera a liberação do recurso detido pelo mais velho.