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

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

Troca de Mensagens Assíncronas n Canais de comunicação são filas ilimitadas de mensagens. n Processos inserem elementos nessa flia através de comandos.

Apresentações semelhantes


Apresentação em tema: "Troca de Mensagens Assíncronas n Canais de comunicação são filas ilimitadas de mensagens. n Processos inserem elementos nessa flia através de comandos."— Transcrição da apresentação:

1 Troca de Mensagens Assíncronas n Canais de comunicação são filas ilimitadas de mensagens. n Processos inserem elementos nessa flia através de comandos send, que não bloqueiam o processo. n Processos recebem mensagens através de comandos receive, que bloqueiam até que o canal tenha dados (se ele estiver vazio).

2 Canais x Semáforos n Canais funcionam de forma semelhante a semáforos, mas carregando dados:  send = V  receive = P n Se as mensagens forem nulas, e o semáforo for inicializado com 0, o funcionamento é idêntico, com o número de mensagens enfileiradas igual ao valor do semáforo.

3 Sintaxe  chan ch(id 1 :type 1,...,id n :type n )  send ch(expr 1,...,expr n )  receive ch(var 1,...,var n )  empty(ch)

4 Exemplo: filtro para organizar linhas de caracteres  chan input (char),output(char[20]); void char_to_line { char line[20]; int i = 1; while (TRUE) { receive input(line[i]); while (line[i] != ‘\n’ && i < 20) { i++; receive input(line[i]); } } send output(line); i=1; }

5 Filtros: Rede para Ordenação  Problema: Ordenar n números  Solução 1: um processo recebe os números por um canal de entrada, ordena os números, e os envia ordenados no canal de saída.

6 Filtros: Rede para Ordenação  Dificuldade: detectar o fim da entrada dos números, i.e. a quantidade de números (n) a ser ordenada.  Saber a quantidade antecipadamente  Ter n como o primeiro valor a ser recebido  Terminar a sequencia de entrada com um valor sentinela (valor especial que indica que os números acabaram). Esta é a solução mais geral.

7 Rede de merge  chan in1 (int), in2 (int), out (int); void merge { int v1, v2; receive in1(v1); receive in2(v2); while (v1 != EOS and v2 != EOS) { if (v1 < v2) {send out (v1); receive in1(v1);} else {send out (v2); receive in2(v2);}; } if (v1 == EOS) {while (v2 != EOS) {send out (v2); receive in2 (v2);}} else {while (v1 != EOS) {send out (v1); receive in1 (v1);}} send out (EOS); }

8 Rede de merge n Nomes dos canais:  Estáticos: declarar os canais em um array global e cada instancia de merge trabalha com determinados canais (índices) dos arrays como entrada ou saída.  Dinâmicos: declarar os canais em um array global e cada instancia de merge recebe os arrays de entrada e de saída como parâmetros.  Torna os programas idênticos, mas exige um main para programar a interconexão dos canais.

9 Clientes e Servidores n Servidor: processo que continuamente responde a pedidos dos clientes. n Como transformar monitores em processos servidores: monitores podem ser simulados por troca de mensagens e vice-versa.

10 Simulando chamada a procedimentos  chan request (int, tipos dos parâmetros); chan reply[N](tipos dos resultados); void servidor { int index;... while (TRUE) { receive request (index, parametros);... corpo da operação... send reply[index](resultado) } } void client_i { send request(i, argumentos); receive reply[i](resultado); }

11 Clientes e servidores n Seguindo o exemplo anterior, é possível extende-lo para suportar:  vários procedimentos diferentes,  e a espera por uma condição

12 Monitores x Troca de mensagens n Variáveis permanentes n Identificadores de procedimentos n Chamada de procedimentos n Entrada do monitor n Retorno do procedimento n Wait n Signal n Corpo do procedimento n Variáveis locais ao server n Canal request e tipos de operação n send request e receive reply n receive request n send reply n guarda pendência n Processa pedido pendente n case


Carregar ppt "Troca de Mensagens Assíncronas n Canais de comunicação são filas ilimitadas de mensagens. n Processos inserem elementos nessa flia através de comandos."

Apresentações semelhantes


Anúncios Google