canais síncronos

52
Mestrado e Doutorado em Ciência da Computação Mestrado e Doutorado em Ciência da Computação Universidade Federal do Ceará Universidade Federal do Ceará II. Memória Distibuída II. Memória Distibuída Passagem de Mensagens Passagem de Mensagens Síncrona Síncrona Fco. Heron de Carvalho Jr., Fco. Heron de Carvalho Jr., Dr. Dr. [email protected]

Upload: heron-carvalho

Post on 21-Jun-2015

836 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Canais Síncronos

Mestrado e Doutorado em Ciência da ComputaçãoMestrado e Doutorado em Ciência da ComputaçãoUniversidade Federal do CearáUniversidade Federal do Ceará

II. Memória DistibuídaII. Memória Distibuída

Passagem de Mensagens Passagem de Mensagens SíncronaSíncrona

Fco. Heron de Carvalho Jr., Dr.Fco. Heron de Carvalho Jr., [email protected]

Page 2: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 22

IntroduçãoIntrodução

Dificuldades com Passagem de Mensagens Dificuldades com Passagem de Mensagens AssíncronaAssíncrona• TransmissorTransmissor precisa saber se precisa saber se receptorreceptor recebeu a recebeu a

mensagem:mensagem:» Uso de Uso de reconhecimentoreconhecimento;;

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

chegue ??chegue ??

• BuffersBuffers não podem ser não podem ser infinitosinfinitos» Muitas mensagens Muitas mensagens CRASH! ou bloqueio no CRASH! ou bloqueio no send;send;» Violação da semântica do Violação da semântica do sendsend;;

Page 3: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 33

IntroduçãoIntrodução

Passagem de Mensagens SíncronaPassagem de Mensagens Síncrona• Não há Não há buffersbuffers;;• Processo Processo transmissortransmissor espera até que o espera até que o receptorreceptor

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

» Simplifica a solução de alguns problemas;Simplifica a solução de alguns problemas;» Evita alocação dinâmica de Evita alocação dinâmica de buffersbuffers;;

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

• CSP e OCCAM (Hoare)CSP e OCCAM (Hoare)

Page 4: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 44

NotaçãoNotação

Processo Processo AA deseja comunicar um valor a deseja comunicar um valor a um processo um processo BB::• A:: … B!A:: … B!ee … {comando de sa … {comando de saída}ída}• B:: … A?B:: … A?xx… {comando de entrada}… {comando de entrada}

AA fica bloqueado até que fica bloqueado até que BB receba o valor receba o valor ee e atribua a sua variável e atribua a sua variável xx;;

Os tipos de Os tipos de ee e e xx devem coincidir; devem coincidir;

Page 5: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 55

NotaçãoNotação

Forma geral:Forma geral:• destinodestino ! ! portaporta (e (e11,…,e,…,enn))

• fontefonte ? ? portaporta (x (x11,…,x,…,xnn))

PortasPortas são usadas para identificar os são usadas para identificar os tipostipos de mensagens;de mensagens;• Alternativa ao simples Alternativa ao simples casamento de tiposcasamento de tipos que que

pode causar confusão;pode causar confusão;

Page 6: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 66

NotaçãoNotação

Casando comandos de comunicação:Casando comandos de comunicação:• Um Um comando de saídacomando de saída e um e um comando de comando de

entradaentrada casamcasam se todos as 4 condições se todos as 4 condições seguintes são aceitas:seguintes são aceitas:» O O comando de saídacomando de saída aparece no processo aparece no processo

nomeado pelonomeado pelo comando de entrada comando de entrada;;» O O comando de entradacomando de entrada aparece no processo aparece no processo

nomeado pelonomeado pelo comando de saída comando de saída;;» Os identificadores das portas são os mesmos e, Os identificadores das portas são os mesmos e,

caso presentes, os valores subscritos também;caso presentes, os valores subscritos também;» Todos os xTodos os xii:= e:= eii são atribuições válidas; são atribuições válidas;

Page 7: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 77

NotaçãoNotação

Exemplo 1:Exemplo 1:

CopyCopy:: var c:char:: var c:char do true do true WestWest ? ? cc; ; EastEast ! ! cc od od

