Sincronização Distribuída de Processos Francisco Heron de Carvalho Junior, Dr.
Tópicos Abordados <ul><li>Concorrência e  Sincronização ; </li></ul><ul><li>Mecanismos de sincronização de processos; </li...
Concorrência e  Sincronização Objetivo : Definir o conceito de  sincronização  dentro do contexto de  concorrência
Concorrência e Sicronização (processos) <ul><li>Processos : procedimentos concorrentes </li></ul><ul><ul><li>Procedimento ...
Concorrência e Sicronização (arquiteturas concorrentes) ... ... uniprocessada multiprocessada (memória compartilhada) dist...
Concorrência e Sincronização (Histórias de Execução) <ul><li>Histórias de Execução: </li></ul><ul><ul><li>Sequência  de aç...
Concorrência e Sincronização (Modelando Interferência usando Lógica de Programação) <ul><li>Estado de um processo: </li></...
Concorrência e Sincronização (Modelando Interferência usando Lógica de Programação) <ul><li>Ação elegível ; </li></ul><ul>...
Concorrência e Sincronização (Interferência) <ul><li>S incronização ; </li></ul><ul><ul><li>Filtragem de  histórias indese...
Concorrência e Sincronização (Exclusão Mútua) <ul><li>Exclusão mútua: </li></ul><ul><ul><li>Agrupar sequências de ações em...
Concorrência e Sincronização (Exclusão Mútua) <ul><li>Sincronização condicional: </li></ul><ul><ul><li>U m processo atras ...
Concorrência e Sincronização (await) <ul><li> await   B      S   implementa sincronização por  exclusão mútua  e  sinc...
Modelos de Sincronização de Processos  ( Memória compartilhada ) <ul><li>Semáforos: </li></ul><ul><ul><li>Primitivas de ma...
Modelos de Sincronização de Processos  ( Memória distribuída ) <ul><li>Processos não compartilham variáveis; </li></ul><ul...
Sincronização  Distribuída Passagem de Mensagens  Assíncrona
Passagem de Mensagens  Assíncrona <ul><li>Canais </li></ul><ul><ul><li>Únicos  objetos compartilhados  entre  processos ; ...
Passagem de Mensagens  Assíncrona send recv recv send ... emissor receptor emissor receptor Bloqueio do receptor ( sincron...
Passagem de Mensagens  Assíncrona <ul><li>Suposições : </li></ul><ul><ul><li>canais seguros; </li></ul></ul><ul><ul><ul><l...
Passagem de Mensagens  Assíncrona <ul><li>chan   ch (id 1 :type 1 ,..., id n :type n ) </li></ul><ul><li>send  ch ( expr 1...
Passagem de Mensagens  Assíncrona <ul><li>chan   input (char),  output ([1:MAXLINE] char) Char_to_Line ::   var   line [1:...
Passagem de Mensagens  Assíncrona Caixa de Mensagens ( mail boxes ) Porta de Entrada ( input port ) Ligação ( link ) ... ....
Passagem de Mensagens  Assíncrona <ul><li>Desvantagens: </li></ul><ul><ul><li>Transmissor  precisa saber se  receptor  rec...
Sincronização  Distribuída Passagem de Mensagens  Síncrona
Passagem de Mensagens  Síncrona <ul><li>Não há  buffers ; </li></ul><ul><li>Processo  transmissor  espera até que o  recep...
Passagem de Mensagens  Síncrona <ul><li>Processo  A  deseja comunicar um valor a um processo  B  através da porta  p : </l...
Passagem de Mensagens  Síncrona send recv recv send emissor receptor emissor receptor Bloqueio do receptor ( sincronização...
Passagem de Mensagens  Síncrona <ul><li>Comunica ção  guardada ; </li></ul><ul><ul><li>Comando de comunicação  guardado </...
Passagem de Mensagens  Síncrona <ul><li>Comunica ção  guardada  (u so com  if ) </li></ul><ul><ul><li>Uma das guardas  ati...
Passagem de Mensagens  Síncrona <ul><li>Comunica ção  guardada   (u so com  do ) </li></ul><ul><ul><li>Repetidamente, uma ...
Passagem de Mensagens  Síncrona <ul><li>Copy   ::  var  buffer[1:10]:char   var  front:=1, rear:=1, count:=0   do  count <...
Sincronização Distribuída Chamada de Procedimento Remoto
Chamada de Procedimento Remoto <ul><li>Módulos  </li></ul><ul><ul><li>Ocupam espaços de endereçamento  distintos ; </li></...
Chamada de Procedimento Remoto processo chamador processo  servidor call Módulo
Chamada de Procedimento Remoto <ul><li>Módulo: </li></ul><ul><ul><li>module   module_name   cabeçalhos de operações export...
Chamada de Procedimento Remoto <ul><li>Sincronização condicional  e  exclusão mútua  entre  processos servidores  e em  ba...
Chamada de Procedimento Remoto ... REDE DE COMUNICAÇÃO módulo módulo módulo módulo módulo módulo call call
Chamada de Procedimento Remoto <ul><li>module  TimeServer   op  get_time()  returns  int;   op  delay(int interval); body ...
Chamada de Procedimento Remoto <ul><li>  (...)     process  Clock {   inicie cronômetro do sistema;   while  ( true ) {   ...
Sincronização Distribuída Rendezvous
Rendezvous <ul><li>Combinando  comunicação  e  sincronização ; </li></ul><ul><li>Como em RPC, processo cliente invoca oper...
Rendezvous processo chamador processo  servidor (corpo de  in ) call Módulo in
Rendezvous <ul><li>A operação  in : </li></ul><ul><ul><li>in  op 1 ( formals 1 )  and  B 1   by  e 1     S 1 ; [] op 2 ( ...
Rendezvous <ul><li>module  BoundedBuffer   op  deposit( typeT ), fetch( result   typeT ); body   process  Buffer {   typeT...
Paradigmas de Sincronização Distribuída Padrões de Interação entre Processos
Paradigmas de Sincronização Distribuída <ul><li>Tipos de Processos: </li></ul><ul><ul><li>Filtros; </li></ul></ul><ul><ul>...
Paradigmas de Sincronização Distribuída <ul><li>Gerente / Trabalhadores; </li></ul><ul><ul><li>Multiplicação de matrizes e...
Conclusões <ul><li>Computação distribuída tem se tornado onipresente; </li></ul><ul><ul><li>Internet , interconectividade,...
Sincronização Distribuída de Processos Francisco Heron de Carvalho Junior, Dr.
Próximos SlideShares
Carregando em…5
×

Sincronização Distribuída de Processos

5.380 visualizações

Publicada em

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

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
5.380
No SlideShare
0
A partir de incorporações
0
Número de incorporações
108
Ações
Compartilhamentos
0
Downloads
121
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Sincronização Distribuída de Processos

  1. 1. Sincronização Distribuída de Processos Francisco Heron de Carvalho Junior, Dr.
  2. 2. Tópicos Abordados <ul><li>Concorrência e Sincronização ; </li></ul><ul><li>Mecanismos de sincronização de processos; </li></ul><ul><ul><li>Memória Compartilhada; </li></ul></ul><ul><ul><ul><li>Semáforos e monitores </li></ul></ul></ul><ul><ul><li>Memória Distribuída ; </li></ul></ul><ul><ul><ul><li>Passagem de mensagens assíncrona ; </li></ul></ul></ul><ul><ul><ul><li>Passagem de mensagens síncrona ; </li></ul></ul></ul><ul><ul><ul><li>Chamada de procedimento remoto (RPC); </li></ul></ul></ul><ul><ul><ul><li>Rendezvous; </li></ul></ul></ul><ul><li>Paradigmas de sincronização distribuída ; </li></ul><ul><li>Conclusões; </li></ul>Objetivos
  3. 3. Concorrência e Sincronização Objetivo : Definir o conceito de sincronização dentro do contexto de concorrência
  4. 4. Concorrência e Sicronização (processos) <ul><li>Processos : procedimentos concorrentes </li></ul><ul><ul><li>Procedimento : sequência de ações ( ordem total ); </li></ul></ul><ul><ul><li>Linhas de instruções independente; </li></ul></ul><ul><ul><li>Programa concorrente : ordem parcial de ações; </li></ul></ul>P P 1 P 2 P n paradigma sequencial paradigma concorrente ... ...
  5. 5. Concorrência e Sicronização (arquiteturas concorrentes) ... ... uniprocessada multiprocessada (memória compartilhada) distribuída Unidade de memória Unidade de processamento Processo rede
  6. 6. Concorrência e Sincronização (Histórias de Execução) <ul><li>Histórias de Execução: </li></ul><ul><ul><li>Sequência de ações executadas por um programa; </li></ul></ul><ul><ul><li>Número de histórias possíveis , mesmo para programa s simples , é enorme !!!! </li></ul></ul><ul><li>Interferência entre processos concorrentes: </li></ul><ul><ul><li>Um processo invalida uma suposição que diz respeito ao estado de um outro processo em execução, levando-o a um estado inconsistente ; </li></ul></ul>
  7. 7. Concorrência e Sincronização (Modelando Interferência usando Lógica de Programação) <ul><li>Estado de um processo: </li></ul><ul><ul><li>Conteúdo do valor das variáveis em seu escopo; </li></ul></ul><ul><li>Podemos caracterizar um conjunto de estados por meio de predicados lógicos ( Tony Hoare , 1969); </li></ul><ul><ul><li>{P} S {Q} </li></ul></ul><ul><ul><li>P é uma pré-condição ( pre ( S )) ; </li></ul></ul><ul><ul><li>Q é uma pós-condição ( pos ( S )) ; </li></ul></ul><ul><ul><li>S é uma ordem parcial de ações ; </li></ul></ul><ul><li>Lógica de programação: </li></ul><ul><ul><li>Conjunto de axiomas e regras de inferência para prova de corretude parcial de programas; </li></ul></ul><ul><ul><li>Extensão à lógica de predicados; </li></ul></ul>
  8. 8. Concorrência e Sincronização (Modelando Interferência usando Lógica de Programação) <ul><li>Ação elegível ; </li></ul><ul><li>Seja C um predicado que que caracteriza o estado de execução de um processo P 1 após a execução da ação s 1 e antes da execução da ação s 2 : </li></ul><ul><ul><li>P 1 :: ... s 1 {C} s 2 ... </li></ul></ul><ul><ul><li>C é chamada assertiva crítica ; </li></ul></ul><ul><li>Seja a uma ação de atribuição em um processo P 2 : </li></ul><ul><ul><li>P 2 :: ... { P } a { Q } ... </li></ul></ul><ul><li>Em nenhuma história possível , a execução de a deve tornar C falso quando s 2 é elegível ; </li></ul><ul><ul><li>{ C  P } a { C } </li></ul></ul><ul><li>Caso contrário, diz-se que P 2 interfere com P 1 ; </li></ul>x := e
  9. 9. Concorrência e Sincronização (Interferência) <ul><li>S incronização ; </li></ul><ul><ul><li>Filtragem de histórias indesejáveis , onde ocorre interferência entre processos ; </li></ul></ul><ul><li>Como evitar interferência ? </li></ul><ul><ul><li>Exclusão mútua; </li></ul></ul><ul><ul><li>Sincronização condicional; </li></ul></ul>
  10. 10. Concorrência e Sincronização (Exclusão Mútua) <ul><li>Exclusão mútua: </li></ul><ul><ul><li>Agrupar sequências de ações em ações de mais grossa granularidade; </li></ul></ul><ul><ul><ul><li> a 1 ; a 2 ; ... ; a n  </li></ul></ul></ul><ul><ul><ul><li>Execução atômica de sequências de ações; </li></ul></ul></ul><ul><ul><li>Escondendo o estado que sofre interferência ; </li></ul></ul><ul><ul><ul><li>Seções críticas; </li></ul></ul></ul><ul><ul><ul><li>P 1 :: ...   a 1 {C} a 2  ... </li></ul></ul></ul>
  11. 11. Concorrência e Sincronização (Exclusão Mútua) <ul><li>Sincronização condicional: </li></ul><ul><ul><li>U m processo atras a sua execução até que uma condição torne-se verdadeira; </li></ul></ul><ul><ul><li>wp ( S , Q ) : predicado mais fraco para que, depois da execução de a a , Q seja verdadeiro: </li></ul></ul><ul><ul><ul><li>Weakest pre-condition; </li></ul></ul></ul><ul><ul><ul><li>... { wp ( S , Q ) } S {Q} ... </li></ul></ul></ul><ul><ul><ul><li>Se P  wp ( S , Q ) então P :: ... {P} S {Q} ... </li></ul></ul></ul><ul><ul><li>Evitando interferência : </li></ul></ul><ul><ul><ul><li>P 2 :: ...  await  C  wp(a,C)  a  ... </li></ul></ul></ul>
  12. 12. Concorrência e Sincronização (await) <ul><li> await B  S  implementa sincronização por exclusão mútua e sincronização condicional ; </li></ul><ul><ul><li>Leslie Lamport , 1980; </li></ul></ul><ul><li>Implementação ineficiente em máquinas convencionais; </li></ul><ul><ul><li>Técnicas baseadas em espera ocupada ; </li></ul></ul>
  13. 13. Modelos de Sincronização de Processos ( Memória compartilhada ) <ul><li>Semáforos: </li></ul><ul><ul><li>Primitivas de mais baixo nível ( wait e signal ); </li></ul></ul><ul><ul><li>Simplicidade e eficiência; </li></ul></ul><ul><ul><li>Entretanto , torna complicada a programação para aplicações complexas; </li></ul></ul><ul><li>Monitores: </li></ul><ul><ul><li>Mecanismo de mais alto nível de abstração; </li></ul></ul><ul><ul><li>Exclusão mútua implícita; </li></ul></ul><ul><ul><li>Encapsulamento de variáveis; </li></ul></ul><ul><ul><li>Ortogonalização de processos e monitores ; </li></ul></ul><ul><ul><li>Apropriado para aplicações complexas que exigem maior estruturação; </li></ul></ul>
  14. 14. Modelos de Sincronização de Processos ( Memória distribuída ) <ul><li>Processos não compartilham variáveis; </li></ul><ul><li>Comunicação através de redes de comunicação ; </li></ul><ul><li>Primitivas de sincronização devem suportar o transporte de dados entre processos; </li></ul><ul><li>Mecanismos de sincronização distribuída : </li></ul><ul><ul><li>Passagem de Mensagens; </li></ul></ul><ul><ul><ul><li>Assíncrona; </li></ul></ul></ul><ul><ul><ul><li>Síncrona; </li></ul></ul></ul><ul><ul><li>Chamada de procedimento remoto; </li></ul></ul><ul><ul><li>Rendezvous ; </li></ul></ul>
  15. 15. Sincronização Distribuída Passagem de Mensagens Assíncrona
  16. 16. Passagem de Mensagens Assíncrona <ul><li>Canais </li></ul><ul><ul><li>Únicos objetos compartilhados entre processos ; </li></ul></ul><ul><ul><li>Abstração de um meio de transmissão ( rede ) ; </li></ul></ul><ul><ul><li>Caminho de comunicação entre dois processos; </li></ul></ul><ul><ul><li>Fila de mensagens; </li></ul></ul>... send recv
  17. 17. Passagem de Mensagens Assíncrona send recv recv send ... emissor receptor emissor receptor Bloqueio do receptor ( sincronização ) t e m p o ... ... ... ... ... ...
  18. 18. Passagem de Mensagens Assíncrona <ul><li>Suposições : </li></ul><ul><ul><li>canais seguros; </li></ul></ul><ul><ul><ul><li>Sem corrupção de mensagens; </li></ul></ul></ul><ul><ul><ul><li>Sem replicação de mensagens; </li></ul></ul></ul><ul><ul><ul><li>Sem perda de mensagens; </li></ul></ul></ul><ul><ul><li>mensagens ordenadas; </li></ul></ul><ul><ul><ul><li>Recebimento na ordem de envio; </li></ul></ul></ul><ul><ul><ul><li>Canais FIFO ( F irst I n, F irst O ut); </li></ul></ul></ul>
  19. 19. Passagem de Mensagens Assíncrona <ul><li>chan ch (id 1 :type 1 ,..., id n :type n ) </li></ul><ul><li>send ch ( expr 1 ,..., expr n ) </li></ul><ul><ul><li>Os tipos de expr i devem corresponder aos tipos dos componentes do canal; </li></ul></ul><ul><li>receive ch ( var 1 ,..., var n ) </li></ul><ul><ul><li>Os tipos de var i devem corresponder aos tipos dos componentes do canal; </li></ul></ul><ul><li>empty ch </li></ul><ul><ul><li>Verifica se o canal está vazio </li></ul></ul>
  20. 20. Passagem de Mensagens Assíncrona <ul><li>chan input (char), output ([1:MAXLINE] char) Char_to_Line :: var line [1:MAXLINE]: char, i :int := 1 do true  receive input ( line [i]) do line[ i ]  CR and i < MAXLINE  i := i + 1; receive i nput ( line [i]) od send output ( line ); i :=1 od </li></ul>
  21. 21. Passagem de Mensagens Assíncrona Caixa de Mensagens ( mail boxes ) Porta de Entrada ( input port ) Ligação ( link ) ... ... ...
  22. 22. Passagem de Mensagens Assíncrona <ul><li>Desvantagens: </li></ul><ul><ul><li>Transmissor precisa saber se receptor recebeu a mensagem: </li></ul></ul><ul><ul><ul><li>Uso de reconhecimento ; </li></ul></ul></ul><ul><ul><li>Entrega de mensagens não é garantida; </li></ul></ul><ul><ul><ul><li>Como saber o que ocorreu caso o reconhecimento não chegue ?? </li></ul></ul></ul><ul><ul><li>Buffers não podem ser infinitos </li></ul></ul><ul><ul><ul><li>Muitas mensagens  CRASH! ou bloqueio no send; </li></ul></ul></ul><ul><ul><ul><li>Violação da semântica do send ; </li></ul></ul></ul>
  23. 23. Sincronização Distribuída Passagem de Mensagens Síncrona
  24. 24. Passagem de Mensagens Síncrona <ul><li>Não há buffers ; </li></ul><ul><li>Processo transmissor espera até que o receptor receba a mensagem; </li></ul><ul><li>Comando de atribuição distribuída; </li></ul><ul><li>Vantagens: </li></ul><ul><ul><li>Simplifica a solução de alguns problemas; </li></ul></ul><ul><ul><li>Evita manipulação dinâmica de buffers ; </li></ul></ul><ul><li>Desvantagens: </li></ul><ul><ul><li>Dificulta programação de alguns problemas; </li></ul></ul><ul><li>CSP e OCCAM; </li></ul>
  25. 25. Passagem de Mensagens Síncrona <ul><li>Processo A deseja comunicar um valor a um processo B através da porta p : </li></ul><ul><ul><li>A :: … B ! p ( e 1 , e 2 ,…,e n ) … {envio } </li></ul></ul><ul><ul><li>B :: … A ? p ( x 1 , x 2 ,…,x n ) … {recebimento} </li></ul></ul><ul><li>B permanece bloqueado até que A receba os valores e 1 , e 2 ,…, e n e os atribua às suas variáveis x 1 , x 2 ,…, x n ; </li></ul><ul><ul><li>x i := e i , 1  i  n </li></ul></ul><ul><li>Os tipos de e i e x i devem ser compatíveis; </li></ul><ul><li>Portas identificam tipos de mensagens ; </li></ul>
  26. 26. Passagem de Mensagens Síncrona send recv recv send emissor receptor emissor receptor Bloqueio do receptor ( sincronização ) t e m p o Bloqueio do emissor ( sincronização )
  27. 27. Passagem de Mensagens Síncrona <ul><li>Comunica ção guardada ; </li></ul><ul><ul><li>Comando de comunicação guardado </li></ul></ul><ul><ul><ul><li>B; C  S </li></ul></ul></ul><ul><ul><ul><li>B é uma expressão booleana (opcional); </li></ul></ul></ul><ul><ul><ul><li>C é um comando de comunicação (opcional); </li></ul></ul></ul><ul><ul><ul><li>S é uma lista de comandos; </li></ul></ul></ul><ul><ul><li>B e C compõem um a guarda ; </li></ul></ul><ul><ul><li>A guarda sucede-se se B é verdadeiro e C não causa bloqueio ; </li></ul></ul>
  28. 28. Passagem de Mensagens Síncrona <ul><li>Comunica ção guardada (u so com if ) </li></ul><ul><ul><li>Uma das guardas ativas é escolhida não-deterministicamente ; </li></ul></ul><ul><ul><li>if B 1 ; C 1  S 1 [] B 2 ; C 2  S 2  [] B n ; C n  S n fi </li></ul></ul>... ... ...
  29. 29. Passagem de Mensagens Síncrona <ul><li>Comunica ção guardada (u so com do ) </li></ul><ul><ul><li>Repetidamente, uma das guardas ativas é escolhida não-deterministicamente, at é quando nenhuma estiver ativa; </li></ul></ul><ul><ul><li>do B 1 ; C 1  S 1 [] B 2 ; C 2  S 2  [] B n ; C n  S n od </li></ul></ul>... ... ...
  30. 30. Passagem de Mensagens Síncrona <ul><li>Copy :: var buffer[1:10]:char var front:=1, rear:=1, count:=0 do count < 10; West?buffer[rear]  count++; rear := (rear mod 10) + 1 [] count > 0; East ! buffer[front]  count--; front := (front mod 10) + 1 od GCD :: var x,y: int do (i:1..n) Client ? args(x,y)  do x  y  x:=x-y [] x  y  y:=y-x od Client[i] ! result(x) od </li></ul>
  31. 31. Sincronização Distribuída Chamada de Procedimento Remoto
  32. 32. Chamada de Procedimento Remoto <ul><li>Módulos </li></ul><ul><ul><li>Ocupam espaços de endereçamento distintos ; </li></ul></ul><ul><ul><li>Analogia com monitores ; </li></ul></ul><ul><ul><li>Declaram processos exportados e em background ; </li></ul></ul><ul><li>Um processo ( servidor ) é dinamicamente criado para executar chamada a procedimento remoto ; </li></ul><ul><li>O processo que chama o procedimento prossegue após o retorno deste; </li></ul><ul><ul><li>Semântica semelhante à chamada sequencial de procedimentos; </li></ul></ul>
  33. 33. Chamada de Procedimento Remoto processo chamador processo servidor call Módulo
  34. 34. Chamada de Procedimento Remoto <ul><li>Módulo: </li></ul><ul><ul><li>module module_name cabeçalhos de operações exportadas; body declarações de variáveis; código de inicialização; procedimentos para operações exportadas; procedimentos e processos locais (background); end module_name </li></ul></ul><ul><li>Cabeçalho de operação exportada: </li></ul><ul><ul><li>op op_name (formals) [returns result ] ; </li></ul></ul><ul><li>Operação: </li></ul><ul><ul><li>proc op_name (formals identifiers) returns rident ; declarações de variáveis locais lista de comandos end </li></ul></ul><ul><li>Chamada de procedimento remoto: </li></ul><ul><ul><li>call mname . opname ( arguments ); </li></ul></ul>
  35. 35. Chamada de Procedimento Remoto <ul><li>Sincronização condicional e exclusão mútua entre processos servidores e em background : </li></ul><ul><ul><li>Exclusão mútua explícita </li></ul></ul><ul><ul><ul><li>Uso de semáforos e monitores ; </li></ul></ul></ul><ul><ul><li>Exclusão mútua implícita : </li></ul></ul><ul><ul><ul><li>Sincronização condicional por variáveis condicionais ; </li></ul></ul></ul>
  36. 36. Chamada de Procedimento Remoto ... REDE DE COMUNICAÇÃO módulo módulo módulo módulo módulo módulo call call
  37. 37. Chamada de Procedimento Remoto <ul><li>module TimeServer op get_time() returns int; op delay(int interval); body int tod = 0 sem m = 1; sem d[n] = ([n] 0); queue of (int waketime, int process_id) napQ; proc get_time () returns time { time = tod; } proc delay (interval) int waketime = tod + interval; P(m) ; insert (waketime, myid) em napQ: V(m) ; P(d[myid]) ; } (...) </li></ul>
  38. 38. Chamada de Procedimento Remoto <ul><li> (...) process Clock { inicie cronômetro do sistema; while ( true ) { tod ++; P(m) ; while (tod >= menor waketime em napQ) { remove (waketime, id) from napQ; V(d[id]) ; } V(m) ; } } end TimeServer </li></ul>
  39. 39. Sincronização Distribuída Rendezvous
  40. 40. Rendezvous <ul><li>Combinando comunicação e sincronização ; </li></ul><ul><li>Como em RPC, processo cliente invoca operação por meio da instrução call ; </li></ul><ul><li>Diferente de RPC, um único processo servidor é usado para servir as chamadas aos procedimentos: </li></ul><ul><ul><li>Comando de entrada ( in ); </li></ul></ul><ul><ul><li>Operações são servidas uma de cada vez; </li></ul></ul><ul><ul><li>Sincronização implícita; </li></ul></ul><ul><li>Linguagem ADA; </li></ul>
  41. 41. Rendezvous processo chamador processo servidor (corpo de in ) call Módulo in
  42. 42. Rendezvous <ul><li>A operação in : </li></ul><ul><ul><li>in op 1 ( formals 1 ) and B 1 by e 1  S 1 ; [] op 2 ( formals 2 ) and B 2 by e 2  S 2 ;  [] op n ( formals n ) and B n by e n  S n ; ni </li></ul></ul><ul><li>A operação in : </li></ul><ul><ul><li>op i : identificador da operação; </li></ul></ul><ul><ul><li>B i : expressão de sincronização; </li></ul></ul><ul><ul><li>e i : expressão de escalonamento; </li></ul></ul><ul><ul><li>S i : lista de comandos; </li></ul></ul>... ... ... ...
  43. 43. Rendezvous <ul><li>module BoundedBuffer op deposit( typeT ), fetch( result typeT ); body process Buffer { typeT buf[n]; int front = 0, rear = 0, count = 0; while (true) in deposit (item) and count < n  buf[rear] = item; rear = (rear + 1) mod n; count++; [] fetch (item) and count > 0  item = buf[front]; front = (front + 1) mod n; count--; ni } </li></ul>
  44. 44. Paradigmas de Sincronização Distribuída Padrões de Interação entre Processos
  45. 45. Paradigmas de Sincronização Distribuída <ul><li>Tipos de Processos: </li></ul><ul><ul><li>Filtros; </li></ul></ul><ul><ul><li>Clientes; </li></ul></ul><ul><ul><li>Servidores; </li></ul></ul><ul><ul><li>Peers ; </li></ul></ul><ul><li>Padrões de interação entre-processos: </li></ul><ul><ul><li>Produtor / Consumidor (1) ; </li></ul></ul><ul><ul><li>Interacting peers (2) ; </li></ul></ul><ul><ul><li>Cliente / Servidor (3) ; </li></ul></ul><ul><li>Passagem de mensagens: (1) e (2) ; </li></ul><ul><li>RPC e rendezvous : (3) . </li></ul>
  46. 46. Paradigmas de Sincronização Distribuída <ul><li>Gerente / Trabalhadores; </li></ul><ul><ul><li>Multiplicação de matrizes esparsas; </li></ul></ul><ul><ul><li>Quadratura adaptativa; </li></ul></ul><ul><li>Algoritmos sistólicos; </li></ul><ul><ul><li>Rotulações de regiões (processamento de imagens); </li></ul></ul><ul><ul><li>Autômatos celulares; </li></ul></ul><ul><li>Algoritmos pipe-line ; </li></ul><ul><ul><li>Multiplicação de matrizes; </li></ul></ul><ul><li>Probe / echo ; </li></ul><ul><ul><li>Disseminação em rede; </li></ul></ul><ul><ul><li>Computação da topologia de uma rede; </li></ul></ul><ul><li>Disseminação; </li></ul><ul><ul><li>Relógios lógicos e ordenação de eventos; </li></ul></ul><ul><ul><li>Semáforos Distribuídos </li></ul></ul><ul><li>Passagem do token ; </li></ul><ul><ul><li>Exclusão mútua distribuída ; </li></ul></ul><ul><ul><li>Detecção de terminação (em anel e em grafo); </li></ul></ul><ul><li>Servidores replicados; </li></ul><ul><ul><li>Solução descentralizada ao jantar dos filósofos; </li></ul></ul>
  47. 47. Conclusões <ul><li>Computação distribuída tem se tornado onipresente; </li></ul><ul><ul><li>Internet , interconectividade, etc ; </li></ul></ul><ul><li>Diversos mecanismos surgiram nas últimas décadas para sincronização distribuída; </li></ul><ul><ul><li>Nichos de aplicações complementares; </li></ul></ul><ul><li>Padrões de interação conhecidos devem ser observados na construção de aplicações distribuídas; </li></ul><ul><ul><li>Esqueletos; </li></ul></ul><ul><ul><li>Templates ; </li></ul></ul>
  48. 48. Sincronização Distribuída de Processos Francisco Heron de Carvalho Junior, Dr.

×