canais assíncronos ii - aplicações

39
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 Assíncrona Assíncrona ( ( Aplica Aplica ções ções ) ) Fco. Heron de Carvalho Jr., Fco. Heron de Carvalho Jr., Dr. Dr. [email protected]

Upload: heron-carvalho

Post on 01-Jul-2015

1.049 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: Canais Assíncronos II - Aplicações

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 AssíncronaAssíncrona

((AplicaAplicaçõesções))

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

Page 2: Canais Assíncronos II - Aplicações

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

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

Algoritmos Algoritmos Probe/EchoProbe/Echo((computacomputação distribuída em grafos)ção distribuída em grafos)

Page 3: Canais Assíncronos II - Aplicações

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

Algoritmos Algoritmos Probe/EchoProbe/Echo

Grafos e árvores são estruturas Grafos e árvores são estruturas encontradas em muitos algoritmos;encontradas em muitos algoritmos;• Jogos, bancos de dados, sistemas Jogos, bancos de dados, sistemas

especialistas;especialistas; DFS DFS (Depth First Search)(Depth First Search)

• Busca em Busca em profundidadeprofundidade para para árvoresárvores e e grafosgrafos;;• Para cada nodo (Para cada nodo (paipai), cada nodo ), cada nodo filhofilho é é

visitadovisitado e sua informação é retornada ao e sua informação é retornada ao paipai;;• Em grafos, é necessário marcar nós visitados;Em grafos, é necessário marcar nós visitados;

Page 4: Canais Assíncronos II - Aplicações

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

Algoritmos Algoritmos Probe/EchoProbe/Echo

Computações distribuídas em processos Computações distribuídas em processos organizados em grafos:organizados em grafos:• Algoritmos Algoritmos probe/echoprobe/echo;;• Análogos a DFS em grafos;Análogos a DFS em grafos;

Probe Probe (sondagem)(sondagem)• Mensagem enviada de um nodo para seus Mensagem enviada de um nodo para seus

sucessoressucessores na rede; na rede; EchoEcho (eco) (eco)

• Resposta dos Resposta dos sucessoressucessores;;

Page 5: Canais Assíncronos II - Aplicações

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

Algoritmos Algoritmos Probe/EchoProbe/Echo(Topologia de redes de processos)(Topologia de redes de processos)

Revisitando a computação da topologia de Revisitando a computação da topologia de uma rede de processos:uma rede de processos:• Novo algoritmos, usando Novo algoritmos, usando probe/echoprobe/echo;;

Premissas do novo algorimoPremissas do novo algorimo• Existência de um nodo Existência de um nodo iniciadoriniciador;;

» Computa a topologia completa e a dissemina Computa a topologia completa e a dissemina (broadcast)(broadcast) aos outros processos; aos outros processos;

• Como computar a topologia ? Como computar a topologia ? » Duas fases (próximo slide);Duas fases (próximo slide);

Page 6: Canais Assíncronos II - Aplicações

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

Algoritmos Algoritmos Probe/EchoProbe/Echo(Topologia de redes de processos)(Topologia de redes de processos)

Fases para computação da topologia:Fases para computação da topologia:• Cada nodo envia um Cada nodo envia um probe probe para cada vizinho;para cada vizinho;• Cada nodo envia um Cada nodo envia um echoecho contendo a contendo a

informação de sua topologia local para o nodo informação de sua topologia local para o nodo que lhe enviou o primeiro que lhe enviou o primeiro probeprobe;;

• No final, o iniciador recebe a topologia No final, o iniciador recebe a topologia completa e a dissemina aos outros processos;completa e a dissemina aos outros processos;

Page 7: Canais Assíncronos II - Aplicações

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

Algortimos Algortimos Probe/EchoProbe/Echo(Topologia de redes de processos)(Topologia de redes de processos)

Solução:Solução:

const source = iconst source = itype kind = enum(PROBE, ECHO)type kind = enum(PROBE, ECHO)chan chan probe_echoprobe_echo[1:n](kind, [1:n](kind, sender:int, sender:int, links[1:n,1:n]) links[1:n,1:n])chan chan finalechofinalecho[1:n](links[1:n,1:n] int)[1:n](links[1:n,1:n] int)Node[p:1..n]:: Node[p:1..n]:: (...(...))Initiator :: Initiator :: (...)(...)