Exemplo 2:Exemplo 2:

GCD :: GCD :: varvar x,y: x,y: intint do do truetrue Client Client ? ? argsargs((xx,,yy)) do do xxyy xx:=:=xx--yy [] [] xxyy yy:=:=yy--xx od od ClientClient ! r ! resultesult((xx)) od od

Page 8: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 88

NotaçãoNotação

Uso de GCD pelo cliente:Uso de GCD pelo cliente:

… … GCD GCD ! ! aargsrgs((v1v1,,v2v2);); ...; ...; GCD GCD ? ? resultresult(r) …(r) …

Page 9: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 99

NotaçãoNotação

ComunicaComunicação ção guardadaguardada;;• Processos querem se comunicar com mais de Processos querem se comunicar com mais de

um processo mas em uma ordem arbritária;um processo mas em uma ordem arbritária;• Exemplos:Exemplos:

» CopyCopy com com bufferbuffer: se há mais de 1 e menos de 10 : se há mais de 1 e menos de 10 caracteres no buffer, pode-se ler de caracteres no buffer, pode-se ler de WestWest ou ou escrever em escrever em EastEast;;

» GCDGCD pode ter múltiplos clientes; pode ter múltiplos clientes;

Page 10: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 1010

NotaçãoNotação

ComunicaComunicação ção guardadaguardada;;• Comando de comunicação guardadoComando de comunicação guardado

» BB; ; CC SS• BB é uma expressão é uma expressão booleana booleana (opcional);(opcional);• CC é um é um comando de comunicaçãocomando de comunicação (opcioinal); (opcioinal);• SS é uma lista de comandos; é uma lista de comandos;

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

causa causa bloqueiobloqueio;;

Page 11: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 1111

NotaçãoNotação

ComunicaComunicação ção guardadaguardada;;• Uso com Uso com if if

» Uma das guardas Uma das guardas ativasativas é escolhida não- é escolhida não-deterministicamentedeterministicamente;;

• Uso com Uso com dodo» Repetidamente, uma das guardas Repetidamente, uma das guardas ativasativas é é

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

Page 12: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 1212

NotaçãoNotação

Uso de comunicação guardada em Uso de comunicação guardada em CopyCopy : :

CopyCopy:: var c:char:: var c:char do do WestWest ? ? C C EastEast ! ! cc od od

CopyCopy:: var :: var bufferbuffer[1:10]:char[1:10]:char var var frontfront:=1, :=1, rearrear:=1, :=1, countcount:=0:=0 do do countcount < 10; < 10; WestWest??bufferbuffer[[rearrear] ] countcount++; ++; rearrear := ( := (rearrear mod 10) + 1 mod 10) + 1 [] [] countcount > 0; > 0; EastEast!!bufferbuffer[[frontfront] ] countcount--; --; frontfront := ( := (frontfront mod 10) + 1 mod 10) + 1 od od

Page 13: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 1313

NotaçãoNotação

Uso de comunicação guardada em Uso de comunicação guardada em GCDGCD::

GCD :: GCD :: varvar x,y: x,y: intint do do (i:1..n) (i:1..n) ClientClient[i][i] ? ? aargsrgs[i][i]((xx,,yy) ) do do xxyy xx:=:=xx--yy [] [] xxyy yy:=:=yy--xx od od ClientClient[[ii] ! ] ! rresultesult[i][i]((xx)) od od

Page 14: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 1414

NotaçãoNotação

A::var x,y:int; A::var x,y:int; if B!x if B!x B?y B?y [] B?y [] B?y B!x B!x fi fi

B::var x,y:int; B::var x,y:int; if A!x if A!x A?y A?y [] A?y [] A?y A!x A!x fi fi

Page 15: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 1515

Semântica FormalSemântica Formal

Passos para construir a prova de um Passos para construir a prova de um programa por passagem de mensagens programa por passagem de mensagens sícrona:sícrona:• Prova individual de cada processo;Prova individual de cada processo;• Mostrar não-interferência;Mostrar não-interferência;• Mostrar que as suposições de comunicação Mostrar que as suposições de comunicação

