sincronização distribuída de processos

48
Sincronização Distribuída de Processos Francisco Heron de Carvalho Junior, Dr.

Upload: heron-carvalho

Post on 06-Jun-2015

4.992 views

Category:

Technology


0 download

DESCRIPTION

Aula sobre Sincronização de Processos em Memória Distribuída

TRANSCRIPT

Page 1: Sincronização Distribuída de Processos

Sincronização Distribuída de Processos

Francisco Heron de Carvalho Junior, Dr.

Page 2: Sincronização Distribuída de Processos

Tópicos Abordados

• Concorrência e Sincronização;• Mecanismos de sincronização de processos;

– Memória Compartilhada;• Semáforos e monitores

– Memória DistribuídaMemória Distribuída;;• Passagem de mensagens Passagem de mensagens assíncronaassíncrona;;• Passagem de mensagens Passagem de mensagens síncronasíncrona;;• Chamada de procedimento remoto (RPC);Chamada de procedimento remoto (RPC);• Rendezvous;Rendezvous;

• Paradigmas de sincronização distribuídaParadigmas de sincronização distribuída;;• Conclusões;

Objetivos

Page 3: Sincronização Distribuída de Processos

Concorrência e Sincronização

Objetivo:Definir o conceito de sincronização dentro

do contexto de concorrência

Page 4: Sincronização Distribuída de Processos

Concorrência e Sicronização(processos)

• Processos: procedimentos concorrentes– Procedimento: sequência de ações (ordem total);

– Linhas de instruções independente;

– Programa concorrente: ordem parcial de ações;

P

P1

P2

Pn

paradigma sequencial paradigma concorrente

... ...

Page 5: Sincronização Distribuída de Processos

Concorrência e Sicronização(arquiteturas concorrentes)

... ...

uniprocessadamultiprocessada(memória compartilhada) distribuída

Unidade de memória

Unidade de processamento

Processorederede

Page 6: Sincronização Distribuída de Processos

Concorrência e Sincronização(Histórias de Execução)

• Histórias de Execução:– Sequência de ações executadas por um programa;– Número de histórias possíveis, mesmo para

programas simples, é enorme !!!!

• Interferência entre processos concorrentes:– Um processo invalida uma suposição que diz

respeito ao estado de um outro processo em execução, levando-o a um estado inconsistente;

Page 7: Sincronização Distribuída de Processos

Concorrência e Sincronização(Modelando Interferência usando Lógica de Programação)

• Estado de um processo:– Conteúdo do valor das variáveis em seu escopo;

• Podemos caracterizar um conjunto de estados por meio de predicados lógicos (Tony Hoare, 1969);– {P} S {Q}

– P é uma pré-condição (pre(S));

– Q é uma pós-condição (pos(S));

– S é uma ordem parcial de ações;

• Lógica de programação:– Conjunto de axiomas e regras de inferência para prova de corretude

parcial de programas;

– Extensão à lógica de predicados;

Page 8: Sincronização Distribuída de Processos

Concorrência e Sincronização(Modelando Interferência usando Lógica de Programação)

• Ação elegível;• Seja C um predicado que que caracteriza o estado de

execução de um processo P1 após a execução da ação s1 e antes da execução da ação s2:– P1:: ... s1 {C} s2 ...– C é chamada assertiva crítica;

• Seja a uma ação de atribuição em um processo P2:– P2 :: ... {P} a {Q} ...

• Em nenhuma história possível, a execução de a deve tornar C falso quando s2 é elegível;– {C P} a {C}

• Caso contrário, diz-se que P2 interfere com P1;

x := e

Page 9: Sincronização Distribuída de Processos

Concorrência e Sincronização(Interferência)

• Sincronização;

– Filtragem de histórias indesejáveis, onde ocorre

interferência entre processos ;

• Como evitar interferência ?

– Exclusão mútua;

– Sincronização condicional;

Page 10: Sincronização Distribuída de Processos

Concorrência e Sincronização(Exclusão Mútua)

• Exclusão mútua:

– Agrupar sequências de ações em ações de mais

grossa granularidade;

a1; a2; ... ; an

• Execução atômica de sequências de ações;

– Escondendo o estado que sofre interferência;• Seções críticas;

• P1:: ... a1 {C} a2 ...

Page 11: Sincronização Distribuída de Processos

Concorrência e Sincronização(Exclusão Mútua)

• Sincronização condicional:

– Um processo atrasa sua execução até que uma condição torne-se

verdadeira;

