Buscar

ARA7132-UNIDADE-4

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

*
*
*
UNIDADE 4
Concorrência e Sincronização
Disciplina: Computação Distribuída (ARA7132)
Prof. Alexandre L. Gonçalves
E-mail: alexandre.goncalves@ararangua.ufsc.br
*
*
*
Sumário
Sincronização de Relógios
Deadlock Distribuído
Algoritmos de Eleição
*
*
*
Sincronização de Relógios
Definição
Processos em um sistema distribuído não compartilham memória e não compartilham relógio (clock).
As informações relevantes estão espalhadas entre diversas máquinas.
Os processos tomam decisões baseados exclusivamente nas informações disponíveis no local onde eles estão executando.
Deve ser evitada a qualquer custo a existência de um único ponto de falha.
Não existe nenhuma fonte precisa de tempo global (escorregamento de clock).
*
*
*
Sincronização de Relógios
Definição
Relação Acontecimento-Anterioridade (Happened Before)
Notação referente a ordenação parcial dos eventos em um sistema distribuído.
Se A e B são eventos do mesmo processo, e A foi executado antes de B, então:
A  B
Se A é um evento de envio de uma mensagem por um processo, e B é um evento de recepção da mensagem por outro processos, então:
A  B
Se A  B e B  C, então:
A  C
*
*
*
Sincronização de Relógios
Definição
Relação Acontecimento-Anterioridade (Happened Before)
Se dois eventos não estão relacionados com a notação , então esses dois eventos são executados concorrentemente.
*
*
*
Sincronização de Relógios
Definição
Relação Acontecimento-Anterioridade (Happened Before)
Exemplo:
p1  q2,
r0  q4,
q3  r4,
p1  q4, (p1  q2 e q2  q4)
Alguns eventos concorrentes:
q0 e p2,
r0 e q3,
r0 e p3,
q3 e p3,
p4
p3
p2
p1
p0
q4
q3
q2
q1
q0
r4
r3
r2
r1
r0
p
q
r
*
*
*
Sincronização de Relógios
Para determinar se um evento A acontece antes de um evento B, é necessário o uso de um tempo comum ou um conjunto de relógios perfeitamente sincronizados.
A cada evento do sistema é associado um timestamp.
Para cada par de eventos A  B, então o timestamp de A é menor que o timestamp de B.
*
*
*
Sincronização de Relógios
Relógios Lógicos
Algoritmo de Lamport (1978)
O importante é a ordem na qual os eventos venham a ocorrer.
Se dois processos não interagem, não é necessário que seus clocks estejam sincronizados.
Se A  B, então:
C(A) < C(B)
O tempo medido pelo clock C, deve ser sempre crescente, nunca decrescente.
Correções são feitas adicionando um valor positivo ao valor atual do clock.
Se o processo P recebeu uma mensagem (evento B), com timestamp t, e LC(B)  t, então P deve avançar seu clock, tal que LC(B) = t + 1.
*
*
*
Sincronização de Relógios
Relógios Lógicos
Algoritmo de Lamport (1978)
Exemplo 1 (sem sincronização de relógio):
0
6
12
18
24
30
36
42
48
54
60
0
8
16
24
32
40
48
56
64
72
80
0
10
20
30
40
50
60
70
80
90
100
P
Q
R
A
D
B
C
*
*
*
Sincronização de Relógios
Relógios Lógicos
Algoritmo de Lamport (1978)
Exemplo 2 (com sincronização de relógio):
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
P
Q
R
A
D
B
C
*
*
*
Sincronização de Relógios
Relógios Lógicos
Vetores de Relógio
Desenvolvido para contornar as dificuldades com os relógios lógicos de Lamport.
Se C(e) < C(e´) não implica que e  e´
Um vetor de relógio é um conjunto de valores de N inteiros.
N é o número de processos que fazem parte do sistema.
Vi[j], j = 1, 2, 3, ...N
Vi[i] = número de eventos que ocorreu em pi.
Vi[j] (j  i) = número de eventos produzidos em pj que tem potencialmente afetado pi.
*
*
*
Sincronização de Relógios
Relógios Lógicos
Vetores de Relógio
Regras para atualização dos vetores:
VC1: inicialmente Vi[j] = 0, para i, j = 1, 2, ..., N.
VC2: quando pi gera um evento, um timestamp é associado ao mesmo e o vetor é atualizado Vi[i] = Vi[i] + 1.
VC3: pi inclui o valor t = Vi, em cada mensagem ou evento interno que produz.
VC4: o vetor de pi é atualizado quando uma mensagem é recebida com timestamp t: Vi[j] = MAX(Vi[j] = t[j])
*
*
*
Sincronização de Relógios
Relógios Lógicos
Vetores de Relógio
Exemplo:
p1
p2
p3
(1,0,0)
a
b
(2,0,0)
(2,1,0)
(2,2,0)
c
d
Tempo Físico
e
f
(2,2,2)
(0,0,1)
m1
m2
*
*
*
Sincronização de Relógios
Relógios Lógicos
Vetores de Relógio
Exemplo:
A figura anterior demonstra que:
a  f, logo V(a) < V(f)
e e c são concorrentes (e  c)
*
*
*
Sincronização de Relógios
Relógios Físicos
Necessidade de marcar os eventos utilizando o tempo real (relógio físico).
Múltiplos relógios físicos diferem em relação ao tempo real.
Características diferentes dos cristais usados na implementação dos relógios físicos. (drift rate)
Tempo Universal Coordenado (UTC), baseado no TAI (Tempo Atômico Internacional) e sincronizado com o tempo astronômico.
O tempo UTC está disponível via rede de satélites GPS.
*
*
*
Sincronização de Relógios
Relógios Físicos
Algoritmo de Cristian
Sincronizar todas as máquina do sistema com um servidor de tempo.
Periodicamente, cada máquina envia uma mensagem para o servidor de tempo, solicitando o tempo corrente.
O servidor responde o mais rápido possível com uma mensagem contendo o tempo corrente Cutc.
O tempo de propagação da mensagem deve ser levado em consideração para o ajuste do relógio físico do cliente (t1 – t0)/2.
*
*
*
Sincronização de Relógios
Relógios Físicos
Algoritmo de Cristian
Exemplo:
Cliente
Servidor
t0
t1
Tempo de tratamento da interrupção
Cutc
Requisição
*
*
*
Sincronização de Relógios
Relógios Físicos
Algoritmo de Berkeley
O servidor de tempo é uma entidade ativa; consulta periodicamente as máquinas do sistema a fim de saber o tempo corrente em cada uma delas.
Baseado nas respostas dos clientes o servidor calcula o tempo médio, e informa a todas as outras máquinas para avançar ou atrasar seus clocks.
*
*
*
Sincronização de Relógios
Relógios Físicos
Algoritmo de Berkeley
Exemplo:
Servidor
de Tempo
3:00
Máquina A
3:25
Máquina B
2:50
3:00
3:00
Servidor
de Tempo
3:00
Máquina A
3:25
Máquina B
2:50
-10
+25
Servidor
de Tempo
3:05
Máquina A
3:05
Máquina B
3:05
+15
-20
*
*
*
Sincronização de Relógios
Relógios Físicos
Network Time Protocol (NTP)
Provê uma arquitetura para um serviço de tempo baseada na Internet.
Os clientes através da Internet se sincronizam o mais preciso possível ao UTC (Tempo Universal Coordenado).
NTP emprega técnicas estatísticas para análise da qualidade dos dados de tempo de diferentes servidores.
O NTP é fornecido por uma rede de servidores localizados na Internet;
Os servidores são conectados em uma hierarquia lógica chamada sub-rede de sincronização, em que os níveis são chamados de strata.
NTP.br: http://ntp.br/
*
*
*
Sincronização de Relógios
Relógios Físicos
Network Time Protocol (NTP)
Exemplo:
1
2
3
3
2
3
Obs: as setas indicam controle de sincronização, os números fornecem o stratum.
*
*
*
Deadlock Distribuído
Assim como ocorre em sistemas centralizados, deadlocks também podem ocorrer em sistema distribuídos.
Estratégias para tratar deadlocks:
Algoritmo do avestruz
Detecção
Prevenção
Evitar a ocorrência de deadlocks com uma política de alocação de recursos bastante cuidadosa.
*
*
*
Deadlock Distribuído
Algoritmo do Avestruz
Assume que deadlocks são raros e que uma estratégia de tratamento é mais onerosa do que a sua ocorrência:
ENFIA A CABEÇA NA AREIA E FINGE QUE NÃO EXISTE O DEADLOCK.
Utiliza uma premissa semelhante ao usada nos bloqueios por concorrência otimista.
*
*
*
Deadlock Distribuído
Detecção Centralizada do Deadlock
Utilização de um algoritmo centralizado para detecção de deadlocks em sistemas distribuídos.
Cada máquina possui um grafo de alocação de recursos para seus próprios processos.
Um coordenador central mantêm um grafo de alocação de recursos para todo o sistema.
Quando o coordenador detecta um ciclo, ele mata um dos processos para evitar o deadlock.
O coordenador deve ser informado sobre pedidos de alocação e liberação de recursos por parte dos processos.
Problemas com o falso deadlock.
*
*
*
Deadlock Distribuído
Detecção Centralizada do Deadlock
Exemplo:
Máquina A
S
P1
P2
R
Máquina B
S
P3
T
Coordenador
Coordenador
P1
P2
R
S
P3
T
P1
P2
R
S
P3
T
Situação de falso deadlock
*
*
*
Deadlock Distribuído
Detecção Distribuída do Deadlock (Chandy – Misra – Haas)
Todas as máquinas que compõem o sistema compartilham a tarefa de detectar deadlocks.
Nessa solução é permitido que os processos requisitem vários recursos.
O algoritmo de Chandy-Misra-Haas é executado quando um processo deve esperar por algum recurso.
Envio de uma mensagem especial de sondagem para processos detentores de recursos.
Este algoritmo vale tanto para recursos locais quanto para recursos remotos.
A mensagem de sondagem é composta de três parâmetros:
O processo que iniciou a sondagem,
O processo que enviou a mensagem, e
O processo para o qual ela está sendo enviada.
*
*
*
Deadlock Distribuído
Detecção Distribuída do Deadlock (Chandy – Misra – Haas)
O receptor da mensagem de sondagem, verifica se ele próprio está aguardando por recursos de algum processo, se estiver atualiza a mensagem, alterando o segundo e o terceiro campo e em seguida envia a mensagem para o processo responsável pelo seu bloqueio.
Se uma determinada mensagem, retornar ao processo que a transmitiu, fica clara a existência de um deadlock.
A situação de deadlock pode ser desfeita forçando o processo que iniciou a sondagem a cometer suicídio.
*
*
*
Deadlock Distribuído
Detecção Distribuída do Deadlock (Chandy – Misra – Haas)
Exemplo:
P1
P2
P3
P4
P6
P5
P7
P8
P9
Máquina A
Máquina B
Máquina C
(1,3,4)
(1,9,1)
(1,5,7)
(1,6,8)
*
*
*
Deadlock Distribuído
Prevenção de Deadlocks Distribuídos
Projetar o sistema de forma cuidadosa, de maneira que a ocorrência de deadlocks seja estruturalmente impossível.
Uso de técnicas de marcação de tempo global (timestamp).
Um processo que possui um timestamp menor, possui prioridade na alocação de recursos.
*
*
*
Deadlock Distribuído
Prevenção de Deadlocks Distribuídos
Exemplo 1: (Algoritmo espere-e-morra (wait-die))
Processo Velho
10
Processo Jovem
20
Precisa do Recurso
Detém o Recurso
Espera
*
*
*
Deadlock Distribuído
Prevenção de Deadlocks Distribuídos
Exemplo 2: (Algoritmo espere-e-morra (wait-die))
Processo Jovem
20
Processo Velho
10
Precisa do Recurso
Detém o Recurso
Morre
*
*
*
Deadlock Distribuído
Prevenção de Deadlocks Distribuídos
Exemplo 1: (Algoritmo fere e espera (wound-wait))
Processo Velho
10
Processo Jovem
20
Precisa do Recurso
Detém o Recurso
Retira o recurso (Preempção)
Ferido
*
*
*
Deadlock Distribuído
Prevenção de Deadlocks Distribuídos
Exemplo 2: (Algoritmo fere e espera (wound-wait))
Processo Jovem
20
Processo Velho
10
Precisa do Recurso
Detém o Recurso
Espera
*
*
*
Algoritmos de Eleição
Os algoritmos distribuídos, em grande parte, precisam de um processo para agir como coordenador, seqüenciador, inicializador e etc.
É necessário alguma forma de eleger um processo para atuar como coordenador.
Em geral algoritmos eletivos tendem a designar como coordenador o processo com o número de identificação mais alto.
O objetivo de um algoritmo eletivo é assegurar que, quando for iniciada uma eleição, ela termine com todos os processos do sistema sabendo quem é o novo coordenador.
*
*
*
Algoritmos de Eleição
Algoritmo do Ditador (bully algorithm)
Quando um determinado processo nota que o coordenador não está respondendo as solicitações, ele inicia um eleição.
Um processo p, convoca uma eleição da seguinte forma:
P envia uma mensagem indicativa de eleição a todos os processos com números de identificação superiores ao seu.
Se nenhum processo responder, p ganha a eleição, tornando-se o coordenador.
Se algum dos processos consultados responder, ele passa a controlar a eleição.
O trabalho de p termina.
*
*
*
Algoritmos de Eleição
Algoritmo do Ditador (bully algorithm)
Exemplo:
P1
P2
P3
P4
P5
P6
P7
Atual coordenador
*
*
*
Algoritmos de Eleição
Algoritmo do Ditador (bully algorithm)
Exemplo:
P1
P2
P3
P4
P5
P6
P7
Atual coordenador
Processo P7 falha
*
*
*
Algoritmos de Eleição
Algoritmo do Ditador (bully algorithm)
Exemplo:
P1
P2
P3
P4
P5
P6
P7
P4 inicia a eleição
*
*
*
Algoritmos de Eleição
Algoritmo do Ditador (bully algorithm)
Exemplo:
P1
P2
P3
P4
P5
P6
P7
P5 e P6 confirmam a participação
*
*
*
Algoritmos de Eleição
Algoritmo do Ditador (bully algorithm)
Exemplo:
P1
P2
P3
P4
P5
P6
P7
P5 e P6 iniciam uma nova eleição
*
*
*
Algoritmos de Eleição
Algoritmo do Ditador (bully algorithm)
Exemplo:
P1
P2
P3
P4
P5
P6
P7
P6 confirma a participação para P5
*
*
*
Algoritmos de Eleição
Algoritmo do Ditador (bully algorithm)
Exemplo:
P1
P2
P3
P4
P5
P6
P7
P6 informa todos os outros processos que ele é o novo coordenador
*
*
*
Algoritmos de Eleição
Algoritmo em Anel (ring algorithm)
Os processos estão, física ou logicamente, ordenados, de forma que cada processo sabe quem é o seu sucessor.
Quando um processo p desconfiar que o coordenador está inativo, ele monta uma mensagem de convocação de eleição, contendo seu próprio número e a envia a seu sucessor.
Se o sucessor de p estiver inativo, p envia a mensagem para o próximo membro do anel, até localizar um processo ativo.
Eventualmente a mensagem retorna ao processo que a enviou pela primeira vez.
*
*
*
Algoritmos de Eleição
Algoritmo em Anel (ring algorithm)
Ao receber uma mensagem onde consta seu próprio número de identificação, o processo receptor envia uma mensagem a todos os outros processos informando quem é o novo coordenador.
O novo coordenador é o processo da lista de identificações, que tiver o maior número.
Quando a mensagem termina de circular pelo anel, ela é retirada da rede e todos os processos voltam ao trabalho.
*
*
*
Algoritmos de Eleição
Algoritmo em Anel (ring algorithm)
Exemplo:
P1
P2
P3
P4
P5
P6
P7
P8
Atual coordenador
*
*
*
Algoritmos de Eleição
Algoritmo em Anel (ring algorithm)
Exemplo:
P1
P2
P3
P4
P5
P6
P7
P8
Processo P8 falha
*
*
*
Algoritmos de Eleição
Algoritmo em Anel (ring algorithm)
Exemplo:
P1
P2
P3
P4
P5
P6
P7
P8
Processo P3 inicia a eleição
(3)
*
*
*
Algoritmos de Eleição
Algoritmo em Anel (ring algorithm)
Exemplo:
P1
P2
P3
P4
P5
P6
P7
P8
Processo P3 inicia a eleição
(3)
(3,4)
(3,4,5)
(3,4,5,6)
(3,4,5,6,7)
(3,4,5,6,7)
(3,4,5,6,7,1)
(3,4,5,6,7,1,2)
*
*
*
Algoritmos de Eleição
Algoritmo em Anel (ring algorithm)
Exemplo:
P1
P2
P3
P4
P5
P6
P7
P8
Processo P3 emite uma mensagem informando o novo coordenador
(3,4,5,6,7,1,2)
*
*
*
Algoritmo em Anel (ring algorithm)
Exemplo:
P1
P2
P3
P4
P5
P6
P7
P8
P7 é o novo coordenador
Algoritmos de Eleição

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando