canais assíncronos ii - aplicações
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 AssíncronaAssíncrona
((AplicaAplicaçõesções))
Fco. Heron de Carvalho Jr., Dr.Fco. Heron de Carvalho Jr., [email protected]
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)
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;
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;;
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);
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;
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 :: (...)(...)
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 (...) (...)
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 (...) (...)
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 (...) (...)
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 (...) (...)
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)
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 -
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))
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;
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;;
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;
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!
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 !!
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;
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;
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
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)
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]:: (..)
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 (...)(...)
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 (...)(...)
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 (...)(...)
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 (...)(...)
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 -
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;
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]()
(...)(...)
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
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
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) -
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;
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)(...)(...)
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
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
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]