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

Sincronização Distribuída de Processos

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