Page 8: Canais Assíncronos II - Aplicações

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

Algortimos Algortimos Probe/EchoProbe/Echo(Topologia de redes de processos)(Topologia de redes de processos)

Solução (Solução (continuaçãocontinuação):):

Node[p:1..n]:: Node[p:1..n]:: var links[1:n]:bool := vizinhos de p var links[1:n]:bool := vizinhos de p var localtop[1:n,1:n]:bool := ([n*n] false) var localtop[1:n,1:n]:bool := ([n*n] false) localtop[p,1:n] := links localtop[p,1:n] := links var newtop[1:n,1:n]:bool var newtop[1:n,1:n]:bool var first:int var first:int var k:kind, sender:int var k:kind, sender:int var need_echo: int := número de vizinhos-1 var need_echo: int := número de vizinhos-1 (...) (...)

Page 9: Canais Assíncronos II - Aplicações

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

Algortimos Algortimos Probe/EchoProbe/Echo(Topologia de redes de processos)(Topologia de redes de processos)

Solução (Solução (continuaçãocontinuação):):

Node[p:1..n]:: Node[p:1..n]:: (...) (...) receivereceive probe_echoprobe_echo[p](k,sender,newtop)[p](k,sender,newtop) first := sender first := sender fa q := 1 to n st links[q] and q fa q := 1 to n st links[q] and q first first sendsend proble_echoproble_echo[q](PROBE, p, [q](PROBE, p, )) af af (...) (...)

Page 10: Canais Assíncronos II - Aplicações

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

Algortimos Algortimos Probe/EchoProbe/Echo(Topologia de redes de processos)(Topologia de redes de processos)

Solução (Solução (continuaçãocontinuação):):

Node[p:1..n]:: Node[p:1..n]:: (...) (...) do need_echo > 0 -> do need_echo > 0 -> receivereceive probe_echoprobe_echo[p](k,sender,newtop)[p](k,sender,newtop) if k = PROBE -> if k = PROBE -> sendsend probe_echoprobe_echo[sender](ECHO, p, [sender](ECHO, p, )) [] k = ECHO -> [] k = ECHO -> localtop := localtop or newtop localtop := localtop or newtop need_echo := need_echo – 1 need_echo := need_echo – 1 fi fi od od (...) (...)

Page 11: Canais Assíncronos II - Aplicações

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

Algortimos Algortimos Probe/EchoProbe/Echo(Topologia de redes de processos)(Topologia de redes de processos)

Solução (Solução (continuaçãocontinuação):):

Node[p:1..n]:: Node[p:1..n]:: (...) (...) if p = source -> if p = source -> sendsend finalechofinalecho(localtop)(localtop) [] p [] p source -> source -> sendsend probe_echoprobe_echo[first](ECHO, p localtop)[first](ECHO, p localtop) fi fi (...) (...)

Page 12: Canais Assíncronos II - Aplicações

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

Algortimos Algortimos Probe/EchoProbe/Echo(Topologia de redes de processos)(Topologia de redes de processos)

Solução (Solução (continuaçãocontinuação):):

Initiator :: Initiator :: var top[1:n,1:n]:bool var top[1:n,1:n]:bool sendsend probe_echoprobe_echo[source](PROBE, source, [source](PROBE, source, )) receivereceive finalechofinalecho(top)(top)

Page 13: Canais Assíncronos II - Aplicações

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

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

Algoritmos Algoritmos de de DisseminaDisseminação ção

((BroadcastBroadcast))- semáforos distribuídos -- semáforos distribuídos -

Page 14: Canais Assíncronos II - Aplicações

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

Algoritmos de DisseminaçãoAlgoritmos de Disseminação

Um algoritmo de Um algoritmo de disseminaçãodisseminação pode ser pode ser implementado por meio de implementado por meio de probe/echoprobe/echo;;

