Comunicação entre processos. Sistema centralizado

Documentos relacionados
Aula de Socket. Rafael De Tommaso do Valle

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

Comunicação entre Processos

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

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

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

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

Introdução à Programação Sockets

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

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

Cliente UDP. Programação sockets. Agenda. Cliente UDP. Resumo de Chamadas UDP. Resumo das 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)

Programação TCP/IP (sockets)

Sistemas Distribuídos

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

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

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

Sistemas de Operação Sockets

Sistemas Operacionais II

Introdução. Protocolos de Aplicação. Introdução à pilha de comunicações TCP/IP. Interface de sockets. Protocolos de aplicação. Exemplos de trabalhos

Introdução. Protocolos de Aplicação. Introdução à pilha de comunicações TCP/IP. Interface de sockets. Protocolos de aplicação. Exemplos de trabalhos

Protocolos de Aplicação

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

Protocolos de Aplicação

Cliente TCP. Programação sockets. Agenda. Cliente TCP. Chamadas sockets para TCP. Chamada socket() Chamada socket()

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

sockets interprocess communication Taisy Weber

Problemas relacionados a exclusão mútua

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

camada de transporte SOCKET TCP UDP

Comunicação. Carlos A. G. Ferraz 25/6/2003. Sistemas Distribuídos 1. Tópicos. Camadas. Transmissão de dados. Marshalling/Unmarshalling.

Sistemas Operacionais Distribuídos e de Redes

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

Sockets: Sumário. Resumo das Propriedades de UDP e de TCP

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

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

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

Comunicação entre Processos

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

Servidor TCP Volnys Borges Bernal Depto de Engenharia de Sistemas Eletrônicos Escola Politécnica da USP

Comunicação entre Processos

Programação com Sockets

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

21/11/16. Histórico. Interfaces e Periféricos Redes como interfaces. Abstração da infraestrutura de rede como interface

API de Sockets. Modelo Cliente/Servidor (2/2) Modelo Cliente/Servidor (1/2) José Pedro Oliveira Sistemas Operativos I

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

Comunicação entre Processos. 1. Pipes 2. Fifos 3. Sockets

Sistemas Operacionais II

Canais de Comunicação

Sistemas Distribuídos Aula 2

SEM 544 Desenvolvimento de Produtos Mecatrônicos

Protocolos de Aplicação

Redes de Computadores. Lab 2 - Computer Networks

Modelo Cliente/Servidor e Introdução a Sockets

Redes de Computadores e Aplicações

Programação Orientada a Objetos para Redes de Computadores

Exemplo Cliente-Servidor. Cliente. Servidor 1/ Requisição / Resposta Enlace 2 Físico 1. Kernel. Kernel

Vamos fazer um pequeno experimento

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

Programação Orientada a Objetos para Redes de Computadores. Modelo Cliente-Servidor. Comunicação entre Processos. O que é um Socket?

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

PROTOCOLOS DE COMUNICAÇÃO

AULA ANTERIOR: MODELOS FUNDAMENTAIS

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

COMUNICAÇÃO ENTRE APLICAÇÕES. Laboratórios de Informática João Paulo Barraca, André Zúquete, Diogo Gomes

Troca de Mensagens _ Notas de Aula _ Prof. Tiago Garcia de Senna Carneiro DECOM / UFOP

Redes de Computadores

Redes de Computadores

Um Tutorial sobre Sockets Parte I

Roteiro... Sistemas Distribuídos Aula 4. Troca de mensagens. Comunicação entre processos. Conceitos de SD, vantagens e desvantagens

MC823 Atividade 1: Cliente/Servidor TCP Iterativo. 3 Modificando o servidor para retornar data e hora

FUNDAMENTOS DE REDES DE COMPUTADORES Unidade 5 Camada de Transporte e Aplicação. Luiz Leão

29/3/16. Processamento Paralelo Arquitetura de Software para Interação Distribuída. Cliente/Servidor. Cliente/Servidor.

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

Redes de Computadores Aula 5

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

Nível de Transporte Portas, Protocolos UDP e TCP

Protocolos TCP e UDP. Protocolo TCP. Protocolo TCP. A necessidade de uma comunicação segura: Transmission Control Protocol

Desenvolvimento de Produtos Mecatrônicos

Arquitetura de sistemas distribuídos

Curso Sistemas Operacionais Distribuídos

Redes de Computadores e Telecomunicações - Camada de Transporte

