canais síncronos

Post on 21-Jun-2015

837 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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., Dr.heron@lia.ufc.br

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

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)

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;

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;

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;

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

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

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;

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

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;

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

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

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

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;

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;

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)

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

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

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

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

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

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;

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

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;

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

:,,

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

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

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

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

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;

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]

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

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}

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;

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

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;

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;

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;

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;

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., Msc.fhcj@poli.upe.br

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;

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

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

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

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

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)

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

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

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

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

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

top related