Todos os processos compartilhando um canal Todos os processos compartilhando um canal em comum;em comum;• Suposição válida na maioria das redes locais;Suposição válida na maioria das redes locais;

» Ethernet, token-ring, etc.Ethernet, token-ring, etc.;;

• Primitiva Primitiva broadcastbroadcast: : » Seja P[1:n] um vetor de processos e ch[1:n] um vetor de Seja P[1:n] um vetor de processos e ch[1:n] um vetor de

canais, um pra cada processo:canais, um pra cada processo:» Um processo P[1:n] Um processo P[1:n] disseminadissemina um dado para todos os um dado para todos os

processos executando:processos executando:• broadcastbroadcast chch((mm))

Page 15: Canais Assíncronos II - Aplicações

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

Algoritmos de DisseminaçãoAlgoritmos de Disseminação

Observações sobre Observações sobre broadcastbroadcast::• Efeito semelhante a execução de Efeito semelhante a execução de nn comandos comandos

send send em paralelo; em paralelo;• Processos recebem o dado disseminado Processos recebem o dado disseminado

executando executando receivereceive, como usualmente;, como usualmente;• broascast broascast não é indivisível !não é indivisível !

» Mensagens disseminadas por dois processos A Mensagens disseminadas por dois processos A e B podem ser recebidas por outros processos e B podem ser recebidas por outros processos em diferentes ordens;em diferentes ordens;

Page 16: Canais Assíncronos II - Aplicações

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

Algoritmos de DisseminaçãoAlgoritmos de Disseminação

broadcastbroadcast’s’s podem ser usados para podem ser usados para resolver muitos resolver muitos problemas de problemas de sincronizaçãosincronização;;

Inicialmente, mostraremos como Inicialmente, mostraremos como implementar um implementar um relógio lógicorelógio lógico, usando , usando broadcastsbroadcasts;;

Posteriormente, apresentarems uma Posteriormente, apresentarems uma solução para implementar solução para implementar semáforos semáforos distribuídosdistribuídos;;

Page 17: Canais Assíncronos II - Aplicações

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

Algoritmos de DisseminaçãoAlgoritmos de Disseminação(Relógios lógicos e ordenação de eventos)(Relógios lógicos e ordenação de eventos)

Em sistemas distribuídos, as ações de Em sistemas distribuídos, as ações de comunicação são os eventos relevantes;comunicação são os eventos relevantes;• Eventos correspondem a ocorrência das operações Eventos correspondem a ocorrência das operações

sendsend e e receivereceive;;

Não há como saber a ordem relativa entre Não há como saber a ordem relativa entre operações locais realizadas por processos operações locais realizadas por processos distintos;distintos;

Entretanto, há meios de ordenar Entretanto, há meios de ordenar eventoseventos ((operações globaisoperações globais) realizadas por processos;) realizadas por processos;

Page 18: Canais Assíncronos II - Aplicações

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

Algoritmos de DisseminaçãoAlgoritmos de Disseminação(Relógios lógicos e ordenação de eventos)(Relógios lógicos e ordenação de eventos)

Ordem parcial !Ordem parcial !• Sequências de eventos Sequências de eventos não-relacionadasnão-relacionadas;;

» Lembram de categorias ????? CPO’s ???Lembram de categorias ????? CPO’s ???

Usando um relógio único centralizado:Usando um relógio único centralizado:• Podemos estabelecer ordem total;Podemos estabelecer ordem total;• Identificadores usados pra distinguir Identificadores usados pra distinguir timestamptimestamp

de mensagens enviadas simultaneamente;de mensagens enviadas simultaneamente;• Irrealístico! Irrealístico!

Page 19: Canais Assíncronos II - Aplicações

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

Algoritmos de DisseminaçãoAlgoritmos de Disseminação(Relógios lógicos e ordenação de eventos)(Relógios lógicos e ordenação de eventos)

Opção realística: Opção realística: • Assumir que cada processador tem seu Assumir que cada processador tem seu

próprio relógio (físico);próprio relógio (físico);• Relógios sincronizados garantiriam ordenação;Relógios sincronizados garantiriam ordenação;