são satisfeitas;são satisfeitas;» Regra de satisfação;Regra de satisfação;

Page 16: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 1616

Semântica FormalSemântica Formal

Considere os comandos de comunicação:Considere os comandos de comunicação:• out: out: DestinoDestino ! ! portaporta(e(e11,...,e,...,enn))• In : In : FonteFonte ? ? portaporta(x(x11,...,x,...,xnn))

Se dois Se dois comandos de comunicacomandos de comunicação ção casamcasam, , o efeito é a atribuição das expressões para o efeito é a atribuição das expressões para as variáveis;as variáveis;

Caso contrário, Caso contrário, deadlock deadlock !!• Qualquer coisa pode ser Qualquer coisa pode ser concluídaconcluída como pós-como pós-

condição desses comandos de atribuição;condição desses comandos de atribuição;

Page 17: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 1717

Semântica FormalSemântica Formal

Axioma da Saída:Axioma da Saída:• {P} {P} out: out: DestinoDestino ! ! portaporta(e(e11,...,e,...,enn)) {U} {U}

Axioma da EntradaAxioma da Entrada• {Q} {Q} in: in: FonteFonte ? ? portaporta(x(x11,...,x,...,xnn)) {V} {V}

Prova de satisfaçãoProva de satisfação• (P(P Q) Q) wpwp(x(x11,...x,...xnn := e := e11,...e,...emm, U, U V) V)

Page 18: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 1818

Semântica FormalSemântica Formal

Regra da Satisfação comunicação Regra da Satisfação comunicação síncronasíncrona• Seja Seja in in um comando de entrada com pré-um comando de entrada com pré-

condição P e pós-condição U. condição P e pós-condição U. • Seja Seja out out um comando de saída com pré-um comando de saída com pré-

condição Q e pós-condição V.condição Q e pós-condição V.• Para todos os tais pares de comandos de Para todos os tais pares de comandos de

comunicação casados, temos:comunicação casados, temos: n

n

xxeeVUQP

1

1

Page 19: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 1919

Semântica FormalSemântica Formal

Novas regras de inferência para Novas regras de inferência para ifif e e dodo• Comandos de atribuição podem aparecer nas Comandos de atribuição podem aparecer nas

guardas;guardas;• Transformando Transformando comandos de comunicação comandos de comunicação

guardadosguardados em em comandos guardados simplescomandos guardados simples correspondentes;correspondentes;» B; C B; C S tem o mesmo efeito de B S tem o mesmo efeito de B C; S para C; S para

efeito de prova;efeito de prova;» O segundo é mais sujeito a O segundo é mais sujeito a deadlocksdeadlocks;;

Page 20: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 2020

Semântica FormalSemântica Formal

