Remote Procedure Call RPC e Rendezvous n n
- Slides: 25
Remote Procedure Call (RPC) e Rendezvous n n 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 n n 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 Rendezvous n n n 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 Rendezvous n n n 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 n n n 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 n n n 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
Rendezvous n modelo assimétrico · bom para programar processos servidores n partes de uma task em Ada · specification Þentries · body
task n task Buffer is entry Append(I: in Integer); entry Take (I: out Integer); end Buffer;
task n n task body Buffer is begin. . . accept Append(I : in Integer) do. . . corpo do accept end Append; . . . end Buffer; Buffer. Append(I);
Rendezvous n n 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 n 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 n n n comunicação síncrona e não bufferizada identificação assimétrica fluxo de dados nas duas direções durante o rendezvous
O select n 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 n guardas são avaliadas, gerando o conjunto de alternativas abertas · tem que haver pelo menos uma, ou um else n se há tasks em fila esperando por entries em alternativas abertas, rendezvous é iniciado com a primeira de uma das filas
Semântica do select n 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 select n pode ter como última alternativa · else. . . · delay T. . . · terminate
Programando com rendezvous n n rendezvous implementa remote procedure call delay implementa timeout else implementa polling sincronização com accept bodies vazios
Simulando Semáforo n task body Semaphore is. . . begin loop accept Wait; accept Signal; end loop; end Buffer;
Poder de expressão do rendezvous n n sincronizar múltiplas tarefas · accepts aninhados task body T 1 is. . . begin. . . accept Synch_2 do accept Synch_3; end Synch_2; . . . end T 1;
Leitores e escritores n 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 n 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 n n 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 n 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 n task body T is. . . begin loop select Server_1. E(. . . ); else select Server_2. E(. . . ); else. . . ; end select; end loop; end T;
Entry Families n n n Type Priorities is (Low, Medium, High); task Server is entry Request(Priorities)(. . . ); end Server; task body Server is begin 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;
- Remote procedure call diagram
- Lightweight remote procedure call
- Remote procedure call architecture
- Remote procedure call middleware
- Remote procedure call c++
- Design issues of remote procedure call
- Karikatur von david low
- Tvalu
- Rendezvous political cartoon meaning
- Rendezvous canada
- One tangent burn
- Earth educators rendezvous
- Remote call station
- Procedure call
- Option a option b
- Protective put
- +call +recording +call +centers +gartner
- Rpc status: -532462766 -532462766
- Ucla rpc
- Rpc
- What is the primary motivation for development of rpc?
- Frontpage exploit
- Rpc diagram
- Rpc
- Rpc construction
- Rpc vs rmi