Sincronização Distribuída de Processos
Upcoming SlideShare
Loading in...5
×
 

Sincronização Distribuída de Processos

on

  • 8,400 views

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

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

Statistics

Views

Total Views
8,400
Views on SlideShare
8,333
Embed Views
67

Actions

Likes
0
Downloads
108
Comments
0

1 Embed 67

http://www.slideshare.net 67

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Sincronização Distribuída de Processos Sincronização Distribuída de Processos Presentation Transcript

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