Comunicação entre Processos



Documentos relacionados
Internet e protocolos web. A Internet é uma rede descentralizada de recursos computacionais. Topologia tem de fornecer caminhos alternativos

UNIVERSIDADE. Sistemas Distribuídos

Sistemas Distribuídos. Coulouris Capítulo 4

Sistemas distribuídos:comunicação

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

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


Redes de Computadores e a Internet

Programação para Internet I. 2. O protocolo HTTP. Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

Wireshark. Captura de Protocolos da camada de aplicação. Maicon de Vargas Pereira

Tópicos em Sistemas Distribuídos. Modelos de Comunicação

Permite o acesso remoto a um computador;

Sistemas Distribuídos

Programação para Internet Flávio de Oliveira Silva, M.Sc.

FTP - Protocolo. O protocolo FTP é o serviço padrão da Internet para a transferência de arquivos entre computadores.

SISTEMAS DISTRIBUÍDOS

Sistemas Distribuídos 59. Sistemas Distribuídos 61. "Receive não-bloqueante:

A Camada de Aplicação

Protocolo. O que é um protocolo? Humano: que horas são? eu tenho uma pergunta

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

Web. Até a década de 1990, a Internet era utilizada. por pesquisadores, acadêmicos e universitários, para troca de arquivos e para correio eletrônico.

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

XHTML 1.0 DTDs e Validação

Rede de Computadores (REC)

INTRODUÇÃO A REDES DE COMPUTADORES. Alan Nakai

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

Universidade Federal do Espírito Santo CCA UFES. Centro de Ciências Agrárias CCA UFES Departamento de Computação. Programação WEB

Protocolos de Internet (família TCP/IP e WWW) Primeiro Técnico. Prof. Cesar

Capítulo 8. Sistemas com Múltiplos Processadores. 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos

UFG - Instituto de Informática

UNIVERSIDADE. Sistemas Distribuídos

3. Comunicação em Sistemas Distribuídos

Sistemas Distribuídos

REDES DE COMPUTADORES

Aulas Práticas. Implementação de um Proxy HTTP. O que é um proxy?

Arquitetura de Computadores II

FTP Protocolo de Transferência de Arquivos

Professor: Gládston Duarte

Introdução ao PHP. Prof. Késsia Marchi

UM NOVO CONCEITO EM AUTOMAÇÃO. Série Ponto

Sistemas Distribuídos

HyperText Transfer Protocol (HTTP)

Redes de Computadores

AULA 03 MODELO OSI/ISO. Eduardo Camargo de Siqueira REDES DE COMPUTADORES Engenharia de Computação

TECNOLOGIA WEB. Principais Protocolos na Internet Aula 2. Profa. Rosemary Melo

Kassius Vargas Prestes

Programação Web Prof. Wladimir

Camada de Transporte TCP/IP e Aplicação

Redes de Computadores. Protocolos de comunicação: TCP, UDP

Sistemas Distribuídos Comunicação. Edeyson Andrade Gomes

Tipos de Servidores. Servidores com estado

APLICAÇÃO REDE APLICAÇÃO APRESENTAÇÃO SESSÃO TRANSPORTE REDE LINK DE DADOS FÍSICA 1/5 PROTOCOLOS DE REDE

Prof. Luiz Fernando Bittencourt MC714. Sistemas Distribuídos 2 semestre, 2013

Internet - A rede Mundial

Redes de Computadores

Distributed Systems Principles and Paradigms

Universidade Federal de Mato Grosso

Conceitos de Ajax Exemplos de uso do Ajax no braço, muitos exemplos, muito código (HTML, CSS, JavaScript, PHP, XML, JSON)

Sistemas Distribuídos e Redes de Sensores

SMTP, POP, IMAP, DHCP e SNMP. Professor Leonardo Larback

1.264 Lição 11. Fundamentos da Web

Arquitetura de Redes: Camadas de Protocolos (Parte I) Prof. Eduardo