Sockets e Threads em Java

Por Fernando Koyanagi

Funções da. Os principais serviços oferecidos pela camada de transporte são: Controle de conexão, Fragmentação, Endereçamento e Confiabilidade.

Comunicação entre Processos por Troca de Mensagens. Prof. Celso maciel da Costa

INF01018 Aula Prática 1 Cliente-Servidor e Multicast

Redes TCP/IP. Prof. M.Sc. Alexandre Fraga de Araújo. INSTITUTO FEDERAL DO ESPÍRITO SANTO Campus Cachoeiro de Itapemirim

Projeto e Desenvolvimento de Aplicações Cliente / Servidoras Para a INTERNET

Direto ou Indireto Monolítico ou Estruturado Simétrico ou Assimétrico Padronizado ou Não-Padronizado

Redes de Computadores

Leandro Soares de Sousa (DSc.) Página: Aula 05 - desenvolvimento com sockets

Capítulo 6. A camada de transporte. slide 1 1 reservados.

Comunicação. capítulo

Camada de Transporte. Protocolos TCP e UDP

ach 2147 desenvolvimento de sistemas de informação distribuídos

Rede de computadores Protocolos UDP. Professor Carlos Muniz

Módulo 3 Nível Transporte

Transcrição:

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 do modelo cliente-servidor: estruturar o sistema de forma que servidores oferecem serviços a seus clientes. Servidores e clientes executam como processos do usuário sobre o kernel do S.O. Cliente Kernel rede Servidor Kernel 3 Comunicação entre processos Solução mais simples: modelo cliente-servidor baseado em protocolo sem conexão do tipo requisição/resposta (request/reply) Vantagens: estrutura simples, eficiência, evita sobrecarga Cliente Kernel Requisição Resposta rede Servidor Kernel 4

Comunicação entre processos Serviço de comunicação com duas chamadas de sistema - enviar e receber mensagens: send(dest, &mptr) - envia a mensagem cujo endereço édado em mptr para um processo identificado por dest, mantendo-se bloqueado enquanto a mensagem está sendo enviada receive(addr, &mptr) - recebe a mensagem de um endereço addr armazenando-a no endereço dado por mptr, mantendo-se bloqueado enquanto espera a mensagem Muitas variações dos procedimentos, assim como de seus parâmetros são possíveis 5 Endereçamento Para um cliente enviar uma mensagem para um servidor, ele precisa conhecer o seu endereço C 1 2 S 1: Requisição para 243.29 2: Resposta para 199.34 C 3 4 1 2 1: Broadcast 2: Eu estou aqui 3: Requisição... 4: Resposta... S S 3 1 C 4 2 NS Servidor de nome 1: Lookup 2: Resposta do servidor de nome 3: Requisição... 4: Resposta... 6

Endereçamento Métodos de endereçamento de processos: 1. Colocar máquina.número no código cliente Não transparente 2. Deixar que o processo escolha endereços e localizá-los por broadcast Gera carga extra na rede 3. Colocar nomes de servidores em ASCII nos clientes e procurá-los em tempo de processamento Precisa de um componente centralizado (servidor de nomes) 7 Primitiva bloqueante (síncrona) e não bloqueante (assíncrona) Cliente executando Cliente Bloqueado Cliente executando mensagem sendo enviada Cliente executando Cliente Bloqueado Cliente executando Mensagem copiada p/ buffer mensagem sendo enviada tempo 8

Primitiva bloqueante (síncrona) e não bloqueante (assíncrona) Primitivas de envio/recebimento de mensagens: 1. Envio bloqueante Processador fica ocioso durante a transmissão da mensagem 2. Envio não bloqueante com cópia Processador gasta tempo para fazer cópia 3. Envio não bloqueante com interrupção Torna a programação difícil 9 Primitiva bloqueante (síncrona) e não bloqueante (assíncrona) Critério distinto: Síncrona: transmissor fica bloqueado até que o receptor tenha recebido a mensagem (msg de reconhecimento) Receive bloqueante x não-bloqueante Receive condicional: testa se existe msg e retorna imediatamente Temporizadores: Pode-se definir um período até quando a primitiva ficará bloqueada. Quando este tempo atingido retorna-se um código de erro. 10

