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