Um pouco sobre Pacotes e sobre os protocolos de Transporte

USO GERAL DOS PROTOCOLOS SMTP, FTP, TCP, UDP E IP

Redes de Computadores

Sistemas Distribuídos. Aleardo Manacero Jr.

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

Capítulo 11 - Camada de Transporte TCP/IP e de Aplicação. Associação dos Instrutores NetAcademy - Julho de Página

Construção de Sites. Introdução ao Universo Web. Prof. Nícolas Trigo

5 Entrada e Saída de Dados:

Considerações no Projeto de Sistemas Cliente/Servidor

Programando em PHP. Conceitos Básicos

Universidade Federal do Rio Grande do Norte

Camada de Aplicação. DNS Domain Name System. Redes de Computadores Prof. Leandro C. Pykosz

Sincronização de Processos (5) Troca de Mensagens

Desenvolvimento WEB II. Professora: Kelly de Paula Cunha

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas)

Definição do Trabalho da Disciplina. Este documento é muito importante: LEIAM ATÉ O FINAL!

Introdução ao Modelos de Duas Camadas Cliente Servidor

Sistemas Distribuídos

10/07/2013. Camadas. Principais Aplicações da Internet. Camada de Aplicação. World Wide Web. World Wide Web NOÇÕES DE REDE: CAMADA DE APLICAÇÃO

Protocolos Hierárquicos

Redes de Computadores 1 o Exame

Web Technologies. Tópicos da apresentação

SISTEMAS DISTRIBUÍDOS

O espaço de nomes DNS Registros de recursos de domínio Servidores de nome

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

Princípios de Sistemas Distribuídos. Tecnologias utilizadas em sistemas distribuídos Aula 5

REDES DE COMPUTADORES. Prof. Evandro Cantú

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

Redes de Computadores I Internet - Conceitos

08/04/2013. Agenda. O Sistema CACHÉ. O Sistema CACHÉ. O Sistema CACHÉ. O Sistema CACHÉ

CAPÍTULO 2. Este capítulo tratará :

Java Enterprise Edition. by Antonio Rodrigues Carvalho Neto

SIMULADOR DE ROTEAMENTO DE PACOTES (V. 3 20/05/2010)

Transcrição:

Comunicação entre Processos

Comunicação entre Processos - Sistemas Operacionais fornecem mecanismos para comunicação entre processos (IPC), tal como filas de mensagens, semáfaros e memória compartilhada. - Sistemas de computação distribuída utilizam estes mecanismos para fornecer uma interface de programação da aplicação (API) que permita a comunicação entre processos ser programada em alto nível de abstração. - Computação distribuída requer troca de informação entre processos independentes.

IPC unicast and multicast Em computação distribuída, dois ou mais processos envolvidos em IPC através de um protocolo que ambos comcordam. Um processo pode ser o enviante em alguns pontos durante o protocolo um recebedor durante outros. Quando a comunicação é de um processo para outro o IPC é chamado de unicast. Quando a comunicação é de um processo para um grupo de processos, o IPC é chamado de multicast.

Unicast vs. Multicast P 2 P 2 P... 3 P 4 m m m m P 1 P 1 u n i c a s t m u l t i c a s t

Comunicação entre Processos em computação distribuída P r o c e s s 1 P r o c e s s 2 d a t a s e n d e r r e c e i v e r

Operações básicas fornecidas em uma API para comunicação entre processos Receive ( [sender], buffer_da_mensagem) Connect (endereço sender, endereço receiver), para comunicação orientada a conexão Send ( [receiver], mensagem) Disconnect (identificador da conexão), para comunicação orientada a conexão.

