Comunicação entre Processos



Documentos relacionados
Comunicação entre Processos

Bibliotecas. Apoio à Programação Distribuída. Socket. Socket. bibliotecas bibliotecas+ferramentas linguagens de programação distribuídas

Problemas relacionados a exclusão mútua

Sistemas de Operação Sockets

Engenharia Elétrica Eletrônica Slides 20: TCP/IP em Winsocks 2. API do Windows para programar utilizando o protocolo TCP/IP Prof. Jean Marcelo SIMÃO

Programação com Sockets TCP e UDP - Cliente. Gustavo Leitão

Programação com Sockets. Redes de Computadores I 2007/2008

Programação de Sockets em C/C++

Soquetes TCP. Jean Ribeiro Damasceno. Escola de Engenharia Universidade Federal Fluminense (UFF) Rua Passo da Pátria, 156 Niterói RJ Brasil

TROCA DE MENSAGENS SOCKETS. Comunicando processos através de SOCKETS. SOCKETS com conexão. SOCKETS sem conexão

Comunicação em Sistemas Distribuídos. Conceitos: Paradigma C/S. Conceitos: Paradigma C/S. Paradigma Cliente/Servidor

MC823 Laboratório de Teleprocessamento e Redes

sockets interprocess communication Taisy Weber

camada de transporte SOCKET TCP UDP

Redes de Computadores (PPGI/UFRJ)

UNIVERSIDADE. Sistemas Distribuídos

Capítulo II Modelos de Programação Distribuída

Programação com sockets (em Java)

Sockets. Bruno Guimarães Lucas Rossini

Aula Prática. Comunicação em SOCKTS. Disciplina: INF01151

Cliente/Servidor. Programação com Sockets. Graça Bressan. Graça Bressan/LARC

Introdução à Programação Sockets

Considerações no Projeto de Sistemas Cliente/Servidor

Introdução à Programação com Sockets. Fernando Jorge Silveira Filho Daniel Sadoc Menasché

REDES DE COMPUTADORES

06/10/2015. Modelo TCP/IP Camada de Transporte DISCIPLINA: TECNOLOGIA DE REDES DE COMPUTADORES. UDP User Datagram Protocol. UDP User Datagram Protocol

No projeto das primeiras redes de computadores, o hardware foi a principal preocupação e o software ficou em segundo plano.

Redes de Computadores (RCOMP 2014/2015)

Relatório do Laboratório 3

Sockets. André Restivo. April 29, Faculdade de Engenharia da Universidade do Porto. André Restivo (FEUP) Sockets April 29, / 27

Sistemas Operacionais - Básico e Avançado - Prof. Celso Maciel da Costa Mestrado em Informática - PUCRS

Cliente-servidor com Sockets TCP

29-Aug-07. Histórico. Interfaces e Periféricos Redes como interfaces. Abstração da infraestrutura de rede como interface

Aula de Socket. Rafael De Tommaso do Valle

Um Tutorial sobre Sockets Parte I

Sistemas Operacionais:

Tipos de Servidores. Servidores com estado

Redes de Computadores e a Internet

Sockets - Conceitos Básicos. COMUNICAÇÃO ENTRE PROCESSOS Sockets. Conceitos Básicos. Tipos de Sockets

socket Objetivo: aprender a construir aplicações cliente/servidor que se comunicam usando sockets

Comunicação Inter-Processos. Prof. Adriano Fiorese. Conceitos Iniciais

Disciplina de Redes de Computadores Estudo Dirigido para a Prova II Professor Dr Windson Viana de Carvalho

Sistemas Distribuídos

Aleph. Entre Bibliotecas. Reunião da REJE 09 de novembro de 2011

Diagrama lógico da rede da empresa Fácil Credito

Fernando Albuquerque - fernando@cic.unb.br ADMINISTRAÇÃO TCP/IP. Fernando Albuquerque fernando@cic.unb.br

Cliente UDP. Programação sockets. Agenda. Cliente UDP. Resumo de Chamadas UDP. Resumo das chamadas UDP. Resumo de Chamadas UDP.