– wp(S,Q): predicado mais fraco para que, depois da execução de a

a, Q seja verdadeiro:

• Weakest pre-condition;

• ... {wp(S,Q)} S {Q} ...

• Se P wp(S, Q) então P :: ... {P} S {Q} ...

– Evitando interferência:

• P2 :: ... await C wp(a,C) a ...

Page 12: Sincronização Distribuída de Processos

Concorrência e Sincronização(await)

await B S implementa sincronização

por exclusão mútua e sincronização

condicional;

– Leslie Lamport, 1980;

• Implementação ineficiente em máquinas

convencionais;

– Técnicas baseadas em espera ocupada;

Page 13: Sincronização Distribuída de Processos

Modelos de Sincronização de Processos (Memória compartilhada)

• Semáforos:– Primitivas de mais baixo nível (wait e signal);

– Simplicidade e eficiência;

– Entretanto, torna complicada a programação para aplicações complexas;

• Monitores:– Mecanismo de mais alto nível de abstração;

– Exclusão mútua implícita;

– Encapsulamento de variáveis;

– Ortogonalização de processos e monitores;

– Apropriado para aplicações complexas que exigem maior estruturação;

Page 14: Sincronização Distribuída de Processos

Modelos de Sincronização de Processos (Memória distribuída)

• Processos não compartilham variáveis;

• Comunicação através de redes de comunicação;

• Primitivas de sincronização devem suportar o transporte de dados entre processos;

• Mecanismos de Mecanismos de sincronização distribuídasincronização distribuída::– Passagem de Mensagens;Passagem de Mensagens;

• Assíncrona;Assíncrona;

• Síncrona;Síncrona;

– Chamada de procedimento remoto;Chamada de procedimento remoto;

– RendezvousRendezvous;;

Page 15: Sincronização Distribuída de Processos

Sincronização Distribuída

Passagem de Mensagens Assíncrona

Page 16: Sincronização Distribuída de Processos

Passagem de Mensagens Assíncrona

• Canais– Únicos objetos

compartilhados entre processos;

– Abstração de um meio de transmissão (rede);

– Caminho de comunicação entre dois processos;

– Fila de mensagens;

...

sendrecv

Page 17: Sincronização Distribuída de Processos

Passagem de Mensagens Assíncrona

sendsend

recvrecv

recvrecv

sendsend

... ... ... ...

... ...

... ...

... ...

... ...... ...

emissoremissor receptorreceptor emissoremissor receptorreceptor

Bloqueio do receptorBloqueio do receptor((sincronizaçãosincronização))

tteemmppoo

Page 18: Sincronização Distribuída de Processos

Passagem de Mensagens Assíncrona

• Suposições:– canais seguros;

• Sem corrupção de mensagens;

• Sem replicação de mensagens;

• Sem perda de mensagens;

– mensagens ordenadas;• Recebimento na ordem de envio;

• Canais FIFO (First In, First Out);

Page 19: Sincronização Distribuída de Processos

Passagem de Mensagens Assíncrona

• chan ch(id1:type1,..., idn:typen)

• send ch(expr1,..., exprn)

– Os tipos de expri devem corresponder aos tipos dos componentes do canal;

• receive ch(var1,..., varn)

– Os tipos de vari devem corresponder aos tipos dos componentes do canal;

• empty ch– Verifica se o canal está vazio

Page 20: Sincronização Distribuída de Processos

Passagem de Mensagens Assíncrona

chan input(char), output([1:MAXLINE] char)Char_to_Line:: var line[1:MAXLINE]: char, i:int := 1 do true receive input(line[i]) do line[i] CR and i < MAXLINE i := i + 1; receive input(line[i]) od send output(line); i:=1 od

Page 21: Sincronização Distribuída de Processos

Passagem de Mensagens Assíncrona

Caixa de MensagensCaixa de Mensagens((mail boxesmail boxes))

Porta de EntradaPorta de Entrada((input portinput port))

LigaçãoLigação((linklink))

......

...... ......

Page 22: Sincronização Distribuída de Processos

Passagem de Mensagens Assíncrona

• Desvantagens:– Transmissor precisa saber se receptor recebeu a

mensagem:• Uso de reconhecimento;

– Entrega de mensagens não é garantida;• Como saber o que ocorreu caso o reconhecimento não

chegue ??

– Buffers não podem ser infinitos• Muitas mensagens CRASH! ou bloqueio no send;• Violação da semântica do send;

Page 23: Sincronização Distribuída de Processos