IPC em HTTP W e b s e r v e r a p r o c e s s a n o p e r a t i o n d a t a f l o w S 1 S 2 S 3 S 4 H T T P r e q u e s t H T T P r e s p o n s e C 1 C 2 C 3 C 4 o p e r a t i o n s : S 1 : a c c e p t c o n n e c t i o n S 2 : r e c e i v e ( r e q u e s t ) S 3 : s e n d ( r e s p o n s e ) S 3 : d i s c o n n e c t C 1 : m a k e c o n n e c t i o n C 2 : s e n d ( r e q u e s t ) C 3 : r e c e i v e ( r e s p o n s e ) C 4 : d i s c o n n e c t W e b b r o w s e r

Sincronização de Evento Comunicação entre processos requer que 2 processo sincronizem suas operações: um lado envia e o outro recebe até que todos os dados tenha sido enviados e recebidos. Ideal, a operação send inicia antes da operação receive começar. Na prática, a sincronização requer suporte do sistema.

Comunicação Síncrona X Assíncrona As operações IPC podem fornecer a sincronização necessária usando bloqueamento. Uma operação bloqueante emitida por um processo irá bloquear o processamento do processo até a operação ser completada. Alternativamente, operações IPC podem ser assíncronas ou não bloqueantes. Uma operação assíncrona emitida por um processo não irá bloquear o processamento do processo. Ao contrário, o processo esta livre para proceder seu processamento e pode opcionalmente ser notificado pelo sistema quando a operação é completada.

send e receive Síncrono p r o c e s s 1 r u n n i n g o n h o s t 1 p r o c e s s 2 r u n n i n g o n h o s t 2 b l o c k i n g r e c e i v e s t a r t s b l o c k i n g s e n d s t a r t s a n o p e r a t i o n e x e c u t i o n f l o w b l o c k i n g s e n d r e t u r n s a c k n o w l e d g e m e n t o f d a t a r e c e i v e d p r o v i d e d b y t h e I P C f a c i l i t y b l o c k i n g r e c e i v e e n d s s u s p e n d e d p e r i o d S y n c h r o n o u s S e n d a n d R e c e i v e

send Assíncrono e receive Síncrono P r o c e s s 1 P r o c e s s 2 b l o c k i n g r e c e i v e s t a r t s n o n b l o c k i n g s e n d b l o c k i n g r e c e i v e r e t u r n s o p e r a t i o n e x e c u t i o n f l o w s u s p e n d e d p e r i o d A s y n c h r o n o u s S e n d a n d S y n c h r o n o u s R e c e i v e

send síncrono e receive assíncrono - 1 P r o c e s s 1 P r o c e s s 2 b l o c k i n g s e n d i s s u e d t r a n s p a r e n t a c k n o w l e d g e m e n t p r o v i d e d b y t h e I P C f a c i l i t y n o n b l o c k i n g r e c e i v e i s s u e d e x e c u t i o n f l o w s u s p e n d e d p e r i o d S y n c h r o n o u s S e n d a n d A s y n c h r o n o u s R e c e i v e S c e n a r i o A

send síncrono e receive assíncrono - 2 P r o c e s s 1 P r o c e s s 2 b l o c k i n g s e n d i s s u e d n o n b l o c k i n g r e c e i v e i s s u e d a n d r e t u r n e d i m m e d i a t e l y i n d e f i n i t e b l o c k i n g e x e c u t i o n f l o w s u s p e n d e d p e r i o d P r o c e s s 1 P r o c e s s 2 S y n c h r o n o u s S e n d a n d A s y n c h r o n o u s R e c e i v e S c e n a r i o B

send síncrono e receive assíncrono - 3 P r o c e s s 1 P r o c e s s 2 b l o c k i n g s e n d i s s u e d t r a n s p a r e n t a c k n o w l e d g e m e n t p r o v i d e d b y t h e I P C f a c i l i t y n o n b l o c k i n g r e c e i v e i s s u e d a n d r e t u r n e d i m m e d i a t e l y p r o c e s s i s n o t i f i e d o f t h e a r r i v a l o f d a t a e x e c u t i o n f l o w s u s p e n d e d p e r i o d S y n c h r o n o u s S e n d a n d A s y n c h r o n o u s R e c e i v e S c e n a r i o C

