Comunicação entre Processos - PDF
Download "Comunicação entre Processos"
Fátima Rijo di Azevedo
1 Comunicação entre Processos
2 Comunicação memória compartilhada troca de mensagens base de comunicação em sistemas distribuídos
3 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
4 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
5 recebimento síncrono e assíncrono recebimento síncrono alternativa tradicional execução procede quando há algo a tratar alternativa de recebimento com timeout
6 bloqueios recebimento com bloqueio leva à suspensão de uma linha de execução uma solução paliatica é o polling por mensagens
7 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
8 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
9 envio e recebimento sincronização em diferentes pontos da interação origem destino
10 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
11 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
12 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,...
13 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
14 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
15 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
16 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
17 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?
18 modelos de servidores servidores iterativos servidores concorrentes multiprocesso (ou multithread) monoprocesso atendimento a vários clientes misturado em uma linha de execução
19 sist. msgs p/ cliente/serv exemplo: tcp protocolo construído para comunicação entre cliente e servidor
20 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()
21 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!!
22 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
23 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)
24 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.
25 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
26 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
27 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(); }
28 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 */ }
29 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 )
30 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
31 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]])
32 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
Sistemas de Operação Sockets
Sistemas de Operação Sockets O que é um socket? Uma interface de comunicação entre processos que podem ou não residir na mesma máquina, mas que não precisam estar relacionados. É usado normalmente para
Programação com Sockets. Redes de Computadores I 2007/2008
Programação com Sockets Redes de Computadores I 2007/2008 Arquitectura das Aplicações Cliente-Servidor Peer-to-Peer (P2P) Híbrido Peer-to-Peer e Cliente-Servidor 09-11-2007 Universidade do Minho 1 Comunicação
Programação com Sockets TCP e UDP - Cliente. Gustavo Leitão
Programação com Sockets TCP e UDP - Cliente Gustavo Leitão 5/24/2010 INTRODUÇÃO Objetivo da Aula OBJETIVO DA AULA Apresentar ao aluno conceitos e prática em sockets INTRODUÇÃO O que é um socket? INTRODUÇÃO
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
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 Engenharia Elétrica Eletrônica Tutorial: Programação
MC823 Laboratório de Teleprocessamento e Redes
MC823 Laboratório de Teleprocessamento e Redes Primeiro Semestre 2008 Carlos R. Senna Prof. Edmundo R. M. Madeira Tecnologias de Comunicação 2 MC823 Funções para cliente-servidor UDP 3 well-known port
TROCA DE MENSAGENS SOCKETS. Comunicando processos através de SOCKETS. SOCKETS com conexão. SOCKETS sem conexão
TROCA DE MENSAGENS SOCKETS Comunicando processos através de SOCKETS SOCKETS com conexão SOCKETS sem conexão SOCKETS Princípios dos sockets: 2. Fornecer uma interface geral permitindo a construção de aplicações
Cliente/Servidor. Programação com Sockets. Graça Bressan. Graça Bressan/LARC 2000 1
Cliente/Servidor Programação com Sockets Graça Bressan Graça Bressan/LARC 2000 1 Interface através de Sockets Socket é uma API ( Aplication Program Interface ) para acesso aos serviços do protocolo de
Introdução à Programação Sockets
2002-2015 Volnys Bernal 1 Introdução à Programação Sockets Volnys Borges Bernal volnys@lsi.usp.br Departamento de Sistemas Eletrônicos Escola Politécnica da USP 2002-2015 Volnys Bernal 2 Agenda Interface
Introdução à Programação com Sockets. Fernando Jorge Silveira Filho Daniel Sadoc Menasché
Introdução à Programação com Sockets Fernando Jorge Silveira Filho fernando@land.ufrj.br Daniel Sadoc Menasché sadoc@land.ufrj.br Visão Geral Objetivos: Realizar comunicação entre processos. Entender como
06/10/2015. Modelo TCP/IP Camada de Transporte DISCIPLINA: TECNOLOGIA DE REDES DE COMPUTADORES. UDP User Datagram Protocol. UDP User Datagram Protocol
Tecnologia em Jogos Digitais Modelo TCP/IP Camada de Transporte DISCIPLINA: TECNOLOGIA DE REDES DE COMPUTADORES O transporte dos dados na INTERNET é realizado por dois protocolos. PROTOCOLOS TCP E UDP
29-Aug-07. Histórico. Interfaces e Periféricos Redes como interfaces. Abstração da infraestrutura de rede como interface
Interfaces e Periféricos Redes como interfaces Prof. João Paulo A. Almeida (jpalmeida@inf.ufes.br) Histórico Surgimento e popularização das redes criou a necessidade e oportunidade de usá-las como mecanismo
Um Tutorial sobre Sockets Parte I
Um Tutorial sobre Sockets Parte I Por Antonio Marcelo Iniciando As grandes ferramentas utilizadas por especialistas de segurança, hackers e crakers tem como base a linguagem C ANSI ou C ++. Muitos dos
Comunicação entre processos. Sistema centralizado
Sistemas Distribuídos Comunicação entre processos Sistema centralizado Comunicação entre processos Arquivo Memória compartilhada Sinal Fila de mensagem SO gerencia comunicação 2 Sistema distribuído Idéia
Tutorial de Sockets - Parte I Por: Frederico Perim
Tutorial de Sockets - Parte I Por: Frederico Perim O que é um Socket? Você já deve ter ouvido faler sobre Sockets e talvez esteja imaginando do que se trata exatamente. Bem, resumindo: através de Sockets
Programação em Sockets visando verificar a diferença entre transmissão confiável (TCP) e não confiável (UDP)
II - UFRGS Programação em Sockets visando verificar a diferença entre transmissão confiável (TCP) e não confiável (UDP) Valter Roesler Universidade Federal do Rio Grande do Sul (UFRGS) Instituto de Informática
Modelo Cliente/Servidor e Introdução a Sockets
Modelo Cliente/Servidor e Introdução a Sockets MC 833 Programação em s de Computadores Instituto de Computação UNICAMP Juliana Freitag Borin O modelo OSI de 7 camadas Nó origem Nó destino Apresentação
Servidor TCP. Programação Sockets. (c) Volnys Bernal. Servidor TCP Resumo das Chamadas TCP. Resumo das Chamadas TCP. Resumo das Chamadas TCP
2004-2016 Volnys Bernal 1 2004-2016 Volnys Bernal 2 Resumo das Chamadas TCP Volnys Borges Bernal volnys@lsi.usp.br Departamento de Sistemas Eletrônicos Escola Politécnica da USP Resumo das Chamadas TCP
1 Projeto de software de clientes. 1
1 Projeto de software de clientes. 1 1.1 Introdução Aplicações clientes são conceitualmente mais simples que aplicações servidoras pois, normalmente, não manipulam concorrência explicita com múltiplos
Sistemas Distribuídos (Parte 4 - Aplicação Distribuída)
Unidade de Gestão da Educação Presencial - GEDUP Pós-graduação em Redes de Computadores Sistemas Distribuídos (Parte 4 - Aplicação Distribuída) Prof. Ms. Tomás Dias Sant Ana Varginha, 2006 Sumário 1. INTRODUÇÃO...1
Prof. Universidade Federal de Mato Grosso do Sul brivaldo@facom.ufms.br 24 de abril de 2017 Sumário 1 O núcleo da rede 2 3 Introdução Nesta aula vamos fazer ter uma visão geral de como programas de rede
Servidor UDP. Programação Sockets Volnys Bernal. Servidor UDP Resumo das Chamadas UDP. Resumo de Chamadas UDP. Resumo de Chamadas UDP
2004-2015 Volnys Bernal 1 2004-2015 Volnys Bernal 2 Resumo das Chamadas UDP Volnys Borges Bernal volnys@lsi.usp.br Departamento de Sistemas Eletrônicos Escola Politécnica da USP 2004-2015 Volnys Bernal
MC823 Atividade 1: Cliente/Servidor TCP Iterativo. 3 Modificando o servidor para retornar data e hora
MC823 Atividade 1: Cliente/Servidor TCP Iterativo Gustavo Sverzut Barbieri 1 Introdução Nessa atividade nós modificamos cliente e servidor simples que utilizam o protocolo TCP/IP.
Objetivo. Processamento Paralelo Middleware. Cliente/Servidor. Histórico. Cliente/Servidor. Programação de sistemas distribuídos
Objetivo Entender a motivação para o conceito de middleware Processamento Paralelo Middleware Prof. João Paulo A. Almeida (jpalmeida@inf.ufes.br) 2007/01 - INF02799 Histórico Surgimento e popularização
INF01018 Aula Prática 1 Cliente-Servidor e Multicast
1 / 30 INF01018 Aula Prática 1 Cliente-Servidor e Multicast Lucas Mello Schnorr, Alexandre Silva Caríssimi {lmschnorr,asc}@inf.ufrgs.br http://www.inf.ufrgs.br/ lmschnorr/ad/ INF01018 Sistemas Operacionais
SocketBasico Receita: SocketBasico Esta receita é baseada em um material que preparei para uso em aulas para demostrar a programação básica para redes usando socket com a intensão de ser uma "prova de
Programação de Sistemas. Sockets. Programação de Sistemas Sockets : 1/66
Programação de Sistemas Sockets Programação de Sistemas Sockets : 1/66 Introdução à Internet (1) A. Modelo de comunicação na rede de computadores O mais divulgado é a Internet. Baseada numa pilha de protocolos
2004-2013 Volnys Bernal 1 2004-2013 Volnys Bernal 2 Resumo das Chamadas TCP Volnys Borges Bernal volnys@lsi.usp.br http://www.lsi.usp.br/~volnys 2004-2013 Volnys Bernal 3 2004-2013 Volnys Bernal 4 Resumo
2004-2013 Volnys Bernal 1 2004-2013 Volnys Bernal 2 Volnys Borges Bernal volnys@lsi.usp.br http://www.lsi.usp.br/~volnys 2004-2013 Volnys Bernal 3 2004-2013 Volnys Bernal 4 Lado Cliente Lado Servidor sd1
6. Camada de Transporte DIN/CTC/UEM 2008 Principais Funções Oferece conexão lógica entre duas extremidades da rede Oferece controle fim-a-fim de fluxo e confiabilidade Independente da tecnologia utilizada
16-Apr-08. Objetivo. Processamento Paralelo Middleware. Histórico. Cliente/Servidor. Cliente/Servidor
Objetivo Entender a motivação para o conceito de middleware Processamento Paralelo Middleware Prof. João Paulo A. Almeida (jpalmeida@inf.ufes.br) 2008/01 - INF02799 Aplicações distribuídas: interação entre
Troca de Mensagens Curso de Programação Concorrente Notas de aula Cláudio Geyer.
Troca de Mensagens Curso de Programação Concorrente Notas de aula Cláudio Geyer. Programação concorrente (C. Geyer) Troca de Mensagens 1 Autores Autores Local C. Geyer Instituto de Informática UFRGS disciplina:
Arquiteturas de Sistemas Distribuídos
Arquiteturas de Sistemas Distribuídos Sistema distribuído O processamento de informações é distribuído em vários computadores ao invés de confinado em uma única máquina. Bastante comum em qualquer organização
CAPÍTULO 6 A CAMADA DE TRANSPORTE
CAPÍTULO 6 A CAMADA DE TRANSPORTE 6.1 OS SERVIÇOS DE TRANSPORTE: 6.1.1 SERVIÇOS OFERECIDOS ÀS CAMADAS SUPERIORES: Tem como objetivo de oferecer um serviço confiável, eficiente e econômico a seus usuários.
Programação TCP/IP (sockets)
Programação TCP/IP (sockets) Instituto Superior de Engenharia de Lisboa Departamento de Engenharia de Electrónica e Telecomunicações e de Computadores Redes de Computadores Aplicações 17-03-2010 Programação