SD_2.3_OK

Propaganda
4. Algoritmos Distribuídos
4.3 Exclusão Mútua Distribuída
 Processos podem compartilhar recursos;
 Exclusão mútua previne inconsistências;
 Recurso gerenciado por servidores;
o Controla por transações;
 Recurso distribuído;
o Algoritmo específico;
 Ex.: atualização de arquivo texto:
o Trava o arquivo no servidor;
o Atualiza e destrava;
 Ex.: Transmissão rede Ethernet:
o Não é centralizado;
o Todos cooperam no acesso ao recurso;
 Ex.: Monitor de vagas de estacionamento:
o Registra número total;
o Informa se está cheio;
o Quantidade de carros é um recurso compartilhado;
 Exemplos precisam de exclusão mútua;
Algoritmos de Exclusão Mútua
 N processos (p1, p2, p3....pn);
 Existem uma ou mais seções críticas;
 Protocolo de acesso:
o enter(): entra na seção crítica;
o resourceAccesses(): acessa recurso compartilhado;
o exit(): saí da seção crítica;
 Requisitos:
o ME1 (segurança): no máximo um processo na seção crítica;
o ME2 (liveness): requisições para entrar e sair da CS são
atendidas;
o ME3 (ordenação): entrada na CS segue ordem de solicitação;
Algoritmo Centralizado:
 Servidor controla o acesso;
Queue of
reques ts
Server
4
2
1. Reques t
token
p
1
p2
3. Grant
token
2. Releas e
token
p
3
 Processo requisita acesso ao servidor e aguarda resposta;
 A resposta é a permissão de acesso;
 Se outro processo está na CS:
o Requisições são enfileiradas;
o Quando processo sai: servidor autoriza outro;
 Assume-se que não ocorrem falhas;
p4
 Exemplo:
Algoritmo de anel lógico
 Processos em anel lógico;
 Exclusão por token;
p
1
p
2
pn
p
3
p
4
Token
 Condições ME1 (segurança) e ME2 (liveness);
o Não obedece a condição ME3 (ordenação);
Algoritmo de relógio lógico
 Processo que quer entrar envia multicast solicitando;
 Pode entrar quando todos os outros responderam a requisição;
 Cada processo possui um relógio de lamport;
 Conteúdo da requisição: <T, pi>;
 Estado dos processos:
o Dentro (held);
o Interessado (wanted);
o Liberado (released);
 Algoritmo:
On initialization
state := RELEASED;
To enter the section
state := WANTED;
}
Multicast request to all processes;
}request processing deferred here
T := request’s timestamp;
}
Wait until (number of replies received = (N – 1));
state := HELD;
On receipt of a request <Ti, pi> at pj (i ≠ j)
if (state = HELD or (state = WANTED and (T, pj) < (Ti, pi)))
then
queue request from pi without replying;
else
reply immediately to pi;
end if
To exit the critical section
state := RELEASED;
reply to any queued requests;
 Se não tem outro interessado, quem requisita pode entrar;
o Se tem, entra o de menor timestamp;
41
p
41
p
3
Repl
y
1
34
Repl
34 y
4
1
p
2
o
o
o
o
o
o
o
o
P3 não está interessado;
P1 requisita com T=41;
P2 requisita com T=34;
P3 responde para p1 e p2;
P1 responde para p2;
P2 entra na CS;
P2 sai da CS e responde para p1;
P1 entra na CS;
 Exemplo:
Repl
y
34
Algoritmo Maekawa de Votação
 Nem todos os processos precisam permitir o acesso;
 O interessado coleta votos suficientes para entrar;
 Associa um conjunto de votos a um processo;
o Vi para pi;
o Vi = {p1, p2, p3.....};
 Regras para Vi:
o Pi pertence a Vi;
o Vi ∩ Vj ≠ Ø;
 Algoritmo:
On initialization
state := RELEASED;
voted := FA LSE;
For pi to enter the critical section
state := WANTED;
Multicast request to all processes in Vi – {pi};
Wait until (number of replies received = (K – 1));
state := HELD;
On receipt of a request from pi at pj (i ≠ j)
if (state = HELD or voted = TRUE)
then
queue request from pi without replying;
else
send reply to pi;
voted := TRUE;
end if
For pi to exit the critical section
state := RELEASED;
Multicast release to all processes in Vi – {pi};
On receipt of a release from pi at pj (i ≠ j)
if (queue of requests is non-empty)
then
remove head of queue – from pk, say;
send reply to pk;
voted := TRUE;
else
voted := FALSE;
end if
 Pi manda requisição para K – 1 processos de Vi;
 Pi entra quando todos respondem;
 Pj dee Vi responde imediatamente para pi:
o A menos que esteja na CS, ou;
o Esteja sendo votado;
 Se pj não responde, ele enfileira a requisição;
 Quando sai da CS, pj vota no primeiro da fila;
 Quando sai da CS pi manda release para todos de Vi;
 Se um processo de Vi ∩ Vj ≠ Ø fota em 2 processos:
o Seria possível 2 processos entrarem na CS;
 O algoritmo só permite um voto entre o recebimento de releases;
Download