Comunicação entre Processos · Comunicação entre Processos-Sistemas Operacionais fornecem...
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>[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>
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