send assíncrono e receive assíncrono P r o c e s s 1 P r o c e s s 2 b l o c k i n g s e n d i s s u e d n o n b l o c k i n g r e c e i v e i s s u e d a n d r e t u r n e d i m m e d i a t e l y p r o c e s s i s n o t i f i e d o f t h e a r r i v a l o f d a t a e x e c u t i o n f l o w s u s p e n d e d p e r i o d A s y n c h r o n o u s S e n d a n d A s y n c h r o n o u s R e c e i v e S c e n a r i o C

diagrama de eventos P r o c e s s A P r o c e s s B r e q u e s t 1 t i m e r e s p o n s e 1 i n t e r p r o c e s s c o m m u n i c a t i o n e x e c u t i o n f l o w p r o c e s s b l o c k e d r e q u e s t 2 r e s p o n s e 2 E v e n t d i a g r a m f o r a p r o t o c o l

Bloqueios, impasses e timeouts Operações bloqueantes emitidas em sequência errada pode causar impasses. Impasses devem ser evitados. Alternativamente, timeout pode ser usado para detectar deadlocks. P r o c e s s 1 P r o c e s s 2 r e c e i v e f r o m p r o c e s s 2 i s s u e d p r o c e s s 1 b l o c k e d p e n d i n g d a t a f r o m p r o c e s s 2. r e c e i v e d f r o m p r o c e s s 1 i s s u e d p r o c e s s 2 b l o c k e d p e n d i n g d a t a f r o m p r o c e s s 1.

Usando threads para IPC assíncrono Na utilização de uma API IPC, é importante saber quando as operações são síncronas ou assíncronas. Se apenas operações bloqueantes são fornecidas para send e/ou receive, então é responsabilidade do programador utilizar processos ou threads se operações assíncronas são desejadas. p r o c e s s m a i n t h r e a d n e w t h r e a d i s s u e s a b l o c k i n g I P C o p e r a t i o n m a i n t h r e a d c o n t i n u e s w i t h o t h e r p r o c e s s i n g t h r e a d i s b l o c k e d t h r e a d i s u n b l o c k e d a f t e r t h e o p e r a t i o n i s f u l f i l l e d

Impasses e Timeouts Operações connect e receive podem resultar em bloqueio indefinido Exemplo, uma requisição bloqueante connect pode resultar no bloqueio do processo requisitante que será suspenso indefinidamente se a conexão não for completada ou não puder ser completada como resultado de uma falaha na rede. Geralmente não é aceitável para um processo requisitante esperar indefinidamente. Bloqueio indefinido pode ser evitado usando timeout. Bloqueio indefinido pode também ser causado por um impasse

Bloqueio Indefinido devido a impasse (deadlock) P r o c e s s 1 P r o c e s s 2 " r e c e i v e f r o m p r o c e s s 2 " i s s u e d ; p r o c e s s 1 b l o c k e d p e n d i n g d a t a f r o m p r o c e s s 2. a n o p e r a t i o n p r o c e s s e x e c u t i n g p r o c e s s b l o c k e d " r e c e i v e f r o m p r o c e s s 1 " i s s u e d ; p r o c e s s 2 b l o c k e d p e n d i n g d a t a f r o m p r o c e s s 1.

Representação de dados Programas -> estruturas de dados, info em msg é seqüencial Estruturas de dados devem ser sequencializadas antes da transmissão e reconstruídas na chegada. Info em msgs podem ser tipos diferentes de valores, são armazenados de formas diferentes. Troca de dados envolve conversão para formato comum antes da trans. e conversão local na recepção. Data marshalling é o processo de (i) sequencializar uma estrutura de dados e (ii) converter os dados para uma representação externa. Alguns esquemas de representação de dados bem conhecidos são: Sun XDR ASN.1 (Abstract Syntax Notation) XML (Extensible Markup Language)