Regra da alternativaRegra da alternativa• CIFCIF: if B: if B11; C; C11 S S11 [] ... [] B [] ... [] Bnn; C; Cnn S Snn fi fi

}{}{

1},{;}{

)( 1

QCIFP

niQSCBP

QBBP

iii

n

Page 21: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 2121

Semântica FormalSemântica Formal

Regra da iteraçãoRegra da iteração• CDOCDO: do B: do B11; C; C11 S S11 [] ... [] B [] ... [] Bnn; C; Cnn S Snn od od

n

ii

BBICDOI

niISCBI

1

1,;

Page 22: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 2222

Prova de não-interferênciaProva de não-interferência• Uso de Uso de variáveis auxiliaresvariáveis auxiliares exige exige prova de prova de

não-interferêncianão-interferência;;• Variáveis auxiliares em em comunicação Variáveis auxiliares em em comunicação

síncronasíncrona» UU em geral para construir a prova de um programa, em geral para construir a prova de um programa,

não afetando seu comportamento;não afetando seu comportamento;

Semântica FormalSemântica Formal

Page 23: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 2323

Semântica FormalSemântica Formal

Restrição da variável auxiliarRestrição da variável auxiliar• Variáveis auxiliares somente aparecem:Variáveis auxiliares somente aparecem:

» Como Como destinosdestinos em em comandos de atribuiçãocomandos de atribuição ou em ou em expressõesexpressões à direita em comandos de atribuição à direita em comandos de atribuição contanto que o destino correspondente da contanto que o destino correspondente da atribuição seja uma variável auxiliar;atribuição seja uma variável auxiliar;

» Como Como variáveisvariáveis em em comandos de entrada comandos de entrada ou em ou em expressõesexpressões em em comandos de saídacomandos de saída, contanto que a , contanto que a correspondente variável em qualquer comando de correspondente variável em qualquer comando de entrada casado seja uma entrada casado seja uma variável auxiliarvariável auxiliar e o e o conjunto de comandos de atribuição casados não conjunto de comandos de atribuição casados não são afetados pela presença de variáveis auxiliares;são afetados pela presença de variáveis auxiliares;

Page 24: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 2424

Semântica FormalSemântica Formal

Prova de não-interferênciaProva de não-interferência• Mostrar que cada assertiva crítica Mostrar que cada assertiva crítica CC na prova na prova

de um processo é de um processo é invarianteinvariante com respeito a com respeito a execução de qualquer ação em outro execução de qualquer ação em outro processo;processo;

• Comando Comando SS e assertiva e assertiva CC são paralelos são paralelos quando pertencem a quando pertencem a processos distintosprocessos distintos;;

Page 25: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 2525

Semântica FormalSemântica Formal

Prova de não-interferênciaProva de não-interferência• Para provar que uma Para provar que uma ação de atribuiçãoação de atribuição a a não não

invalida uma invalida uma assertiva críticaassertiva crítica CC paralela a paralela a aa, é , é suficiente mostrar que NI(suficiente mostrar que NI(aa,,CC) é um teorema:) é um teorema:» NI(NI(aa, C): {pre(, C): {pre(aa) ) C} C} aa {C} {C}

• Sejam Sejam inin e e outout comandosde comunicação, a comandosde comunicação, a prova de NI(prova de NI(inin,C) e NI(,C) e NI(outout,C) é ,C) é trivialmentetrivialmente verdadeverdade, pelos axiomas de entrada;, pelos axiomas de entrada;

Page 26: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 2626

Semântica FormalSemântica Formal

Prova de não-interferênciaProva de não-interferência

n

n

xxeeCCoutpreinpre

CoutinNIsynch1

1)()(

:,,

Page 27: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 2727

Semântica FormalSemântica Formal

Liberdade de interferência para comunicação Liberdade de interferência para comunicação síncrona. Teoremas {Pi} Si {Qi}, 1 síncrona. Teoremas {Pi} Si {Qi}, 1 i i n são n são livres de interferencia se ambos os seguintes são livres de interferencia se ambos os seguintes são verdade:verdade:• Para todas as Para todas as atribuiçõesatribuições e e aa na prova de S na prova de Sii, 1, 1 i i n n

e para todas as e para todas as assertivas críticasassertivas críticas paralelasparalelas a a aa: : NINI((a,a,CC).).

• Para todas as Para todas as açõesações de entradade entrada inin na prova de S na prova de Sii, 1 , 1

i i n, para todas as n, para todas as açõesações de saída casadasde saída casadas outout na na prova de Sprova de Sjj, 1 , 1 j j n, i n, ij, e para todas as j, e para todas as assertivas assertivas

críticascríticas paralelasparalelas a a inin e e outout: : NIasynchNIasynch((inin,,out,out,CC).).

Page 28: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 2828

Semântica FormalSemântica Formal

Exemplo (Exemplo (seção críticaseção crítica):): C[1:n]:: do true C[1:n]:: do true SemSem!P()!P() critical section critical section SemSem!V()!V() non-critical section non-critical section od odSemSem:: do (:: do (ii:1..n) C[:1..n) C[ii] ? P() ] ? P() C[ C[ii] ? V()] ? V() od od

Page 29: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 2929

Semântica FormalSemântica Formal

Exemplo (Exemplo (seção críticaseção crítica):):• Variáveis auxililares;Variáveis auxililares;

» Lembra se processo Lembra se processo C[i]C[i] está na seção crítica; está na seção crítica;» in[1:n]: bool;in[1:n]: bool;

• Invariante:Invariante:» MUTEX: (MUTEX: (i: 1 i: 1 i i n: 0 n: 0 in[i] in[i] 1) 1)

(in[1] + ... In[n]) (in[1] + ... In[n]) 1 1

Page 30: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 3030

Semântica FormalSemântica Formal

var in[1..n]: int := ([n] 0)var in[1..n]: int := ([n] 0){ { MUTEX:(MUTEX:(i: 1 i: 1 i i n: 0 n: 0 in[i] in[i] 1) 1) (in[1] + ... In[n]) (in[1] + ... In[n]) 1} 1} C[1:n]:: do true C[1:n]:: do true {MUTEX {MUTEX in[i]=0} in[i]=0} SemSem!P(!P(11)) {MUTEX {MUTEX in[i]=1} in[i]=1} critical section critical section SemSem!V(!V(00)) {MUTEX {MUTEX in[i]=0} in[i]=0} non-critical section non-critical section od odSemSem:: :: {MUTEX {MUTEX (in[1]+...+in[n]=1)=1} (in[1]+...+in[n]=1)=1} do (do (ii:1..n) C[:1..n) C[ii] ? P(] ? P(in[i]in[i]) ) {MUTEX {MUTEX (in[1]+...+in[n]=1)=1} (in[1]+...+in[n]=1)=1} C[ C[ii] ? V(] ? V(in[i]in[i])) {MUTEX {MUTEX (in[1]+...+in[n]=1)=0} (in[1]+...+in[n]=1)=0} od od

Page 31: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 3131

Semântica FormalSemântica Formal

Exemplo (Exemplo (seção críticaseção crítica):):• Isoladamente, as provas de cada processo Isoladamente, as provas de cada processo

são verdadeiras;são verdadeiras;» As únicas ações de atribuições são os comandos As únicas ações de atribuições são os comandos

de atribuição;de atribuição;

• Prova de satisfação:Prova de satisfação:» Existem dois pares de comandos de atribuição Existem dois pares de comandos de atribuição

casados;casados;• Porta P;Porta P;• Porta V;Porta V;

Page 32: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 3232

Semântica FormalSemântica Formal

Exemplo (Exemplo (seção críticaseção crítica):):• Prova de Satisfação:Prova de Satisfação:• Para o par que se comunica pela porta P:Para o par que se comunica pela porta P:

» (MUTEX (MUTEX inin[[ii]=0 ]=0 ( (inin[1] + ... + [1] + ... + inin[[nn]) = 0)]) = 0) (MUTEX (MUTEX in[i] = 1 in[i] = 1 ( (inin[1] + ... + [1] + ... + inin[[nn]) = 1)]) = 1)11

in[i]in[i]

• Para o par que se comunica pela porta V:Para o par que se comunica pela porta V:» (MUTEX (MUTEX inin[[ii]=1 ]=1 ( (inin[1] + ... + [1] + ... + inin[[nn]) = 1)]) = 1)

(MUTEX (MUTEX in[i] = 0 in[i] = 0 ( (inin[1] + ... + [1] + ... + inin[[nn]) = 0)]) = 0)00in[i]in[i]

Page 33: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 3333

Semântica FormalSemântica Formal

Exemplo (Exemplo (seção críticaseção crítica):):• Prova de não-interferencia:Prova de não-interferencia:

»Uma vez que as unicas Uma vez que as unicas ações de ações de atribuições atribuições são os comandos de são os comandos de comunicação, a primeira parte da prova é comunicação, a primeira parte da prova é verdadeira verdadeira trivialmentetrivialmente;;

»A única fonte eventual de A única fonte eventual de não-interferêncianão-interferência: : ações de comunicaçãoações de comunicação em dois processos em dois processos em relação a uma assertiva em um em relação a uma assertiva em um terceiroterceiro;;

Page 34: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 3434

Semântica FormalSemântica Formal

Exemplo (Exemplo (seção críticaseção crítica):):• Prova de não-interferencia:Prova de não-interferencia:

»ExemploExemplo: Considere o primeiro comando de : Considere o primeiro comando de saída (saída (outout) em ) em C[i],C[i], o primeiro comando de o primeiro comando de entrada de entrada de SemSem ( (inin) e a primeira assertiva ) e a primeira assertiva crítica de crítica de C[j] C[j] (C)(C)

• pre(in) = pre(in) = {MUTEX {MUTEX in[i]=0} in[i]=0}

• pre(out) = pre(out) = {MUTEX {MUTEX (in[1]+...+in[n]=1)=0} (in[1]+...+in[n]=1)=0}

• C =C = {MUTEX {MUTEX in[j]=0} in[j]=0}

Page 35: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 3535

Semântica FormalSemântica Formal

Exemplo (Exemplo (seção críticaseção crítica):):• Prova de não-interferencia:Prova de não-interferencia:

»NIsynch(in,out,C) = NIsynch(in,out,C) = {{MUTEXMUTEX ((inin[1]+...+[1]+...+inin[n]=1)=0 [n]=1)=0 inin[[ii]=0 ]=0 inin[[jj]=0}]=0} MUTEXMUTEX inin[[jj]=0)]=0)11