Sistemas Distribuídos e Redes de Sensores

Sumário. Introdução ao TCP/IP e à Internet API Sockets para comunicação via redes Exemplos

Camada de Transporte, protocolos TCP e UDP

Comunicação entre processos

Comunicação entre processos. Sistema centralizado

Modelo Cliente/Servidor e Introdução a Sockets

Redes de Computadores. 1 Questões de múltipla escolha. TE090 - Prof. Pedroso. 17 de junho de 2015

Programação de Aplicações em. Rede usando Sockets

Instalação do Sirius sem estações. O primeiro passo é instalar o Firebird 1.5, ele se encontra no CD de instalação do Sirius na pasta Firebird.

comunicação entre processos distribuídos

Eng.ª Informática. Redes de Computadores. Frequência. 4 de Julho de 2006

Sistemas Distribuídos

Redes de Computadores. Arquitetura de Protocolos Profa. Priscila Solís Barreto

Sockets em Ruby. Curso de Tecnologia em Redes de Computadores Programação para Redes

Aula 2 Arquitetura de Redes. Prof. Dr. S. Motoyama

Cliente-servidor com Sockets TCP

Introdução à Camada de Aplicação. Prof. Eduardo

Grupos de Processos (Comunicação Grupal)

UMA ABORDAGEM SOBRE A INTERFACE DE PROGRAMAÇÃO DE APLICAÇÕES SOCKETS E A IMPLEMENTAÇÃO DE UM SERVIDOR HTTP


Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Java NET: Interaja com a Internet. Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet Maio,

Introdução à Programação Sockets. Programação Sockets. (c) Volnys Bernal. Agenda. Introdução à Programação Sockets

Rede de Computadores (REC)

DALUA: BIBLIOTECA PARA APLICAÇÕES DISTRIBUÍDAS

Cliente UDP. Programação sockets. Agenda. Cliente UDP. Resumo de Chamadas UDP. Chamadas UDP. Resumo de Chamadas UDP.

Programação em Sockets visando verificar a diferença entre transmissão confiável (TCP) e não confiável (UDP)

Sistemas Operacionais. Curso Técnico Integrado Profa: Michelle Nery

Endereçamento Privado Proxy e NAT. 2008, Edgard Jamhour

Prof. Samuel Henrique Bucke Brito

Resolução de Problemas de Rede. Disciplina: Suporte Remoto Prof. Etelvira Leite

Programação com Sockets

Por Fernando Koyanagi

Introdução à Programação Sockets. Programação Sockets. (c) Volnys Bernal. Agenda. Introdução à Programação Sockets

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

Camada de Aplicação. Prof. Eduardo

Redes de Computadores II

Sistemas Distribuídos Arquiteturas Middlewares

4 Implementação e Ambiente de Simulação

Redes de Computadores. 1 Questões de múltipla escolha. TE090 - Prof. Pedroso. 30 de novembro de Exercício 1: Considere:

Servidor TCP. Programação Sockets. (c) Volnys Bernal. Servidor TCP Resumo das Chamadas TCP. Resumo das Chamadas TCP. Resumo das Chamadas TCP

MINISTÉRIO DA EDUCAÇÃO

Sistemas Distribuídos (Parte 4 - Aplicação Distribuída)

Chamadas do Socket. Socket(int family, int type, int protocol) SOCK_STREAM SOCK_DGRAM AF_INET AF_UNIX AF_NS. sockfd = socket(af_inet, SOCK_STREAM, 0)

Tutorial de Sockets - Parte I Por: Frederico Perim

Servidor UDP. Programação Sockets Volnys Bernal. Servidor UDP Resumo das Chamadas UDP. Resumo de Chamadas UDP. Resumo de Chamadas UDP

Servidor UDP Volnys Borges Bernal Departamento de Sistemas Eletrônicos Escola Politécnica da USP

Introdução a Banco de Dados Aula 03. Prof. Silvestri

Sockets. Introdução. Introdução. Programando para redes em Java. mecanismo de alto nível para acessar recursos na Internet.

Exercícios de Revisão Redes de Computadores Edgard Jamhour. Nome dos Alunos