Protocolos de Codificação dos Dados l e v e l o f a b s t r a c t i o n d a t a e n c o d i n g s c h e m e s S a m p l e S t a n d a r d s a p p l i c a t i o n s p e c i f i c d a t a e n c o d i n g l a n g u a g e X M L : ( E x t e n s i b l e M a r k u p L a n g u a g e ) g e n e r a l d a t a e n c o d i n g l a n g u a g e n e t w o r k d a t a e n c o d i n g s t a n d a r d A S N. 1 ( A b s t r a c t S y n t a x N o t a t i o n ) S u n X D R ( E x t e r n a l D a t a R e p r e s e n t a t i o n )

Representação Externa (XDR) 5 Smit h--- 6 Lond on-- 1934 msg composta por seqüência de objetos de 4 bytes inteiro 1 objeto, string de 4 chars 1 objeto arrays, structures, strings: seqüências de bytes com tam. especificado. Reduz carga computacional. Gasta banda passante.

Amostra de um arquivo XML http://java.sun.com/xml/docs/tutorial/overview/1_xml.html#intro XML linguagem de marcação, tornando padrão troca de dados na Web. XML sintaxe semelhante a HTML. Diferente de HTML, tags XML dizem o significado dos dados, ao contrário de como mostra-los. Exemplo: <message> <to>you@youraddress.com</to> <from>me@myaddress.com</from> <subject>xml Is Really Cool</subject> <text> How many ways is XML cool? Let me count the ways... </text> </message>

Marshalling " T h i s i s a t e s t. " 1. 2 7. 3-1. 5 h o s t A m a r s h a l l i n g 1. f l a t t e n i n g o f s t r u c t u r e d d a t a i t e m s 2. c o n v e r t i n g d a t a t o e x t e r n a l ( n e t w o r k ) r e p r e s e n t a t i o n 1 1 0 0 1 1... 1 0 0 0 0 1 0 0... " T h i s i s a t e s t. " u n m a r s h a l l i n g - 1. 5 7. 3 1. 2 1. c o n v e r t d a t a t o i n t e r n a l r e p r e s e n t a t i o n 2. r e b u i l d d a t a s t r u c t u r e s. E x t e r n a l t o i n t e r n a l r e p r e s e n t a t i o n a n d v i c e v e r s a i s n o t r e q u i r e d - i f t h e t w o s i d e s a r e o f t h e s a m e h o s t t y p e ; - i f t h e t w o s i d e s n e g o t i a t e s a t c o n n e c t i o n. h o s t B

protocolos baseados em texto Marshalling é mais simples quando os dados trocados são na forma de texto. Troca de dados em texto tem vantagem adicional que os dados podem ser facilmente analizados em um programa e mostrados. Desta forma, é prática popular protocolos trocar requisições e respostas na forma de strings de caracteres. Tais protocolos são chamados de baseados em texto. Muitos protocolos são baseados em texto: FTP (File Transfer Protocol), HTTP, and SMTP (Simple Mail Transfer Protocol).

Diagrama de Evento para uma sessão de protocolo P r o c e s s 1 P r o c e s s 2 r e q u e s t 1 t i m e r e s p o n s e 1 i n t e r p r o c e s s c o m m u n i c a t i o n e x e c u t i o n f l o w p r o c e s s b l o c k e d r e q u e s t 2 r e s p o n s e 2 E v e n t d i a g r a m f o r a p r o t o c o l

Diagrama de Evento sessão HTTP w e b s e r v e r w e b b r o w s e r r e q u e s t r e q u e s t i s a m e s s a g e i n 3 p a r t s : - < c o m m a n d > < d o c u m e n t a d d d r e s s > < H T T P v e r s i o n > - a n o p t i o n a l h e a d e r - o p t i o n a l d a t a f o r C G I d a t a u s i n g p o s t m e t h o d r e s p o n s e r e s p o n s e i s a m e s s a g e c o n s i s t i n g o f 3 p a r t s : - a s t a t u s l i n e o f t h e f o r m a t < p r o t o c o l > < s t a t u s c o d e > < d e s c r i p t i o n > - h e a d e r i n f o r m a t i o n, w h i c h m a y s p a n s e v e r a l l i n e s ; - t h e d o c u m e n t i t s e l f.