inin[[ii]]

• Os demais casos são análogos;Os demais casos são análogos;

Page 36: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 3636

Semântica FormalSemântica FormalSegurança e Segurança e LivenessLiveness

Métodos de Métodos de exclusão de configuraçõesexclusão de configurações pode ser pode ser usado para provar que dois processos não usado para provar que dois processos não podem estar simultaneamente no mesmo estado:podem estar simultaneamente no mesmo estado:• Ex: Na aplicação anterior, dois Ex: Na aplicação anterior, dois clientesclientes não podem não podem

estar ao mesmo tempo em suas regiões críticas, uma estar ao mesmo tempo em suas regiões críticas, uma vez que :vez que :

((MUTEXMUTEX inin[[ii]=1 ]=1 inin[[jj]=1 ]=1 i i jj) = ) = false false

Page 37: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 3737

Semântica FormalSemântica FormalSegurança e Segurança e LivenessLiveness

Provando Provando deadlocksdeadlocks• Prova mais difícil que em comunicação assíncrona;Prova mais difícil que em comunicação assíncrona;• Processo pode ser bloqueado nas operações de Processo pode ser bloqueado nas operações de

entrada e saída;entrada e saída;• Um processo está bloqueado se está executando um Um processo está bloqueado se está executando um

comnado de comunicação que ainda não foi casado;comnado de comunicação que ainda não foi casado;» TodoTodo comando de comunicaçãocomando de comunicação é potencialmente uma é potencialmente uma fonte fonte