» Irrealístico ! Irrealístico !

• Algoritmos de sincronização de relógio servem Algoritmos de sincronização de relógio servem para manter dois relógios o mais sincronizados para manter dois relógios o mais sincronizados possível, mas nunca perfeitamente;possível, mas nunca perfeitamente;» Podemos simular relógios físicos !! Podemos simular relógios físicos !!

Page 20: Canais Assíncronos II - Aplicações

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

Algoritmos de DisseminaçãoAlgoritmos de Disseminação(Relógios lógicos e ordenação de eventos)(Relógios lógicos e ordenação de eventos)

Um Um relógio lógicorelógio lógico é um contador simples é um contador simples que é incrementado quando um evento que é incrementado quando um evento acontece;acontece;

Page 21: Canais Assíncronos II - Aplicações

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

Algoritmos de DisseminaçãoAlgoritmos de Disseminação(Relógios lógicos e ordenação de eventos)(Relógios lógicos e ordenação de eventos)

Regra de Atualização de Regra de Atualização de relógios lógicosrelógios lógicos::• Seja Seja lclc um relógico lógico em um processo A. um relógico lógico em um processo A.• (1) Quando A envia ou dissemina uma (1) Quando A envia ou dissemina uma

mensagem, ele atualiza o timestamp da mensagem, ele atualiza o timestamp da mensagem para mensagem para lc lc e incrementa e incrementa lclc;;

• (2) Quando A recebe uma mensagem com (2) Quando A recebe uma mensagem com timestamp timestamp tsts, ele atualiza , ele atualiza lc lc para o máximo de para o máximo de lc lc e e ts + 1ts + 1 e incrementa e incrementa lc;lc;

Page 22: Canais Assíncronos II - Aplicações

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

Algoritmos de DisseminaçãoAlgoritmos de Disseminação(Relógios lógicos e ordenação de eventos)(Relógios lógicos e ordenação de eventos)

O O timestamptimestamp da mensagem enviada é o valor do da mensagem enviada é o valor do relógio relógio na execução de na execução de send send (lc);(lc);

O O timestamptimestamp da mensagem de recebimento é o da mensagem de recebimento é o valor do valor do relógio relógio após calcular o maior entre após calcular o maior entre lclc e e ts+1ts+1 e antes de incrementar e antes de incrementar lclc;;

Assim, garante-se que se um evento Assim, garante-se que se um evento aa ocorre ocorre antes de um evento antes de um evento bb, então o valor do relógio , então o valor do relógio associado a associado a a a é menor que aquele associado a é menor que aquele associado a bb;;• Ordem total dos eventos ! Ordem total dos eventos ! • Identificador distingue evendos com mesmo Identificador distingue evendos com mesmo timestamptimestamp

Page 23: Canais Assíncronos II - Aplicações

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

Algoritmos de DisseminaçãoAlgoritmos de Disseminação(Semáforos Distribuídos)(Semáforos Distribuídos)

SoluçãoSolução

type kind = enum(V,P,ACK)type kind = enum(V,P,ACK)chan chan semopsemop[1:n](sender, kind, timestamp:int),[1:n](sender, kind, timestamp:int), gogo[1:n](timestamp:int)[1:n](timestamp:int)

Page 24: Canais Assíncronos II - Aplicações

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

Algoritmos de DisseminaçãoAlgoritmos de Disseminação(Semáforos Distribuídos)(Semáforos Distribuídos)

SoluçãoSolução

User[i:1..n]::User[i:1..n]:: var lc:int :=0 var lc:int :=0 var ts:int var ts:int # execução de uma operação V# execução de uma operação V broadcastbroadcast semopsemop(i,(i,VV,lc); lc := lc + 1;,lc); lc := lc + 1; (...) (...) # execução de uma operação P# execução de uma operação P broadcastbroadcast semopsemop(i,(i,PP,lc); ,lc); receivereceive gogo[i](ts); [i](ts); lc := max(lc, ts+1); lc := lc + 1 lc := max(lc, ts+1); lc := lc + 1

Helper[i:1..n]:: (..) Helper[i:1..n]:: (..)