Sincronização Distribuída

Passagem de Mensagens Síncrona

Page 24: Sincronização Distribuída de Processos

Passagem de Mensagens Síncrona

• Não há buffers;• Processo transmissor espera até que o receptor

receba a mensagem;• Comando de atribuição distribuída;• Vantagens:

– Simplifica a solução de alguns problemas;– Evita manipulação dinâmica de buffers;

• Desvantagens:– Dificulta programação de alguns problemas;

• CSP e OCCAM;

Page 25: Sincronização Distribuída de Processos

Passagem de Mensagens Síncrona

• Processo A deseja comunicar um valor a um processo B através da porta p:– A:: … B!p(e1,e2,…,en) … {envio}– B:: … A?p(x1,x2,…,xn) … {recebimento}

• B permanece bloqueado até que A receba os valores e1, e2,…, en e os atribua às suas variáveis x1, x2,…, xn;– xi := ei, 1 i n

• Os tipos de ei e xi devem ser compatíveis;• Portas identificam tipos de mensagens;

Page 26: Sincronização Distribuída de Processos

Passagem de Mensagens Síncrona

sendsend

recvrecv

recvrecv

sendsend

emissoremissor receptorreceptor emissoremissor receptorreceptor

Bloqueio do receptorBloqueio do receptor((sincronizaçãosincronização))

tteemmppoo

Bloqueio do emissorBloqueio do emissor((sincronizaçãosincronização))

Page 27: Sincronização Distribuída de Processos

Passagem de Mensagens Síncrona

• Comunicação guardada;– Comando de comunicação guardado

• B; C S

• B é uma expressão booleana (opcional);

• C é um comando de comunicação (opcional);

• S é uma lista de comandos;

– B e C compõem uma guarda;– A guarda sucede-se se B é verdadeiro e C não

causa bloqueio;

Page 28: Sincronização Distribuída de Processos

Passagem de Mensagens Síncrona

• Comunicação guardada (uso com if)– Uma das guardas ativas é escolhida não-

deterministicamente;

– if B1; C1 S1

[] B2; C2 S2

[] Bn; Cn Sn

fi

...... ...... ......

Page 29: Sincronização Distribuída de Processos

Passagem de Mensagens Síncrona

• Comunicação guardada (uso com do)– Repetidamente, uma das guardas ativas é

escolhida não-deterministicamente, até quando nenhuma estiver ativa;

– do B1; C1 S1

[] B2; C2 S2

[] Bn; Cn Sn

od

...... ...... ......

Page 30: Sincronização Distribuída de Processos

Passagem de Mensagens Síncrona

Copy :: var buffer[1:10]:char var front:=1, rear:=1, count:=0 do count < 10; West?buffer[rear] count++; rear := (rear mod 10) + 1 [] count > 0; East!buffer[front] count--; front := (front mod 10) + 1 od

GCD :: var x,y: int do (i:1..n) Client ? args(x,y) do xy x:=x-y [] xy y:=y-x od Client[i] ! result(x) od

Page 31: Sincronização Distribuída de Processos

Sincronização Distribuída

Chamada de Procedimento Remoto

Page 32: Sincronização Distribuída de Processos

Chamada de Procedimento Remoto

• Módulos – Ocupam espaços de endereçamento distintos;– Analogia com monitores;– Declaram processos exportados e em background;

• Um processo (servidor) é dinamicamente criado para executar chamada a procedimento remoto;

• O processo que chama o procedimento prossegue após o retorno deste;– Semântica semelhante à chamada sequencial de

procedimentos;

Page 33: Sincronização Distribuída de Processos

Chamada de Procedimento Remoto

processoprocessochamadorchamador

processo processo servidorservidor

callcall

MóduloMódulo

Page 34: Sincronização Distribuída de Processos

Chamada de Procedimento Remoto

• Módulo:– module module_name

cabeçalhos de operações exportadas;body declarações de variáveis; código de inicialização; procedimentos para operações exportadas; procedimentos e processos locais (background);end module_name

• Cabeçalho de operação exportada:– op op_name(formals) [returns result];

• Operação:– proc op_name(formals identifiers) returns rident;

declarações de variáveis locais lista de comandosend

• Chamada de procedimento remoto:– call mname.opname(arguments);

Page 35: Sincronização Distribuída de Processos

Chamada de Procedimento Remoto

• Sincronização condicional e exclusão mútua entre processos servidores e em background:

– Exclusão mútua explícita