de de deadlocksdeadlocks;;» A maioria das vezes o bloqueio é temporário;A maioria das vezes o bloqueio é temporário;

Page 38: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 3838

Semântica FormalSemântica FormalSegurança e Segurança e LivenessLiveness

Provando Provando deadlocks (cont.)deadlocks (cont.)• Configuração potencialmente blocante (CPB)Configuração potencialmente blocante (CPB)::

» Todos os processos estão efetuando uma operação Todos os processos estão efetuando uma operação de comunicação;de comunicação;

» As pré-condições das várias operações de As pré-condições das várias operações de comunicação são verdadeiras;comunicação são verdadeiras;

• Condições para Condições para liberdade de dliberdade de deadlockeadlock;;» CPB CPB nãonão existe, ou; existe, ou;» CPB existe, e sempre há um par de operações de CPB existe, e sempre há um par de operações de

comunicação que casam;comunicação que casam;

Page 39: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 3939

Semântica FormalSemântica FormalSegurança e Segurança e LivenessLiveness

Propriedades de Propriedades de LivenessLiveness

• Dependem do Dependem do escalonamentoescalonamento das operações das operações de de entradaentrada e e saídasaída;;

• Política de escalonamento Política de escalonamento incondicionalmente incondicionalmente justajusta::» Uma vez que o processo atinge os comandos de Uma vez que o processo atinge os comandos de

entrada e sáída, lá permanecem até que sejam entrada e sáída, lá permanecem até que sejam executados;executados;

Page 40: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 4040

Semântica FormalSemântica FormalSegurança e Segurança e LivenessLiveness

Propriedades de Propriedades de LivenessLiveness• Comunicação guardada:Comunicação guardada:

» Escalonamento fortemente justo;Escalonamento fortemente justo;» Condições booleanas referem-se somente a Condições booleanas referem-se somente a

variáveis locais;variáveis locais;• Uma vez verdadeiras, sempre verdadeiras;Uma vez verdadeiras, sempre verdadeiras;

Page 41: Canais Síncronos

Mestrado e Doutorado em Ciência da ComputaçãoMestrado e Doutorado em Ciência da ComputaçãoUniversidade Federal do CearáUniversidade Federal do Ceará

II. Memória DistibuídaII. Memória Distibuída

Cap.Cap.77

Passagem de Mensagens Passagem de Mensagens SíncronaSíncrona

((AplicaAplicaçõesções))

Fco. Heron de Carvalho Jr., Msc.Fco. Heron de Carvalho Jr., [email protected]

Page 42: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 4242

AplicaAplicações a Estudarções a Estudar

Redes de FiltrosRedes de Filtros;;• Geração de números primos Geração de números primos (a peneira de (a peneira de

Eratosthenes);Eratosthenes);

Algoritmos Sistólicos (Algoritmos Sistólicos (Interação de Interação de ProcessosProcessos););• Multiplicação de Matrizes;Multiplicação de Matrizes;

Clientes e Servidores;Clientes e Servidores;• Alocação de recursos;Alocação de recursos;

Page 43: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 4343

Passagem de Mensagens Síncrona Passagem de Mensagens Síncrona (Aplicações)(Aplicações)

Rede de FiltrosRede de Filtros((a peneira de Eratosthenesa peneira de Eratosthenes))

Page 44: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 4444

Rede de FiltrosRede de Filtros(A Peneira de Eratosthenes)(A Peneira de Eratosthenes)

Implementação SequencialImplementação Sequencial

var num[2:n]:([n-1] 0)var num[2:n]:([n-1] 0)var p:=2, i:intvar p:=2, i:int{I: p é primo{I: p é primo((j: 2 j: 2 j j (p-1) (p-1)22: : num[j] = 0 num[j] = 0 j é primo )} j é primo )}do p*p do p*p n n fa i:=2*p to n by p fa i:=2*p to n by p num[i] := 1 af num[i] := 1 af p := p + 1 p := p + 1 do num[p] = 1 do num[p] = 1 p := p + 1 od p := p + 1 ododod

Page 45: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 4545

Rede de FiltrosRede de Filtros(A Peneira de Eratosthenes)(A Peneira de Eratosthenes)

Implementação Distribuída (Implementação Distribuída (pipe-linepipe-line))

SieveSieve[1]:: var p:=2, i:int[1]:: var p:=2, i:int # passar pares para Sieve[2]# passar pares para Sieve[2] fa i := 3 to n by 2 -> fa i := 3 to n by 2 -> SieveSieve[2]!i[2]!i af af

SieveSieve[i:2..L]:: ...[i:2..L]:: ...

Page 46: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 4646

Rede de FiltrosRede de Filtros(A peneira de Eratosthenes)(A peneira de Eratosthenes)

Implementação Distribuída (Implementação Distribuída (pipe-linepipe-line))

SieveSieve[1] :: ...[1] :: ...

SieveSieve[i:2..L]::[i:2..L]:: var p:int, next:int var p:int, next:int SieveSieve[i-1]?p [i-1]?p # p é primo# p é primo do true -> do true -> # receber próximo candidato # receber próximo candidato SieveSieve[i-1]?next[i-1]?next # passar adiante se não é múltiplo de p # passar adiante se não é múltiplo de p if next mode p if next mode p0 -> 0 -> SieveSieve[i+1]!next fi[i+1]!next fi od od

Page 47: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 4747

Passagem de Mensagens Síncrona Passagem de Mensagens Síncrona (Aplicações)(Aplicações)

Algoritmo SistólicoAlgoritmo Sistólico((MultiplicaMultiplicação de Matrizes)ção de Matrizes)

Page 48: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 4848

Algoritmo SistAlgoritmo Sistólico ólico (Multiplicação de Matrizes)(Multiplicação de Matrizes)

Implementação Distribuída (malha circular, Implementação Distribuída (malha circular, torustorus))