Page 25: Canais Assíncronos II - Aplicações

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

Algoritmos de DisseminaçãoAlgoritmos de Disseminação(Semáforos Distribuídos)(Semáforos Distribuídos)

SoluçãoSolução

Helper[i:1..n]:: Helper[i:1..n]:: var mq: queue of (int, var mq: queue of (int, kindkind, int), int) var lc:int := 0 var lc:int := 0 var sem:int := var sem:int := valor inicialvalor inicial var sender:int, k:kind, ts:int var sender:int, k:kind, ts:int (...)(...)

Page 26: Canais Assíncronos II - Aplicações

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

Algoritmos de DisseminaçãoAlgoritmos de Disseminação(Semáforos Distribuídos)(Semáforos Distribuídos)

SoluçãoSolução

Helper[i:1..n]:: Helper[i:1..n]:: (...)(...) do true -> {DSEM}do true -> {DSEM} receivereceive semopsemop[i](sender,k,ts)[i](sender,k,ts) lc := max(lc,ts+1); lc := lc+1 lc := max(lc,ts+1); lc := lc+1 if k = P or k = V -> if k = P or k = V -> (...) (...) [] k = ACK -> [] k = ACK -> (...) (...) fi fi od od (...)(...)

Page 27: Canais Assíncronos II - Aplicações

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

Algoritmos de DisseminaçãoAlgoritmos de Disseminação(Semáforos Distribuídos)(Semáforos Distribuídos)

SoluçãoSolução

Helper[i:1..n]:: Helper[i:1..n]:: (...)(...) do true -> {DSEM}do true -> {DSEM} (...)(...) if k = P or k = V -> if k = P or k = V -> inserinseririr (sender, k, ts) em (sender, k, ts) em mqmq broadcastbroadcast semopsemop(i,ACK,lc); lc := lc+1;(i,ACK,lc); lc := lc+1; [] k = ACK -> [] k = ACK -> (...) (...) fi fi od od (...)(...)

Page 28: Canais Assíncronos II - Aplicações

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

Algoritmos de DisseminaçãoAlgoritmos de Disseminação(Semáforos Distribuídos)(Semáforos Distribuídos)

SoluçãoSolução (...)(...) if k = P or k = V -> if k = P or k = V -> (...) (...) [] k = ACK -> [] k = ACK -> registre recebimento de um ACKregistre recebimento de um ACK fa mensagens V totalmente reconhecidas-> fa mensagens V totalmente reconhecidas-> remover a msg de remover a msg de mqmq; ; sem := sem+1sem := sem+1;; fa fa fa mensagens P totalmente reconhecidas-> fa mensagens P totalmente reconhecidas-> remover a msg de remover a msg de mqmq; ; sem := sem-1sem := sem-1;; if sender = i -> if sender = i -> sendsend gogo[i](lc); [i](lc); lc := lc + 1 fi lc := lc + 1 fi fa fa fi fi od od (...)(...)

Page 29: Canais Assíncronos II - Aplicações

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

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

Algoritmos Algoritmos

Token PassingToken Passing- Exclusão m- Exclusão mútua distribuída - útua distribuída -

- Detecção de terminação distribuída -- Detecção de terminação distribuída -

Page 30: Canais Assíncronos II - Aplicações

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

Token PassingToken Passing

TokenToken• Um tipo especial de mensagem que pode ser Um tipo especial de mensagem que pode ser

usado para carregar uma usado para carregar uma permissãopermissão para para executar uma ação ou capturar uma executar uma ação ou capturar uma imformação relativa ao imformação relativa ao estado globalestado global da da aplicação;aplicação;

Aplicações:Aplicações:• Exclusão mútua distribuída;Exclusão mútua distribuída;• Detecção de terminação distribuída;Detecção de terminação distribuída;

Page 31: Canais Assíncronos II - Aplicações

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

Token PassingToken Passing

Exclusão mútua distribuída:Exclusão mútua distribuída:

chan chan tokentoken[1:n](), [1:n](), enterenter[1:n](), [1:n](), gogo[1:n](), [1:n](), exitexit [1:n]() [1:n]()

