sincronização distribuída de processos

Post on 06-Jun-2015

4.992 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

Sincronização Distribuída de Processos

Francisco Heron de Carvalho Junior, Dr.

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

Concorrência e Sincronização

Objetivo:Definir o conceito de sincronização dentro

do contexto de concorrência

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

... ...

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

... ...

uniprocessadamultiprocessada(memória compartilhada) distribuída

Unidade de memória

Unidade de processamento

Processorederede

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;

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;

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

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;

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 ...

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 ...

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;

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;

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;;

Sincronização Distribuída

Passagem de Mensagens Assíncrona

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

Passagem de Mensagens Assíncrona

sendsend

recvrecv

recvrecv

sendsend

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

... ...

... ...

... ...

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

emissoremissor receptorreceptor emissoremissor receptorreceptor

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

tteemmppoo

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);

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

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

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))

......

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

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;

Sincronização Distribuída

Passagem de Mensagens Síncrona

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;

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;

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))

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;

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

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

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

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

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

Sincronização Distribuída

Chamada de Procedimento Remoto

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;

Chamada de Procedimento Remoto

processoprocessochamadorchamador

processo processo servidorservidor

callcall

MóduloMódulo

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);

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;

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

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]); } (...)

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

Sincronização Distribuída

Rendezvous

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;

Rendezvous

processoprocessochamadorchamador

processo processo servidorservidor

(corpo de (corpo de inin))

callcall

MóduloMódulo

inin

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;

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

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 }

Paradigmas de Sincronização Distribuída

Padrões de Interação entre 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).

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;

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;

Sincronização Distribuída de Processos

Francisco Heron de Carvalho Junior, Dr.

top related