P[i:1..n,j:1..n]::P[i:1..n,j:1..n]:: var aij, bij, cij: real var aij, bij, cij: real var new:real, k:int var new:real, k:int if P[i,j-i]!aij -> P[i,j+i]?aij if P[i,j-i]!aij -> P[i,j+i]?aij [] P[i,j+i]?new -> P[i,j-i]!aij [] P[i,j+i]?new -> P[i,j-i]!aij fi fi if P[i-1,i]!aij -> P[i+i,j]?aij if P[i-1,i]!aij -> P[i+i,j]?aij [] P[i+1,i]?new -> P[i-1,j]!aij [] P[i+1,i]?new -> P[i-1,j]!aij fi fi cij := aij * bij cij := aij * bij (...) (...)

Page 49: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 4949

Algoritmo SistAlgoritmo Sistólico ólico (Multiplicação de Matrizes)(Multiplicação de Matrizes)

Implementação Distribuída (malha circular, Implementação Distribuída (malha circular, torustorus))

P[i:1..n,j:1..n]::P[i:1..n,j:1..n]:: (...) (...) fa k := 1 to n-1 -> fa k := 1 to n-1 -> if P[i,j- if P[i,j-11]!aij -> P[i,j+]!aij -> P[i,j+11]?aij]?aij [] P[i,j+ [] P[i,j+11]?new -> P[i,j-]?new -> P[i,j-11]!aij]!aij fi fi if P[i-1, if P[i-1,11]!aij -> P[i+]!aij -> P[i+11,j]?aij,j]?aij [] P[i+1, [] P[i+1,11]?new -> P[i-]?new -> P[i-11,j]!aij,j]!aij fi fi cij = cij + aij * bij cij = cij + aij * bij af af

Page 50: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 5050

Passagem de Mensagens Síncrona Passagem de Mensagens Síncrona (Aplicações)(Aplicações)

Clientes e ServidoresClientes e Servidores((Servidor de ArquivosServidor de Arquivos))

Page 51: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 5151

Clientes e ServidoresClientes e Servidores (Servidor de Arquivos)(Servidor de Arquivos)

File[i:1..n]::File[i:1..n]:: var fname:string, args:outros argumentos var fname:string, args:outros argumentos var more:bool var more:bool var local buffer, cache, disk address, etc. var local buffer, cache, disk address, etc. do (c:1..m) Client[c]? do (c:1..m) Client[c]?openopen((fnamefname)) ->-> abre o arquivoabre o arquivo Client[c]! Client[c]!open_replyopen_reply()(); more := true; more := true do more -> do more -> if Client[c]? if Client[c]?readread(args) ->(args) -> handle read;handle read; Client[c]! Client[c]!read_replyread_reply((resres)) [] Client[c]? [] Client[c]?writewrite(args) -> (args) -> handle write;handle write; Client[c]! Client[c]!write_replywrite_reply((resres)) [] Client[c]? [] Client[c]?closeclose() ->() -> close fileclose file; more := false; more := false fi fi od od od od

Page 52: Canais Síncronos

Prog. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorProg. Concorrente – Prof. Dr. Francisco Heron de Carvalho JuniorDepartamento de Computação – UFC Departamento de Computação – UFC 5252

Clientes e ServidoresClientes e Servidores (Servidor de Arquivos)(Servidor de Arquivos)

Client[i:1..m]::Client[i:1..m]:: var var serveridserverid:int:int do (i:1..n) File[i]! do (i:1..n) File[i]!openopen(“foo”)(“foo”) serveridserverid := i; File[i]? := i; File[i]?open_replyopen_reply()() od od … … # Para ler # Para ler File[ File[serveridserverid]!]!readread((access argumentsaccess arguments)) File[ File[serveridserverid]!]!read_replyread_reply((resultsresults)) … … # Para escrever # Para escrever File[ File[serveridserverid]!]!writewrite((access argumentsaccess arguments)) File[ File[serveridserverid]!]!write_replywrite_reply((resultsresults)) … … # Para fechar o arquivo# Para fechar o arquivo File[ File[serveridserverid]!]!closeclose()()