• Uso de semáforos e monitores;

– Exclusão mútua implícita:

• Sincronização condicional por variáveis condicionais;

Page 36: Sincronização Distribuída de Processos

Chamada de Procedimento Remoto

......

REDE DE COMUNICAÇÃOREDE DE COMUNICAÇÃO

módulo módulo

módulo

módulo

módulo

módulo

callcall

callcall

Page 37: Sincronização Distribuída de Processos

Chamada de Procedimento Remoto

module TimeServer op get_time() returns int; op delay(int interval);body int tod = 0 sem m = 1; sem d[n] = ([n] 0); queue of (int waketime, int process_id) napQ; proc get_time() returns time { time = tod; } proc delay(interval) int waketime = tod + interval; P(m); insert (waketime, myid) em napQ: V(m); P(d[myid]); } (...)

Page 38: Sincronização Distribuída de Processos

Chamada de Procedimento Remoto

(...) process Clock { inicie cronômetro do sistema; while (true) { tod ++; P(m); while (tod >= menor waketime em napQ) { remove (waketime, id) from napQ; V(d[id]); } V(m); } }end TimeServer

Page 39: Sincronização Distribuída de Processos

Sincronização Distribuída

Rendezvous

Page 40: Sincronização Distribuída de Processos

Rendezvous

• Combinando comunicação e sincronização;• Como em RPC, processo cliente invoca operação

por meio da instrução call;• Diferente de RPC, um único processo servidor é

usado para servir as chamadas aos procedimentos:– Comando de entrada (in);

– Operações são servidas uma de cada vez;

– Sincronização implícita;

• Linguagem ADA;

Page 41: Sincronização Distribuída de Processos

Rendezvous

processoprocessochamadorchamador

processo processo servidorservidor

(corpo de (corpo de inin))

callcall

MóduloMódulo

inin

Page 42: Sincronização Distribuída de Processos

Rendezvous

• A operação in:– in op1(formals1) and B1 by e1 S1;[] op2(formals2) and B2 by e2 S2;[] opn(formalsn) and Bn by en Sn;ni

• A operação in:– opi : identificador da operação;– Bi : expressão de sincronização;– ei : expressão de escalonamento;– Si : lista de comandos;

...... ............ ......

Page 43: Sincronização Distribuída de Processos

Rendezvous

module BoundedBuffer op deposit(typeT), fetch(result typeT);body process Buffer { typeT buf[n]; int front = 0, rear = 0, count = 0; while (true) in deposit(item) and count < n buf[rear] = item; rear = (rear + 1) mod n; count++; [] fetch(item) and count > 0 item = buf[front]; front = (front + 1) mod n; count--; ni }

Page 44: Sincronização Distribuída de Processos

Paradigmas de Sincronização Distribuída

Padrões de Interação entre Processos

Page 45: Sincronização Distribuída de Processos

Paradigmas de Sincronização Distribuída

• Tipos de Processos:– Filtros;– Clientes;– Servidores;– Peers;

• Padrões de interação entre-processos:– Produtor / Consumidor (1);– Interacting peers (2);– Cliente / Servidor (3);

• Passagem de mensagens: (1) e (2);• RPC e rendezvous: (3).

Page 46: Sincronização Distribuída de Processos

Paradigmas de Sincronização Distribuída

• Gerente / Trabalhadores;– Multiplicação de matrizes

esparsas;

– Quadratura adaptativa;

• Algoritmos sistólicos;– Rotulações de regiões

(processamento de imagens);

– Autômatos celulares;

• Algoritmos pipe-line;– Multiplicação de matrizes;

• Probe / echo;– Disseminação em rede;

– Computação da topologia de uma rede;

• Disseminação;– Relógios lógicos e ordenação

de eventos;

– Semáforos Distribuídos

• Passagem do token;– Exclusão mútua distribuída;

– Detecção de terminação (em anel e em grafo);

• Servidores replicados;– Solução descentralizada ao

jantar dos filósofos;

Page 47: Sincronização Distribuída de Processos

Conclusões

• Computação distribuída tem se tornado onipresente;– Internet, interconectividade, etc;

• Diversos mecanismos surgiram nas últimas décadas para sincronização distribuída;– Nichos de aplicações complementares;

• Padrões de interação conhecidos devem ser observados na construção de aplicações distribuídas;– Esqueletos;

– Templates;

Page 48: Sincronização Distribuída de Processos

Sincronização Distribuída de Processos

Francisco Heron de Carvalho Junior, Dr.