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

Post on 31-Jul-2020

5 views 0 download

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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)

" 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

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

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 )

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

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

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

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 .

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

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

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

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

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