Diagrama de Sequência P r o c e s s A P r o c e s s B r e q u e s t 1 r e s p o n s e 1 r e q u e s t 2 i n t e r p r o c e s s c o m m u n i c a t i o n r e s p o n s e 2

Diagrama de Sequência sessão HTTP P r o c e s s A P r o c e s s B r e q u e s t 1 r e s p o n s e 1 r e q u e s t 2 i n t e r p r o c e s s c o m m u n i c a t i o n r e s p o n s e 2

Protocolo Em uma aplicação distribuída, dois processos realizam comunicação entre processos com uma concordância mútua em um protocolo. A especificação de um protocolo deve incluir (i) a sequência de dados trocados, que pode ser descrita usando um diagrama de eventos no tempo. (ii) a especificação do formato dos dados trocados a cada passo.

HTTP: uma amostra de protocolo O Hypertext Transfer Protocol é um protocolo para um processo (browser) obter um documento de um processo servidor web. É um protocolo requisição/resposta: um browser envia uma requisição para um processo servidor web, que responde com uma resposta.

Protocolo HTTP w e b s e r v e r w e b b r o w s e r r e q u e s t r e q u e s t i s a m e s s a g e i n 3 p a r t s : - < c o m m a n d > < d o c u m e n t a d d d r e s s > < H T T P v e r s i o n > - a n o p t i o n a l h e a d e r - o p t i o n a l d a t a f o r C G I d a t a u s i n g p o s t m e t h o d r e s p o n s e r e s p o n s e i s a m e s s a g e c o n s i s t i n g o f 3 p a r t s : - a s t a t u s l i n e o f t h e f o r m a t < p r o t o c o l > < s t a t u s c o d e > < d e s c r i p t i o n > - h e a d e r i n f o r m a t i o n, w h i c h m a y s p a n s e v e r a l l i n e s ; - t h e d o c u m e n t i t s e l f. W e w i l l e x p l o r e H T T P i n d e t a i l s l a t e r t h i s q u a r t e r.

Sessão HTTP Script started on Tue Oct 10 21:49:28 2000 9:49pm telnet www.csc.calpoly.edu 80 Trying 129.65.241.20... Connected to tiedye2- srv.csc.calpoly.edu. Escape character is '^]'. GET /~mliu/ HTTP/1.0 HTTP/1.1 200 OK Date: Wed, 11 Oct 2000 04:51:18 GMT Server: Apache/1.3.9 (Unix) ApacheJServ/1.0 Last-Modified: Tue, 10 Oct 2000 16:51:54 GMT ETag: "1dd1e- e27-39e3492a" Accept- Ranges: bytes Content- Length: 3623 Connection: close Content- Type: text/html <HTML> <HEAD> <TITLE> Mei- Ling L. Liu's Home Page </TITLE> </HEAD> <BODY bgcolor=#ffffff> HTTP Request HTTP response status line HTTP response header document content

IPC: paradigmas e implementações Paradigmas de IPC em diferentes níveis de abstração, evolução com correspondentes implementações. l e v e l o f a b s t r a c t i o n I P C p a r a d i g m s E x a m p l e I P C I m p l e m e n t a t i o n s r e m o t e p r o c e d u r e / m e t h o d R e m o t e P r o c e d u r e C a l l ( R P C ), J a v a R M I s o c k e t A P I U n i x s o c k e t A P I, W i n s o c k d a t a t r a n s m i s s i o n s e r i a l / p a r a l l e l c o m m u n i c a t i o n