REDE DE COMPUTADORES

4. Qual seria o impacto da escolha de uma chave que possua letras repetidas em uma cifra de transposição?

Transcrição:

Comunicação entre Processos

Comunicação memória compartilhada troca de mensagens base de comunicação em sistemas distribuídos

Mensagens básicas send (destino, msg) receive (origem, mensagem) questões semântica de operações especificação de origem e destino formato de mensagem

envio síncrono e assíncrono envio assíncrono: execução procede imediatamente tempo envio síncrono: execução só procede quando destinatário recebe msg tempo A A B send (B, ) B send (B, ) receive (A, ) receive (A, ) bufferização concorrência determinismo

recebimento síncrono e assíncrono recebimento síncrono alternativa tradicional execução procede quando há algo a tratar alternativa de recebimento com timeout

bloqueios recebimento com bloqueio leva à suspensão de uma linha de execução uma solução paliatica é o polling por mensagens

alternativas ao bloqueio futuros: sobreposição de computação e comunicação ligado ao conceito de RPC orientação a eventos - recebimento implícito podemos chamar de recebimento assíncrono

persistência mensagens permanecem disponíveis independentemente do tempo de vida dos processos origem e destino; muitas vezes sistemas com persistência associados a modelos onde não há especificação de origem e destino

envio e recebimento sincronização em diferentes pontos da interação origem destino

formato de mensagens valores com tipos canais declarados chamadas remotas sequências de bytes interpretação por conta do programa problemas de conversão de formatos bibliotecas de conversão p/ formato padrão

especificação de pares identificação de processos volatilidade e especificidade de endereços locais de processos serviços de nomes caixas de correio ou canais

arquiteturas de sistemas (paradigmas, padrões, ) necessidade de organizar a comunicação para entender o programa distribuídos arquiteturas: centralizadas: cliente-servidor decentralizadas: p2p. filtros,...

Cliente-Servidor Modelo mais usado para aplicações distribuídas não paralelas; Um processo servidor está sempre a espera de } comunicação; O processo cliente tem a iniciativa de começar a comunicação quando deseja algum serviço. cliente pedido cliente resposta servidor cliente cliente cliente

O Modelo Cliente- Servidor Funcionamento: SERVIDOR (passivo) CLIENTE 1 Requisita serviço Aguardando atendimento iniciar Bloqueado requisição de cliente termina serviço Atendendo mensagens Sendo servido Requisita serviço Aguardando atendimento rede Sendo servido CLIENTE 2

cliente-servidor servidores clássicos: arquivos, impressão, BD,... servidor como executor de chamadas serviços/funções: criptografa, filtra, autentica,... outros: paralelismo SPMD divisão de papéis (cliente ou servidor) não é rígida

aplicações com n camadas cada camada intermediária atua como cliente e servidora exemplo clássico: aplicações web interface usuário processamento dados

clientes magros e gordos maior processamento do lado do cliente ou do servidor? configuração de máquinas estado da rede adaptação dinâmica?

modelos de servidores servidores iterativos servidores concorrentes multiprocesso (ou multithread) monoprocesso atendimento a vários clientes misturado em uma linha de execução

sist. msgs p/ cliente/serv exemplo: tcp protocolo construído para comunicação entre cliente e servidor

exemplo: BSD Sockets comunicação entre processos API para troca de mensagens com vários protocolos histórico: desenvolvimento de interface para TPC/IP no Unix BSD idéia é manter interface de entrada e saída O socket é identificado por um inteiro chamado descritor do socket descritor_do_socket = socket()

TCP/IP transferência de streams de bytes suporte a modelos cliente-servidor TCP/IP estabelece abstração chamada porta exemplo de caixa de correio!!

programando com sockets socket para tcp: espera uma conexão inicia uma conexão socket passivo: espera por uma conexão (usado por servidores) socket ativo: inicia uma conexão (usado pelos clientes) complexidade: parâmetros que o programador pode/tem que configurar

programando com sockets alguns parâmetros: transferência de: stream (TCP) datagrama (UDP) endereço remoto: específico (geralmente usado pelo cliente) inespecífico (geralmente usado pelo servidor)

