Comunicação entre Processos · Comunicação entre Processos-Sistemas Operacionais fornecem...

35
Comunicação entre Processos

Transcript of Comunicação entre Processos · Comunicação entre Processos-Sistemas Operacionais fornecem...

Page 1: 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

Comunicação entre Processos

Page 2: 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

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.

Page 3: 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

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.

Page 4: 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

Unicast vs. Multicast

P 2

P 1 P 1

P 2 P 3 P 4. . .

u n i c a s t m u l t i c a s t

mm m m

Page 5: 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

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

Comunicação entre Processos em computação distribuída

Page 6: 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

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.

Page 7: 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

IPC em HTTP

C 1 C 2

S 3 S 4

C 4

W e b s e r v e r

W e b b r o w s 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

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 nS 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 tC 1 : m a k e c o n n e c t i o nC 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

S 2

C 3

S 1

H T T Pr e q u e s t

H T T Pr e s p o n s e

Page 8: 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

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.

Page 9: 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

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.

Page 10: 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

send e receive Síncrono

p r o c e s s 1r u n n i n g o n h o s t 1

b l o c k i n g s e n d s t a r t s

b l o c k i n g s e n d r e t u r n s

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 r e c e i v e e n d s

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 R e c e i v e

a n o p e r a t i o n

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 dp r o v i d e d b y t h e I P C f a c i l i t y

p r o c e s s 2r u n n i n g o n h o s t 2

Page 11: 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

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

b l o c k i n g r e c e i v e r e t u r n s

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

n o n b l o c k i n g s e n d

o p e r a t i o n

Page 12: 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

send síncrono e receive assíncrono - 1

P r o c e s s 1

P r o c e s s 2

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

b l o c k i n g s e n d i s s u e d

S c e n a r i o A

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 tp r o v i d e d b y t h e I P C f a c i l i t y

Page 13: 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

send síncrono e receive assíncrono - 2

i n d e f i n i t eb l o c k i n g

P r o c e s s 1

P r o c e s s 2

n o n b l o c k i n g r e c e i v e i s s u e da n d r e t u r n e d i m m e d i a t e l y

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

b l o c k i n g s e n d i s s u e d

S c e n a r i o B

P r o c e s s 1

P r o c e s s 2

Page 14: 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

send síncrono e receive assíncrono - 3

P r o c e s s 1

P r o c e s s 2

n o n b l o c k i n g r e c e i v e i s s u e da n d r e t u r n e d i m m e d i a t e l y

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

b l o c k i n g s e n d i s s u e d

S c e n a r i o C

p r o c e s s i s n o t i f i e do f t h e a r r i v a l o fd a t a

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 tp r o v i d e d b y t h e I P C f a c i l i t y

Page 15: 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

send assíncrono e receive assíncrono

P r o c e s s 1

P r o c e s s 2

n o n b l o c k i n g r e c e i v e i s s u e da n d r e t u r n e d i m m e d i a t e l y

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

b l o c k i n g s e n d i s s u e d

S c e n a r i o C

p r o c e s s i s n o t i f i e do f t h e a r r i v a l o fd a t a

Page 16: 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

diagrama de eventos

P r o c e s s AP r o c e s s B

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

E v e n t d i a g r a m f o r a p r o t o c o l

r e q u e s t 1

r e s p o n s e 1

r e s p o n s e 2

r e q u e s t 2

t i m e

Page 17: 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

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.

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

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 1 b l o c k e d p e n d i n g d a t af r o m p r o c e s s 2 .

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 af r o m p r o c e s s 1 .

P r o c e s s 1 P r o c e s s 2

Page 18: 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

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

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

m a i n t h r e a d c o n t i n u e s w i t ho t h e r p r o c e s s i n g

Page 19: 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

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

Page 20: 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

Bloqueio Indefinido devido a impasse (deadlock)

" 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 ;

" 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 1 b l o c k e d p e n d i n g d a t af r o m p r o c e s s 2 .

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 af r o m p r o c e s s 1 .

P r o c e s s 1 P r o c e s s 2

p r o c e s se x e c u t i n g

p r o c e s sb l o c k e d

a n o p e r a t i o n

Page 21: 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

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)

Page 22: 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

Protocolos de Codificação dos Dados

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

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

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 sl e v e l o f a b s t r a c t i o n

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 )

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 )

Page 23: 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

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.

Page 24: 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

Amostra de um arquivo XMLhttp://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>[email protected]</to> <from>[email protected]</from>

<subject>XML Is Really Cool</subject> <text> How many ways is XML cool? Let me count the

ways... </text>

</message>

Page 25: 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

Marshalling

" T h i s i s a t e s t . "

" T h i s i s a t e s t . "

1 . 2 7 . 3 - 1 . 5

1 . 2

7 . 3

- 1 . 5

1 1 0 0 1 1 . . . 1 0 0 0 0 1 0 0 . . .

m a r s h a l l i n g

u n 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 s2 . 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 . 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 n2 . r e b u i l d d a t a s t r u c t u r e s .

h o s t A

h o s t B

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 ai 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 .

Page 26: 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

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).

Page 27: 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

Diagrama de Evento para uma sessão de protocolo

P r o c e s s 1P r o c e s s 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

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

E v e n t d i a g r a m f o r a p r o t o c o l

r e q u e s t 1

r e s p o n s e 1

r e s p o n s e 2

r e q u e s t 2

t i m e

Page 28: 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

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 s p o n s e

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 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 .

Page 29: 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

Diagrama de Sequência

P r o c e s s A P r o c e s s B

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 q u e s t 1

r e s p o n s e 1

r e q u e s t 2

r e s p o n s e 2

Page 30: 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

Diagrama de Sequência sessão HTTP

P r o c e s s A P r o c e s s B

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 q u e s t 1

r e s p o n s e 1

r e q u e s t 2

r e s p o n s e 2

Page 31: 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

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.

Page 32: 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

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.

Page 33: 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

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 s p o n s e

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 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 .

Page 34: 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

Sessão HTTP

Script started on Tue Oct 10 21:49:28 20009:49pm telnet www.csc.calpoly.edu 80Trying 129.65.241.20...Connected to tiedye2-srv.csc.calpoly.edu.Escape character is '̂ ]'.GET /~mliu/ HTTP/1.0 HTTP Request

HTTP/1.1 200 OK HTTP response status lineDate: Wed, 11 Oct 2000 04:51:18 GMT HTTP response headerServer: Apache/1.3.9 (Unix) ApacheJServ/1.0Last-Modified: Tue, 10 Oct 2000 16:51:54 GMTETag: "1dd1e-e27-39e3492a"Accept-Ranges: bytesContent-Length: 3623Connection: closeContent-Type: text/html

<HTML> document content<HEAD><TITLE> Mei-Ling L. Liu's Home Page</TITLE></HEAD><BODY bgcolor=#ffffff> …

Page 35: 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

IPC: paradigmas e implementações

Paradigmas de IPC em diferentes níveis de abstração, evolução com correspondentes implementações.

r e m o t e p r o c e d u r e / m e t h o d

s o c k e t A P I

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

U n i x s o c k e t A P I , W i n s o c k

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

l e v e l o fa 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