Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouPatrícia Farinha Soares Alterado mais de 8 anos atrás
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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.