(...)(...)

Page 32: Canais Assíncronos II - Aplicações

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

Token PassingToken Passing

Exclusão mútua distribuída:Exclusão mútua distribuída:

HelperHelper[i:1..n]:: [i:1..n]:: do true -> {DMUTEX} do true -> {DMUTEX} receivereceive tokentoken[i]()[i]() if not ( if not (emptyempty((enterenter[i])) -> [i])) -> receivereceive enterenter[i]()[i]() sendsend gogo[i]()[i]() receivereceive exitexit[i]()[i]() fi fi sendsend tokentoken[(i mod n) + 1]()[(i mod n) + 1]() od od

Page 33: Canais Assíncronos II - Aplicações

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

Token PassingToken Passing

Exclusão mútua distribuída:Exclusão mútua distribuída:

PP[i:1..n]:: [i:1..n]:: do true -> do true -> sendsend enterenter[i]()[i]() receivereceive gogo[i]()[i]() seção críticaseção crítica sendsend tokentoken[(i mod n) + 1]()[(i mod n) + 1]() seção não-críticaseção não-crítica od od

Page 34: Canais Assíncronos II - Aplicações

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

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

Servidores ReplicadosServidores Replicados

- Replicação de Arquivos- Replicação de Arquivos (disponibilidade) - (disponibilidade) -

- Quadratura Adaptativa (paralelismo) -- Quadratura Adaptativa (paralelismo) -

Page 35: Canais Assíncronos II - Aplicações

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

Servidores ReplicadosServidores Replicados

Quadratura adaptativa:Quadratura adaptativa:• Replicação de função;Replicação de função;• nn processo encarregados de aproximar processo encarregados de aproximar

paralelamente a integral de uma função;paralelamente a integral de uma função;• Solução estática X solução dinâmica;Solução estática X solução dinâmica;

Page 36: Canais Assíncronos II - Aplicações

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

Servidores ReplicadosServidores Replicados

Solução (Quadratura Adaptativa):Solução (Quadratura Adaptativa):

chan chan bagbag(a,b,fa,fb,area:real)(a,b,fa,fb,area:real)chan chan resultresult(a,b,area:real)(a,b,area:real)(...)(...)

Page 37: Canais Assíncronos II - Aplicações

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

Servidores ReplicadosServidores Replicados

Solução (Quadratura Adaptativa):Solução (Quadratura Adaptativa):

Administrator::Administrator:: var l,r,fl,fr,a,b,area,total:real var l,r,fl,fr,a,b,area,total:real outras variáveis para registrar intervalos finalizados fl := f(l); fr := f(r) fl := f(l); fr := f(r) area := (fl + fr)*(l+r)/2 area := (fl + fr)*(l+r)/2 sendsend bagbag(l,r,fl,fr,area)(l,r,fl,fr,area) do do area total ainda não computadaarea total ainda não computada -> -> receivereceive resultresult(a,b,area)(a,b,area) total := total + area total := total + area registre que completou intervalo [a,b] od od

Page 38: Canais Assíncronos II - Aplicações

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

Servidores ReplicadosServidores Replicados

Solução (Quadratura Adaptativa):Solução (Quadratura Adaptativa):

Worker[1:n]::Worker[1:n]:: var a,b,m,fa,fb,fm:real var a,b,m,fa,fb,fm:real var larea, rarea, tarea, diff:real var larea, rarea, tarea, diff:real do true -> do true -> receivereceive bagbag(a,b,fa,fb,tarea)(a,b,fa,fb,tarea) m := (a+b)/2; fm := f(m); m := (a+b)/2; fm := f(m); computar larea e rarea computar larea e rarea diffdiff := tarea – (larea + rarea) := tarea – (larea + rarea) if if diffdiff small -> small -> sendsend resultresult(a,b,area)(a,b,area) [] [] diffdiff too large -> too large -> sendsend bagbag(a,m,fa,fm,larea)(a,m,fa,fm,larea) fi fi od od

Page 39: Canais Assíncronos II - Aplicações

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

Passagem de Mensagens Passagem de Mensagens SíncronaSíncrona

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