Primitivas não bufferizadas receive(addr,&mptr) - informa o kernel da máquina que o processo chamado está esperando por mensagens no endereço addr e preparado para receber mensagens enviada para aquele endereço quando a mensagem chega, o kernel copia a mensagem p/ um buffer e desbloqueia o processo este esquema funciona bem desde que o servidor chame receive antes do cliente chamar send Troca de Mensagem Não Bufferizada C S Endereço refere-se a um processo 11 Primitivas bufferizadas um processo interessado em receber mensagens solicita ao kernel que crie uma caixa de mensagens (mailbox) para ele uma chamada receive apenas remove uma mensagem do mailbox, ou bloqueia se não há nada presente assim, o kernel sabe o que fazer com mensagens que chegam e tem um local para colocá-las Troca de Mensagem Bufferizada C S Endereço refere-se a uma caixa de mensagens 12

Primitivas não bufferizadas e bufferizadas Primitivas de envio/recebimento de mensagens: 1. Não bufferizadas descartando mensagens não esperadas 2. Não bufferizadas com armazenamento temporário das mensagens não esperadas 3. Caixas postais 13 Primitivas confiáveis e não confiáveis o kernel da máquina que recebe envia um reconhecimento (acknowledgment) para o kernel da máquina que envia o reconhecimento vai de um kernel para outro requisição e resposta se tornam 4 mensagens, em decorrência dos dois reconhecimentos Client 2 4 1 3 Server 1: requisição (cliente p/ servidor) 2: ACK (kernel p/ kernel) 3: Resposta (servidor p/ cliente) 4: ACK (kernel p/ kernel) 14

Primitivas confiáveis e não confiáveis o cliente é bloqueado após enviar uma mensagem; o kernel do servidor não envia um reconhecimento, ao invés disso a própria resposta faz esse papel; se levar muito tempo, o kernel do cliente solicita novamente, salvaguardando a perda de mensagens. Client 1 2 3 Server 1: Requisição (cliente p/ servidor) 2: Resposta (servidor p/ cliente) 3: ACK (kernel p/ kernel) 15 Primitivas confiáveis e não confiáveis Primitivas de envio/recebimento de mensagens: 1. Não confiável 2. Requisição-confirmação-respostaconfirmação 3. Requisição-resposta-confirmação 16

Camadas do middleware Aplicações, serviços RMI e RPC Protocolo requisição resposta marshalling e representação externa de dados Camadas de middleware UDP e TCP 17 Sockets BSD Sockets: um conjunto de protocolos e APIs para comunicação entre processos em máquinas distintas e heterogêneas Suporta protocolos de comunicação entre processos em vários domínios: Domínio UNIX (usado por processos na mesma máquina) Domínio Internet (TCP/IP ou UDP/IP) (processos em máquinas distintas) Domínio Xerox Ns (não implementado em muitos sistemas) Domínio IPX 18

Sockets 19 Características TCP/IP e UDP/IP TCP/IP serviço com conexão (circuito-virtual) Connection-oriented - Circuito virtual Estabelecimento da ligação Transferência de Dados Terminação da ligação Seqüencialidade de dados garante que a ordem de emissão é a ordem de recepção Controle de erros: retransmite mensagens corrompida ou perdidos Controle de fluxo: controla os ritmos de transferência entre o emissor e o receptor Eliminação de duplicados Fronteiras nos dados: orientado ao byte (stream oriented) Bi-direcional 20

Características TCP/IP e UDP/IP UDP/IP - Serviço Datagrama Connectionless Datagramas Cada mensagem (datagrama) é transmitida independentemente das outras Fronteira nos dados: orientado à mensagem (message oriented) Permite broadcast e multicast 21 IP endpoint Endereço da aplicação = endereço da máquina na rede (endereço IP) + endereço do serviço na máquina (port) em português: porta ou porto Um IP endpoint é um par TCP/port ou UDP/port Os ports TCP e UDP são ports distintos 22

IP endpoint Número de port - Port number (16 bits) Gama de ports IP (TCP ou UDP)* Reservados: 1 1023 (well known ports) Registrados: 1024 49151 Dinâmicos ou privados: 49152 65535 Conexão completamente definida: { protocolo, endereço local, port local, endereço remoto, port remoto} * www.iana.org/assignments/port-numbers 23 Conversão de endereços IP DOTTEDASCII para formato de rede unsigned long inet_addr(char *ptr) Exemplo: serv_addr.sin_addr.s_addr=inet_addr( 10.64.11.101 ) Formato de rede para DOTTEDASCII char *inet_ntoa(struct in_addr inaddr) 24

