Date post: | 09-Apr-2018 |
Category: |
Documents |
Upload: | tiago-caetano |
View: | 220 times |
Download: | 0 times |
of 44
8/8/2019 Ad Cap3 Prog Comunicacao
1/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011 1
Comunicao entre Processos
Licenciatura em Engenharia InformticaAplicaes Distribudas
3 Ano 5 SemestreAno lectivo 2010-2011
8/8/2019 Ad Cap3 Prog Comunicacao
2/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Resumo
Comunicao entre Processos Mecanismos de Comunicao entre Processos Passagem mensagens:
Pipes, FIFOs Sockets
Representao externa de Dados e Marshalling
8/8/2019 Ad Cap3 Prog Comunicacao
3/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Comunicao entre Processos
O modelo processo um modo til para isolarprogramas em execuo: Separar recursos, estado, etc Simplificao atravs da escrita de programas simples
Mas, ... existem aplicaes que precisam que osprocessos sejam capazes de comunicar e desincronizar entre eles:
No mesmo espao de endereamento: Um simples pedido deutilizador pode resultar na execuo de vrios processos no sistemaoperativo, onde normalmente estes processos necessitam decomunicar entre si
Em espaos de endereamento diferentes: Um pedido deconsulta a uma base de dados pode resultar no pedido remoto deconsulta sobre um processo remoto que gere o acesso base dedados remota (em mquinas remotas).
8/8/2019 Ad Cap3 Prog Comunicacao
4/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Comunicao entre Processos
Espao deendereamento
doSistema Operativo
Processo A Processo B
Espao deendereamentoPrivado
Espao deendereamento
Privado
Ilustrao Processos no mesmo espao de Endereamento
Normalmente, nenhum processo pode escrever noespao de endereamento de outro processo
8/8/2019 Ad Cap3 Prog Comunicacao
5/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Espao de endereamentodo Sistema Operativo (A)
Espao de endereamentodo Sistema Operativo (B)
Comunicao entre Processos
Espao deendereamento
Privado
Espao deendereamento
Privado
Ilustrao Processos em espaos de Endereamento diferentes
8/8/2019 Ad Cap3 Prog Comunicacao
6/44
8/8/2019 Ad Cap3 Prog Comunicacao
7/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Comunicao entre Processos
Fundamentalmente, existem dois tipos de solues,fornecidas pelos SO:
1. Suporte de alguma forma de partilha entre espaos deendereamento:
Memria partilhada
2. Utilizao de mecanismos explcitos para transporte dedados entre o espao de endereamento de um processoe o espao de endereamento do outro processo:
Passagem de Ficheiros, passagem mensagens, chamadas deprocedimentos remotos, invocao remota de mtodos, etc
Nota: Cada mecanismo IPC tem as suas vantagens e limitaes,podendo existir programas que utilizem vrios mecanismosdisponveis.
8/8/2019 Ad Cap3 Prog Comunicacao
8/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Memria Partilhada
Mecanismo pelo qual os processos podem trocar dados mais rapidamente Processos distintos partilham uma zona de memria comum
Fisica ou virtual (normalmente em disco) Comunicaes atravs de via normais reads/writes Pode ser necessrios mecanismos de sincronismo
E.g., baseados em trincos
write variable xmain () {.x = 10.
..}
.
.
.print(x);.
..
read variable x
x: 10
8/8/2019 Ad Cap3 Prog Comunicacao
9/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
IPC atravs do Sistema de Ficheiros
Mais lento que o mecanismo de memria partilhada Processo emissor escreve um ficheiro Processo receptor l o ficheiro Quando pode o receptor ler o ficheiro?
Utilizao frequente de trincos (locks)
Processo A Processo BDados
8/8/2019 Ad Cap3 Prog Comunicacao
10/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Passagem de Mensagens
O emissor formata os dados em mensagens O SO envia a mensagem para o buffer do receptor O receptor l a mensagem
Processo A Processo B
Dados de Aenviados para B
OS
Bufferdo receptor
8/8/2019 Ad Cap3 Prog Comunicacao
11/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Chamadas de Procedimentos(Remote Procedure Calls)
Mtodo que permite a chamada de procedimentos sobre outrosespaos de endereamento Usa uma interface remota idntica interface local Os dados so passados como parmetros Geralmente, a chamada de um RPC bloqueia at chegada dos
resultados da execuo do RPC
11Processo A Processo B
Dados como parmet rosmain () {
.rpc();.
..}
.
.
.server();
..
.Dados comovalores de retorno
8/8/2019 Ad Cap3 Prog Comunicacao
12/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Invocao Remota de Mtodos(Remote Invocation Method)
Semelhante aos RPCs Mtodo que permite a invocao de mtodos sobre
objectos em execuo numa mquina virtual remota
12
cliente A Objecto Remoto
Dados como parametrosC=Objecto.metodo(A,B)
metodo(Obj1 a,Obj2b) {
//Implementao domtodo...}
Dados comovalores de retorno
8/8/2019 Ad Cap3 Prog Comunicacao
13/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Passagem de mensagens o paradigma base para as aplicaesdistribudas Um processo envia uma mensagem representando um pedido A messagem entregue no receptor, o qual processa o pedido, e
devolve a resposta numa mensagem. Eventualmente, a resposta pode disparar um pedido adicional,... Exemplos de mecanismos IPC baseados neste paradigma:
Na mesma mquina: Pipes, FIFOS, message queues Entre mquinas: Sockets
Process AProcess B
a message
Message passing
Passagem de Mensagens (1)
8/8/2019 Ad Cap3 Prog Comunicacao
14/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
As mensagens so, portanto, um dos blocos bsicosconstituintes de uma comunicao inter-processos
Uma mensagem um pedao de informao que trocado entre processos
Passagem de Mensagens (2)
11 2.4 1 100 3.5 1002MsgID p1 p2 p3 p4 p5
float a=2.4int b=1long c=100, etc
ProcessoEmissor Processo
Receptor
8/8/2019 Ad Cap3 Prog Comunicacao
15/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-201115
As mensagens consistem num: Cabealho
Tipo da mensagem ID da fonte e destino
Comprimentos damensagem Informao de controlo
Corpo
Contedo (dados)
Passagem de Mensagens (3)
8/8/2019 Ad Cap3 Prog Comunicacao
16/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
As operaes bsicas para suporte da passagem de mensagensso:
Send(message) Receive(message) .
Com esta abstraco, os processos em comunicao realizamtrocas de dados (I/O-input/output) de forma semelhante escrita eleitura de um ficheiro.
Estas operaes I/O encapsulam os detalhes das comunicaesao nvel do sistema operativo.
Passagem de Mensagens (4)
8/8/2019 Ad Cap3 Prog Comunicacao
17/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Problema 1: Os dados, em programas, sorepresentados como estruturas de dados, enquanto quea informao em mensagens sequencial.
Problema 2: Heterogeneidade na Representao dosDados Diferentes arquitecturas (processadores), sistemas e linguagens
podem ter: diferentes representaes de nmeros inteiros (2, 4, 8 bytes?) ou
reais diferente ordem na representao de inteiros (big-endian, little-
endian) diferentes representaes de caracteres (ASCII, Unicode)
Mapeamento de estruturas de dadospara mensagens
8/8/2019 Ad Cap3 Prog Comunicacao
18/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Mapeamento de estruturas de dadospara mensagens
Big-endian vs Little-endian
e.g., Computadores comCPUs Intel
e.g., Computadores com CPUsMotorola
8/8/2019 Ad Cap3 Prog Comunicacao
19/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Tabela ASCII (7 bits)
8/8/2019 Ad Cap3 Prog Comunicacao
20/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Tabela Unicode (2 bytes)
8/8/2019 Ad Cap3 Prog Comunicacao
21/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Solues para definir o formato no qual os dados devempassar na Rede:
Forma Nativa: Transmisso de dados na sua forma nativa juntamentecom um identificador da arquitectura (Ex: Intel ou Motorola ).
Representao externa de dados: Converter os dados numa formaexterior acordada entre ambos ( marshalling e unmarshalling )
As estruturas de dados so aplanadas (serializadas) e convertidas parauma forma externa combinada antes da transmisso e reconstrudasaps a recepo;
Omisso: Poder omitir-se tambm o uso de uma forma exterior caso oscomputadores em jogo sejam da mesma arquitectura.
Solues p/ representaodos Dados na Rede
8/8/2019 Ad Cap3 Prog Comunicacao
22/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Mais sobre Marshalling e Unmarshalling Marshalling o processo de montagem de um conjunto de dados numa
forma adequada para a sua transmisso numa mensagem. Unmarshalling o processo inverso.
Marshalling = arrange in proper order
O marshalling consiste em: Aplanar as estruturas de dados para uma sequncia de dados; Codificao do formato interno para o formato externos (rede).
Unmarshalling : Descodificao do formato rede para o formato interno; Reconstruo das estruturas de dados .
O processo de marshalling e unmarshalling vulgarmente efectuado pelacamada de middleware .
Marshalling e Unmarshalling
8/8/2019 Ad Cap3 Prog Comunicacao
23/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Marshalling e Unmarshalling
Processo 1
Processo 2
Marshalling
Unmarshalling
0110101 ....1010101010....
Double a=10.1String str=Sistemas Distribudos
Middleware
Middleware
8/8/2019 Ad Cap3 Prog Comunicacao
24/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Exemplos de representao externa de dados Especificao XDR (External Data Representation) (RFC 1832) em que
a mensagem constituda por uma sequncia de objectos com 4bytes, em que os nmeros ocupam um objecto e os caracteres seencontram em ASCII.
Comunicao entre Processos
8/8/2019 Ad Cap3 Prog Comunicacao
25/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
IPC e Ligaes
Os mecanismos IPC podem ser sem ligao ou podemrequerer ligao Mecanismos IPC sem ligao no requerem setup inicial Mecanismos IPC com ligao requerem negociao e
setup antes da troca de dados entre processos.
8/8/2019 Ad Cap3 Prog Comunicacao
26/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Connectionless IPC(Sem Ligao)
Os dados simplesmente fluem em blocos de bytes com fronteiras limitadas , cujo fluxo pode nomanter a ordem
Tipicamente, no existem estruturas de dadospermanentes partilhadas entre o emissor e receptor
Vantagens e Desvantagens:+ Bom para comunicao rpida e curta+ Menor long-term OS overhead- Menor eficincia para grandes e frequentes
comunicaes- Cada processo toma os recursos byte abyte
8/8/2019 Ad Cap3 Prog Comunicacao
27/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Connection-Oriented IPC(Com Ligao)
O emissor e receptor combinam previamente osdetalhes das comunicaes entre os processos O SO tipicamente aloca recursos e guarda informao
do estado das comunicaes entre processos Sequncias de bytes ilimitadas (byte stream),
sem fronteiras Vantagens/desvantagens so as opostas dos IPC sem
ligao
8/8/2019 Ad Cap3 Prog Comunicacao
28/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Sincronismo das Comunicaes/Processos
A troca de mensagens envolve sincronismo entreprocessos Sincronismo um aspecto importante pois:
Permite ao emissor indicar quando os dados so transmitidos Permite ao receptor saber quando os dados esto disponveis
Como que o processo emissor e processo receptorsincronizam as suas comunicaes? As solues andam em torno de:
Qual o processo a bloquear (emissor ou receptor?) equando.
8/8/2019 Ad Cap3 Prog Comunicacao
29/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Na comunicao sncrona os processos sincronizam-se acada mensagem Neste caso, tanto a operao de envio como a de
recepo so bloqueantes Sempre que um processo (Emissor) envia uma
mensagem, este bloqueia-se at: O receptor receber os dados Comunicao Unidireccional Ou at a confirmao da respectiva recepo seja feita Comunicao
C-S
Sempre que um processo (Receptor) pretende receber
alguma mensagem, este bloqueia-se at receber amensagem.
Comunicao Sncrona(Blocking Send, Blocking Receive)
8/8/2019 Ad Cap3 Prog Comunicacao
30/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Sncrona Unidireccional
Sncrona Cliente-Servidor ou Pedido-Resposta
Comunicao Sncrona(Blocking Send, Blocking Receive)
8/8/2019 Ad Cap3 Prog Comunicacao
31/44
8/8/2019 Ad Cap3 Prog Comunicacao
32/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Blocking, Deadlock
Operaes bloqueantes programadas numa sequncia erradapodem causar deadlocks .
Os deadlocks devem ser evitados. Timeouts podem ser usadospara detectar deadloacks.
Exemplo: Dois processos simultaneamente em modo de recepo.
receive from process 2 issued
received from process 1 issued
process 1 blocked pending datafrom process 2.
process 2 blocked pending data
from process 1.
Process 1 Process 2
8/8/2019 Ad Cap3 Prog Comunicacao
33/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Comunicao entre Processos
Pipes e Fifos Sockets
8/8/2019 Ad Cap3 Prog Comunicacao
34/44
8/8/2019 Ad Cap3 Prog Comunicacao
35/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Comunicao entre Processos
Pipes Fluxo Unidireccional Se pretendemos criar um fluxo unidireccional, basta criarmos um pipe :
Um processo (que ir ser o pai) cria o pipe (fd1[0] e fd1[1]). O processo cria um ou mais processos filho (executando a
chamada de sistema fork ) que uma cpia dele prprio. Oresultado o seguinte:
(saltar slide seguinte)Pipe
Pai
fd[1] fd[0]
Filho
fd[1] fd[0]
Fork
Dados
process
Kernel
8/8/2019 Ad Cap3 Prog Comunicacao
36/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011 36
Comunicao entre Processos
Pipes Fluxo Unidireccional De seguida, o processo pai fecha o descritor de leitura do pipe e o
filho fecha o descritor de escrita do pipe . Assim, resulta num fluxode dados unidireccional entre dois processos:
Pipe1
Pai
fd1[1]
Filho
fd1[0]
Dados
process
Kernel
8/8/2019 Ad Cap3 Prog Comunicacao
37/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Comunicao entre Processos
Pipes Fluxo Bidireccional Se pretendermos ter um fluxo de dados bidireccional, temos de criar
dois pipes, um para cada direco: Criar pipe 1 (fd1[0] e fd1[1]) e pipe 2 (fd2[0] e fd2[1]) Fork criar o processo filho O pai fecha o descritor de leitura do pipe 1 (fd1[0]) e escrita do
pipe 2 (fd2[1]) O filho fecha os descritor de escrita do pipe 1 (fd1[1]) e leitura do
pipe 2 (fd2[0])
Pipe1
Pai
fd1[1] fd2[0]
Filho
fd2[1] fd1[0]
Dados
Pipe2
Dados
process
Kernel
8/8/2019 Ad Cap3 Prog Comunicacao
38/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Comunicao entre Processos
Pipes e Bloqueio A escrita de mais bytes do que a capacidade do pipe bloqueia o
processo emissor At o receptor consumir mais alguns bytes.
A leitura de bytes quando no esto disponveis no pipebloqueia o processo receptor
At o processo emissor escrever mais alguns bytes no pipe Uma particularidade dos pipes que o fluxo de dados
temporrio, uma vez lidos os dados no descritor no podem serlidos outra vez.
8/8/2019 Ad Cap3 Prog Comunicacao
39/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011 Alexandre Fonte39
Comunicao entre Processos
FIFOs (ou pipes named) Os pipes no tm nenhum nome associado a eles so annimos-, e logo s
podem ser usados em processos relacionados e durante a existncia destes. Os FIFOs so semelhantes aos pipes com a vantagem que so
identificados no sistema de ficheiros pelo nome associado, e logo podem serusados por processos no relacionados.
Os FIFOs tambm proporcionam apenas um fluxo de dados unidireccional. Um named pipe chamado FIFO ( first in first out ), porque os primeiros
dados escritos no pipe so os primeiros dados a serem lidos.
Fifo1
Pai
writefd readfd
Filho
writefd readfd
Dados
Fifo2
Dados
process
Kernel
/tmp/fifo.1
/tmp/fifo.2
8/8/2019 Ad Cap3 Prog Comunicacao
40/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Sockets
Foram originalmente introduzidos no Free BSD 4.3 Consistem num mecanismo de comunicao entre processos
cliente e servidor remotos (atravs de uma rede)
Podem ser vistos como uma evoluo dos pipes , dado que se
inserem na estrutura habitual dos descritores de ficheiros do UNIX Os sockets so baseados nos descritores de ficheiros, mas a
natureza da comunicao obrigou a adio de funes especficas
Os sockets so criados num determinado domnio que especifica os
protocolos utilizados e as convenes de identificao Permitem comunicaes bidireccionais
8/8/2019 Ad Cap3 Prog Comunicacao
41/44
8/8/2019 Ad Cap3 Prog Comunicacao
42/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Portos de comunicao Os Sockets Portos so as extremidades do canal com os quais os processos
interagem. Considera-se os portos/sockets como uma abstraco semelhante a
um ficheiro. A identificao dos portos/Sockets
Uma componente associada com o sistema operativo local, o identificador local
(file descriptor) . Esta componente devolvida pela funo de criao do Socket Outra componente associada com o protocolo de comunicao, o endereo doporto (normalmente associao IP e nmero do porto de servio).
Funes Associadas com os Portos/Sockets (dependem do SO,Prot. Transporte e tipo de canal):
Enviar/receber mensagens. Associar um endereo.
criao/eliminao do porto (leia-se socket). parametrizao do canal .
Sockets: Abstraco (2)
8/8/2019 Ad Cap3 Prog Comunicacao
43/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Sockets API & Analogia com o Modelo OSI
Sockets API (Application Programming Interface): Fornece primitivas de comunicao que podem ser chamadas do cdigo
dos processos/threads Fornecem independncia relativamente aos protocolos de transporte
subjacentes (o TCP ou UDP) e das linguagens utilizadas na programaodos programas cliente e servidor
Apresentao
Sesso
Transporte
Aplicao
Rede
Lgica
Fsica
Aplicao sobresockets
TCP/IP
Lgica(Driver/placa rede)
Sockets API
Modelo socketsModelo OSI
8/8/2019 Ad Cap3 Prog Comunicacao
44/44
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Aplicao Cliente
API Socket
UDP TCP
IP
lgica
Aplicao Servidor
API Socket
UDP TCP
IP
lgica
Protocolo C/S
Sockets API que usa os servios da PilhaTCP/IP