Remote Procedure Call (RPC) e Rendezvous

Slides:



Advertisements
Apresentações semelhantes
Semáforos Eduardo Nicola F. Zagari
Advertisements

E/S Síncrona x E/S Assíncrona no sistema Unix
SISTEMAS OPERACIONAIS (SO) Aula 5 Luciana A. F. Martimiano 2002
Sistemas Operacionais Programação concorrente
Arquitetura de Sistemas Operacionais
abs access after alias all and architecture array assert attribute begin block body buffer bus case component configuration constant disconnect downto.
Programação Concorrente
Chip-Select e Controle de Interrupção
ESTRUTURAS DO TIPO FILA
Modelos de Comunicação em Sistemas Distribuídos
RPC Remote Procedure Call
Comunicação Distribuída
Monitores.
Sistemas Operacionais II
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC SISTEMAS OPERACIONAIS I Aula.
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC SISTEMAS OPERACIONAIS I Turmas.
Walfredo Cirne Threads Walfredo Cirne
Sincronização de Processos (5)
Sincronização de Processos (4)
Sincronização de Processos (3)
Sincronização de Processos (5) - Monitores -
Sincronização de Processos (6) - Troca de Mensagens -
Sincronização de Processos (2)
9 Controle de fluxo Seqüenciadores. Jumps. Escapes. Exceções.
7 Abstração Genérica Unidades genéricas e instanciação.
Sincronização e Comunicação entre Processos
Sistemas Operacionais
Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,
Ada.
Monitores.
Unidade 1-1 Processos e Threads
Unidade 3 Controle de Concorrência
Pedro Costa Computadores e Redes de Comunicação 1 Sistemas Operativos Baseado em: Andrew S. Tanenbaum. Modern Operating Systems, Prentice-Hall, 1992.
Tópicos em redes e sistemas distribuídos B Carlos Oberdan Rolim Ciência da Computação.
Tópicos em redes e sistemas distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Web Services Uninorte Semana de Tecnologia da Informação
Chamada Remota de Procedimentos
Sistemas Distribuídos
Concorrência STRD.
Paradigmas de Linguagens de Programação Linguagem Orientada a Objetos 1 Augusto Sampaio e Paulo Borba Departamento de Informática Universidade Federal.
Zeque - Grad. CC1 Sistemas Operacionais l Processos Plano de Apresentação  O Modelo de Processo  Definição  Características  Hierarquia  Implementação.
Universidade da Beira Interior Fiabilidade de Sistemas Informáticos Nuno Magarreiro n.º
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.
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
1 Comunicação Inter-Processos -> RMI -> RPC -> TCP -> UDP (Abstração de passagem de mensagem)
Comunicação.
Semáforos n Variáveis compartilhadas são globais n Acesso a variáveis ocorre em procedimentos, mas podem estar espalhados pelo programa n Exige consulta.
Sistemas operacionais
Troca de Mensagens Programação concorrente
Professor Ulisses Vasconcelos
Concorrência em LI2 Monitor e Rendezvous Projeto de PLP – 2 a fase Daniel Pereira – {dtvp} Petrus Bastos – {prb} Rafael Ribeiro – {rar}
Capítulo 4: Processos.
Sistemas Distribuídos Prof. Marcus Rodrigues
Sistemas Distribuídos Aula 05 – Programação Multithread/Paralela
Implementação de Sincronização n Protocolos que usam busy waiting:  Difíceis de projetar, compreender e provar corretos  Complexos  Variáveis usadas.
Video Capítulo 7: Sincronização de Processos. Silberschatz, Galvin and Gagne  Video Operating System Concepts Assuntos n Cenário n O problema.
JR: Flexible Distributed Programming in an Extended Java Elmário Gomes Dutra Jr. Gustavo Romano.
Modelos de Comunicação em Sistemas Distribuídos
Modelos de Comunicação em Sistemas Distribuídos
Concorrência em LF1 Paradigmas de Linguagens de Programação 20 de junho de 2006 Aline Timóteo Carlos Rodrigues Flávia Falcão Tiago Rolim.
Processos Concorrentes
Implementação Distribuída Escalonamento de Tempo-Real Prof. Dr. Norian Marranghello Grupo 8 Daniela Gonçalves Strozi – Sayuri Watanabe
Sistemas Operacionais Distribuídos
Sistemas Distribuídos
Programação Concorrente
CURSO JAVA BÁSICO Módulo 9 – slide 1 Módulo 10 Threads.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais IESP - FATEC-PB Professor: Gustavo Wagner.
Bruna Cavallero Martins Universidade Católica de Pelotas.
SINCRONIZAÇÃO E COMUNICAÇÃO ENTRE PROCESSOS PROF. HORACIO RIBEIRO Sistemas operacionais.
IF E ITERAÇÃO WHILE Dilvan Moreira (baseado no livro Big Java e T. Munzner)
Transcrição da apresentação:

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 são ideais para interações do tipo cliente-servidor. Combinam aspectos de monitores e de troca de mensagens síncronas

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 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 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 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 modelo assimétrico partes de uma task em Ada bom para programar processos servidores partes de uma task em Ada specification entries body

task task Buffer is entry Append(I: in Integer); entry Take (I: out Integer); end Buffer;

task task body Buffer is begin ... accept Append(I : in Integer) do ... corpo do accept end Append; ... end Buffer; Buffer.Append(I);

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 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 comunicação síncrona e não bufferizada identificação assimétrica fluxo de dados nas duas direções durante o rendezvous

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 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 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 select pode ter como última alternativa else ... delay T ... terminate

Programando com rendezvous rendezvous implementa remote procedure call delay implementa timeout else implementa polling sincronização com accept bodies vazios

Simulando Semáforo task body Semaphore is ... begin loop accept Wait; accept Signal; end loop; end Buffer;

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 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 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 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 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 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 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;