Chamadas da API socket socket( ) -> cria um socket usado para comunicação e retorna um descritor connect( ) -> depois de criar um socket um cliente chama connect para estabelecer uma conexão com um servidor, usando o descritor do socket write( ) -> para enviar dados através de uma conexão TCP read( ) -> para receber dados através de uma conexão TCP close( ) -> para desalocar o socket. bind( ) -> usado por servidores para especificar uma porta na qual ele irá esperar conexões. listen( ) -> servidores chamam o listen para colocar o socket no modo passivo e torná-lo disponível para aceitar conexões accept( ) -> depois que um servidor chama socket para criar um socket, bind para especificar seu endereço e listen para colocá-lo no modo passivo, ele deve chamar o accept para pegar a primeira solicitação de conexão na fila.

exemplo do uso de sockets SERVIDOR socket bind listen accept bloqueia até chegar uma conexão do cliente read write conexão estabelecida dados CLIENTE socket connect write close dados read close

Código do Servidor usando o Protocolo TCP/IP main(int argc, char *argv[]) { int sockfd, newsockfd, tam_cli, filho_pid; } struct sockaddr_in cli_addr, serv_addr; if ((sockfd = socket(af_inet, SOCK_STREAM, 0)) < 0) /* abre um socket TCP */ erro; /* Liga o processo servidor ao seu endereço local */ bzero((char *)&serv_addr, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = htonl(inaddr_any); serv_addr.sin_port = htons(serv_tcp_port); if (bind(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) erro; listen(sockfd, 5); for (;;) { } newsockfd = accept(sockfd, (struct sockaddr *)&cli_addr, &tam_cli); if (newsockfd <0) erro; if (( filho_pid = fork()) < 0) erro; else if (filho_pid == 0) { /* processo filho */ close(sockfd); /* fecha o socket original */ str_echo(newsockfd); /* processa a solicitação */ exit(); } close(newsockfd); /* processo pai */ servidor concorrente

Código do Cliente usando o Protocolo TCP/IP main(int argc, char *argv[]) { int sockfd; struct sockaddr_in serv_addr; if ((sockfd = socket(af_inet, SOCK_STREAM, 0)) < 0) /* abre um socket TCP */ erro; /* Preenche a estrutura serv_addr com o endereço do servidor com o qual ele deseja se conectar*/ } bzero((char *)&serv_addr, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = inet_addr(serv_host_addr); serv_addr.sin_port = htons(serv_tcp_port); if (connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) erro; str_cli(stdin, sockfd); /* envia a solicitação */ close(sockfd); exit(); }

Endereçamento O socket oferece uma estrutura diferente para cada protocolo onde o programador especifica os detalhes de endereçamento Para o protocolo TCP/IP a estrutura sockaddr_in especifica o formato de endereço struct sockaddr_in { u_short sin_family; /* tipo de endereço */ u_short sin_port; /* número da porta */ u_long sin_addr; /* endereço IP */ }

Definindo o endereço de um servidor struct sockaddr_in { u_short sin_family; /* tipo de endereço */ u_short sin_port; /* número da porta */ u_long sin_addr; /* endereço IP */ } struct sockaddr_in serv_addr; bzero((char *)&serv_addr, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = htonl (INADDR_ANY) serv_addr.sin_port = htons( 6644 )

Portas mecanismo de associação a processos específicos: o processo solicita uma porta específica (tipicamente usado por servidores) o sistema automaticamente atribui uma porta para o processo (tipicamente usado por clientes) o processo especifica porta = 0 antes de fazer a chamada ao bind. O bind atribui uma porta automaticamente

sockets em Lua biblioteca LuaSocket uso de facilidades Lua para criação de interface simplificada socket.tcp() master:bind(address, port) master:listen(backlog) master:connect(address, port) client:receive([pattern [, prefix]]) client:send(data [, i [, j]])

Trabalho 1 contrução de cliente-servidor com algumas estruturas alternativas análise de desempenho: throughput tempo médio de atendimento tempo máximo de atendimento