Byte-order - heterogeneidade Big endian: IBM 370, Motorola 68000 Little endian: Intel x86, Dec Vax Formato de rede: big endian 25 Conversão de Byte-Order Formato de host para formato de rede u_long htonl(u_long hostlong) - host to network long u_short htons(u_short hostshort) - host to network short Formato de rede para formato de host u_long ntohl(u_long netlong) - net to host long u_short ntohs(u_short netshort) - net to host short Exemplo: serv_addr.sin_port = htons(500) Port do servidor: 500 26

Chamadas de sistema para ligação com TCP 27 Chamadas de sistema para ligação com UDP 28

Chamadas de sistema - socket Socket cria um socket com um determinado protocolo associado int socket(int dominio, int type, int protocolo) dominio: AF_UNIX - domínio dos protocolos inertnos UNIX; AF_INET - domínio dos protocolos Internet (TCP ou UDP) AF_IPX - domínio dos protocolos IPX AF_NS - domínio dos protocolos Xerox NS type: SOCK_STREAM - stream socket ou circuito virtual (TCP) SOCK_DGRAM - datagram socket (UDP) protocolo: 0 o sistema escolhe o protocolo adequado 29 Chamadas de sistema - bind bind registra um endereço para que possa receber mensagens int bind(int sockfd, struct sockaddr *myaddr, int addrlen) Especifica os elementos <local address> e <local port> da associação. Obrigatório numa ligação por UDP, facultativo num cliente TCP (em que é utilizado um port dinâmico) Sockets address template struct sockaddr { u_short sa_family; /* dominio AF_XXX */ char sa_data[14]; /* especifico do protocolo */ }; 30

Chamadas de sistema - bind Socket address domínio Internet struct sockaddr_in { short sin_family; /* AF_INET */ u_short sin_port; /* 16 bits port number formato de rede */ struct in_addr sin_addr; /* formato de rede */ char sin_zero[8]; /* não usado */ } struct in_addr { /* endereço host IP*/ u_long s_addr; /* 32 bits net id */ }; #include <netinet/in.h> 31 Chamadas de sistema - listen listen prepara o circuito virtual para aceitar N conexões int listen(int sockfd, int backlog) Backlog dimensão da fila de pedidos pendentes 32

Chamadas de sistema - accept accept abertura passiva por uma conexão int accept(int sockfd, struct sockaddr *PeerAddr, int *addrlen) Quando chegar um pedido de conexão cria e devolve um outro socket com as mesmas propriedades de sockfd. Se não houver pedidos de conexão pendentes, bloqueia o processo PeerAddr e addrlen - retornam o endereço do par que estabeleceu a conexão 33 Chamadas de sistema - connect connect abertura ativa de uma conexão int connect(int sockfd, struct sockaddr *RemoteAddr, int addrlen) Especifica os dois ou quatro últimos elementos da tupla de associação. No caso dos elementos locais não estarem já definidos assume-os como INADDR_ANY 34

Acesso a dados int send(int sockfd, char *buff, int nbytes, int flags) int recv(int sockfd, char *buff, int nbytes, int flags) int sento(int sockfd, char *buff, int nbytes, int flags, struct sockaddr *destino, int addrlen) int recvfrom(int sockfd, char *buff, int nbytes, int flags, struct sockaddr *origem, int *addrlen) Os três primeiros parâmetros são idênticos às chamadas de sistema read() e write() Flags: MSG_OOB - dados Out-Of-Band (send, receive) MSG_PEEK - retorna os dados sem os consumir (recv, recvfrom) MSG_DONTROUTE - bypass routing (send, sendto) Retornam o número de bytes lidos ou escritos Sendto / recvfrom recebe / devolve o endereço do destinatário / remetente 35 Chamadas de sistema - close int close(int sockfd) Fecha o socket e se houver dados pendentes ou confirmações (acknowledges) pendentes o sistema garante que são tratados 36

Biblioteca socket, bind, connect, accept, sendto, recvfrom, send, recv #include <sys/types.h> #include <sys/sockets.h> 37 Exercícios Sistemas operacionais modernos Andrew S. TANENBAUM Prentice-Hall, 1995 Capítulo 10 Exercícios 1-6 (pág. 314) 38

Bibliografia Sistemas operacionais modernos Andrew S. TANENBAUM Prentice-Hall, 1995 Seção 10.2 pág. 275-285 39