remote procedure call rpc e rendezvous
Download
Skip this Video
Download Presentation
Remote Procedure Call (RPC) e Rendezvous

Loading in 2 Seconds...

play fullscreen
1 / 25

Remote Procedure Call (RPC) e Rendezvous - PowerPoint PPT Presentation


  • 68 Views
  • Uploaded on

Remote Procedure Call (RPC) e Rendezvous. Com troca de mensagens, a programacao de programas do tipo cliente-servidor exigem a troca explicita de duas mensagens Se os canais forem unidirecionais, precisamos de vários canais, e vários testes para detectar o tipo de mensagem. RPC e Rendezvous.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Remote Procedure Call (RPC) e Rendezvous' - marah-meyers


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
remote procedure call rpc e rendezvous
Remote Procedure Call (RPC) e Rendezvous
  • Com troca de mensagens, a programacao de programas do tipo cliente-servidor exigem a troca explicita de duas mensagens
  • Se os canais forem unidirecionais, precisamos de vários canais, e vários testes para detectar o tipo de mensagem.
rpc e rendezvous
RPC e Rendezvous
  • RPC e Rendezvous são ideais para interações do tipo cliente-servidor.
  • Combinam aspectos de monitores e de troca de mensagens síncronas
rpc e rendezvous1
RPC e Rendezvous
  • Como monitores, um [módulo/]processo exporta operações, que são chamadas a partir de outros [módulos/]processos.
  • Como troca de mensagens síncronas, o processo que faz a chamada bloqueia até que ela seja atendida.
  • A comunicação é bidirecional
rpc e rendezvous2
RPC e Rendezvous
  • A diferença entre RPC e rendezvous é apenas em como as solicitações são atendidas.
  • RPC: procedimentos atendem as chamadas, criando um “processo” para cada solicitação
  • Rendezvous: encontro com um processo que está rodando, através de “accept”.
exemplo de rendezvous ada
Exemplo de Rendezvous: Ada
  • US DOD
  • criada para ser a linguagem padrão para o desenvolvimento de softwares críticos
  • Sistema de tipos fortes
  • Packages
  • Suporte direto a concorrência: tasks
  • expressibilidade vs. eficiência
rendezvous
Rendezvous
  • Comunicação síncrona (sem buffers)
  • duas tasks se encontram em um rendezvous para se comunicarem
  • o primeiro a chegar espera pelo outro
  • accepting task é a dona do rendezvous
  • calling task tem que saber
    • a identidade da accepting task
    • o nome do local do rendezvous
rendezvous1
Rendezvous
  • modelo assimétrico
    • bom para programar processos servidores
  • partes de uma task em Ada
    • specification
      • entries
    • body
slide8
task
  • task Buffer is entry Append(I: in Integer); entry Take (I: out Integer);end Buffer;
slide9
task
  • task body Buffer isbegin ... accept Append(I : in Integer) do ... corpo do accept end Append; ...end Buffer;
  • Buffer.Append(I);
rendezvous2
Rendezvous
  • calling task passa o seu parâmetro in para a accepting task e espera o rendezvous se completar
  • accepting task executa os comandos no corpo do accept (até o end)
  • os parâmetros out são passados de volta à calling task
  • o rendezvous está terminado e as duas tasks não estão mais suspensas
buffer degenerado
Buffer Degenerado
  • task body Buffer is B: Array (0..N-1) of Integer; In_Ptr, Out_Ptr: Integer := 0; Count: Integer := 0;begin loop accept Append(I: in Integer) do B(In_Ptr) := I; end Append; Count := Count + 1; In_Ptr := (In_Ptr + 1) mod N; accept Take(I: out Integer) do I := B(Out_Ptr); end Take; Count := Count - 1; Out_Ptr := (Out_Ptr + 1) mod N; end loop; end Buffer;
rendezvous em ada uma primitiva com as seguintes caracter siticas
rendezvous em Ada é uma primitiva com as seguintes caracterísiticas
  • comunicação síncrona e não bufferizada
  • identificação assimétrica
  • fluxo de dados nas duas direções durante o rendezvous
o select
O select
  • task body Buffer is ...begin loop select when Count < N => accept Append(I: in Integer) do B(In_Ptr) := I; end Append; Count := Count + 1; In_Ptr := (In_Ptr + 1) mod N; or when Count > 0 => accept Take(I: out Integer) do I := B(Out_Ptr); end Take; Count := Count - 1; Out_Ptr := (Out_Ptr + 1) mod N; end select;end loop; end Buffer;
sem ntica do select
Semântica do select
  • guardas são avaliadas, gerando o conjunto de alternativas abertas
    • tem que haver pelo menos uma, ou um else
  • se há tasks em fila esperando por entries em alternativas abertas, rendezvous é iniciado com a primeira de uma das filas
sem ntica do select1
Semântica do select
  • Se todas as filas de espera em alternativas abertas estão vazias, a accepting task é suspensa até que uma task chame uma entrada em uma dessas filas
    • o conjunto de alternativas abertas não muda
o select1
O select
  • pode ter como última alternativa
    • else ...
    • delay T ...
    • terminate
programando com rendezvous
Programando com rendezvous
  • rendezvous implementa remote procedure call
  • delay implementa timeout
  • else implementa polling
  • sincronização com accept bodies vazios
simulando sem foro
Simulando Semáforo
  • task body Semaphore is ...begin loop accept Wait; accept Signal; end loop; end Buffer;
poder de express o do rendezvous
Poder de expressão do rendezvous
  • sincronizar múltiplas tarefas
    • accepts aninhados
  • task body T1 is ...begin ... accept Synch_2 do accept Synch_3; end Synch_2; ... end T1;
leitores e escritores
Leitores e escritores
  • task body Readers_and_Writers is ...begin accept Start_Write; accept End_Write; loop select accept Start_Read ...; or accept End_Read ...; or accept Start_Write ...; or accept End_Write ...; end select; end loop;end Readers_and_Writers;
m ltiplos accepts
Múltiplos accepts
  • task body Even_Odd is ...begin loop accept E(...) do -- process odd calls end E; accept E(...) do -- process even calls end E; end loop;end Even_Odd;
uso de select na calling task
uso de select na calling task
  • calling task só pode suspender em uma entry
  • task body T is ...begin loop select Sensor.Sample(...); or delay 1.0; -- seconds Notify_Operator; end select;end loop;end T;
polling v rios servidores
Polling vários servidores
  • task body T is ...begin loop select Server_1.E(...); else null; end select; select Server_2.E(...); else null; end select; ...end loop;end T;
polling um servidor
Polling um servidor
  • task body T is ...begin loop select Server_1.E(...); else select Server_2.E(...); else ...; end select; end select;end loop;end T;
entry families
Entry Families
  • Type Priorities is (Low, Medium, High);
  • task Server is entry Request(Priorities)(...);end Server;
  • task body Server isbegin loop select accept Request(High)(...) ...; or when Request(High)’Count = 0 => accept Request(Medium)(...) ...; or when Request(High)’Count = 0 and Request(Medium)(...)’Count = 0 => accept Request(Low)(...) ...; end select;end loop;end Server;
ad