A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Troca de Mensagens Síncronas n Consequências do uso de comunicação assíncrona:  Um processo pode se adiantar muito em relação aos outros. Para sincronizar.

Apresentações semelhantes


Apresentação em tema: "Troca de Mensagens Síncronas n Consequências do uso de comunicação assíncrona:  Um processo pode se adiantar muito em relação aos outros. Para sincronizar."— Transcrição da apresentação:

1 Troca de Mensagens Síncronas n Consequências do uso de comunicação assíncrona:  Um processo pode se adiantar muito em relação aos outros. Para sincronizar com outro processo são necessários comandos para enviar e receber mensagens.  Não há garantia de entrega em caso de falha  Mensagens tem que ser bufferizadas, e buffers na prática são finitos

2 Troca de Mensagens Síncronas n Resolve os problemas da comunicação assíncrona. n Envio de mensagens é sempre síncrono, i.e. espera até que o outro processo esteja pronto para receber a mensagem. n A sincronização ocorre em cada comunicação. Funcionamento semelhante a um comando de atribuição distribuído.

3 Desvantagens n Mais difícil programar algorítmos do tipo heartbeat e broadcast.

4 Sintaxe n Uso explícito de nomes de processos em vez de nomes de canais n ! para indicar envio (output em um canal) n ? para indicar recebimento (input de um canal) n Exemplo: A::... B!e... B::... A?x...

5 Comunicação n A comunicação ocorre através de Matching Communication Statements n Um comando de input e outro de output casam se: n O comando de output aparece no processo nomeado pelo comando de input, e vice- versa; n os identificadores de portas são os mesmos; n todas as atribuições são consideradas válidas.

6 Exemplo: filtro para organizar linhas de caracteres  char line[20]; int i = 1; while (TRUE) { West?(line[i]); while (line[i] != ‘\n’ && i < 20) { i++; West?(line[i]); } } East!(line); i=1; }

7 Guardas n Guardas permitem a escolha não determinística de alternativas para comunicação n Execução de alternativas é guardada por condições e/ou operações de comunicação n Guardas (alternativas) podem ter sucesso, falhar ou bloquear

8 Exemplo: Buffer limitado  void Copy () { char buffer[20]; int count = 0; int front = 1; int rear = 1; while (count { count++; rear = (rear%10)+1;}; (count > 0; East ! Buffer[front]) -> { count--; front = (front%10)+1;}; }

9 Redes de Filtros: Geração de números primos  Problema: Gerar n números primos  Solução: Crivo de Eratóstenes.  2 3 4 5 6 7 8 9 10 11 12 13 14 15 16... N  2 3 5 7 9 11 13 15...  2 3 5 7 11 13...

10 Rede de processos de filtragem  void sieve[1] () { int p = 2; int i; for (i=3;i<=n;i=i+2) {sieve[2]!i;}; }  void sieve[2..L] () { int p,next; sieve[i-1]?p; while (TRUE) {sieve[i-1]?next; if (next%p != 0) {sieve[i+1]!next}; }

11 Multiplicação de Matrizes por vetores  c[1:n] = a[1:n,1:n] x b[1:n]  Produto interno: c[i] = a[i,1] * b[1] +... + a[i,n] * b[n]  Com variáveis compartilhadas teríamos co i=1 to n {x[i] = 0 for (j=1;j<=n;j++) {c[i] = c[i] + a[i,j]*b[i]} }

12 Alternativas  N processos independentes, cada um com uma cópia do vetor b e de uma linha da matriz a  Usar uma rede de n 2 processos conectados, cada um com um elemento da matriz a

13 Matriz de procesos P n,n P 1,n P n,1 P 1,1 0 0 x1x1 xnxn soma parcial... bnbn b1b1 b1b1 bnbn

14 Matriz de processos  void P[i=1..n, j=1..n] () { float sum,b; float real = 0.0; P[i-1,j]?b; P[i+1,j]!b; P[i,j-1]?sum; P[i,j+1]!(sum+a[i,j]*b); }

15 Ordenação Paralela: Algorítmo de Heartbeat  Dois processos, cada um com n/2 valores.  Cada processo ordena sequencialmente seus n/2 valores, e depois passa a trocar seus valores menores pelos maiores do outro.  P1: if P2?new -> P2!a1[largest] P2!a1[largest] -> P2?new fi  P2: if P1?new -> P1!a2[smallest] P1!a2[smallest] -> P1?new fi

16 Ordenação paralela  void P1 () { int a1[n/2]; int largest = n/2; int new; ordena a1; P2!a1[largest]; P2?new; while (a1[largest] > new) { insere new no lugar adequado em a1 e descarta o antigo a1[largest]; P2!a1[largest];P2?new; }

17 Ordenação paralela  void P2 () { int a2[n/2]; int largest = 1; int new; ordena a2; P1?new; P1!a2[smallest]; while (a2[smallest] < new) { insere new no lugar adequado em a2 e descarta o antigo a2[smallest]; P1?new; P1!a2[smallest]; }

18 Simulando Broadcast  Através de um processo que simula um canal de broadcast  Através de guardas


Carregar ppt "Troca de Mensagens Síncronas n Consequências do uso de comunicação assíncrona:  Um processo pode se adiantar muito em relação aos outros. Para sincronizar."

Apresentações semelhantes


Anúncios Google