Vous êtes sur la page 1sur 44

Comunicação entre Processos

Licenciatura em Engenharia Informática


Aplicações Distribuídas
3º Ano – 5º Semestre
Ano lectivo 2010-2011

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


1
Resumo

  Comunicação entre Processos


  Mecanismos de Comunicação entre Processos
  Passagem mensagens:
  Pipes, FIFOs
  Sockets
  Representação externa de Dados e Marshalling

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


Comunicação entre Processos
  O modelo processo é um modo útil para isolar
programas em execução:
  Separar recursos, estado, etc
  Simplificação através da escrita de programas simples

  Mas, ... existem aplicações que precisam que os


processos sejam capazes de comunicar e de
sincronizar entre eles:
  No mesmo espaço de endereçamento: Um simples pedido de
utilizador pode resultar na execução de vários processos no sistema
operativo, onde normalmente estes processos necessitam de
comunicar entre si
  Em espaços de endereçamento diferentes: Um pedido de
consulta a uma base de dados pode resultar no pedido remoto de
consulta sobre um processo remoto que gere o acesso à base de
dados remota (em máquinas remotas).

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


Comunicação entre Processos

•  Ilustração Processos no mesmo espaço de Endereçamento

Espaço de
Espaço de
endereçamento
Espaço de endereçamento
Privado
endereçamento Privado
do
Sistema Operativo

Processo A Processo B

Normalmente, nenhum processo pode escrever no


espaço de endereçamento de outro processo
Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011
Comunicação entre Processos

•  Ilustração Processos em espaços de Endereçamento diferentes


Espaço de endereçamento Espaço de endereçamento
do Sistema Operativo (A) do Sistema Operativo (B)

Espaço de
Espaço de
endereçamento
endereçamento
Privado
Privado

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


Comunicação entre Processos
  O que é a comunicação entre processos (interprocess
communication – IPC) ?
  Conjunto de mecanismos que facilitam a transferência de dados entre
processos.
  Os mecanismos IPC são o meio de comunicação entre processos.

Espaço de
Espaço de
endereçamento
endereçamento
Privado
Privado

IPC

Processo A Processo B
Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011
Comunicação entre Processos
 Fundamentalmente, existem dois tipos de soluções,
fornecidas pelos SO:
1. Suporte de alguma forma de partilha entre espaços de
endereçamento:
  Memória partilhada
2. Utilização de mecanismos explícitos para transporte de
dados entre o espaço de endereçamento de um processo
e o espaço de endereçamento do outro processo:
  Passagem de Ficheiros, passagem mensagens, chamadas de
procedimentos remotos, invocação remota de métodos, etc

  Nota: Cada mecanismo IPC tem as suas vantagens e limitações,


podendo existir programas que utilizem vários mecanismos
disponíveis.
Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011
Memória Partilhada
  Mecanismo pelo qual os processos podem trocar dados mais rapidamente
  Processos distintos partilham uma zona de memória comum
  Fisica ou virtual (normalmente em disco)
  Comunicações através de via normais reads/writes
  Pode ser necessários mecanismos de sincronismo
  E.g., baseados em trincos

.
main () { write variable x .
. .
x = 10 x: 10
print(x);
. read variable x .
. .
. .
}

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


IPC através do Sistema de Ficheiros
  Mais lento que o mecanismo de memória partilhada
  Processo emissor escreve um ficheiro
  Processo receptor lê o ficheiro
  Quando pode o receptor ler o ficheiro?
  Utilização frequente de trincos (locks)

Processo A Dados Processo B


Alexandre Fonte Material de Apoio a AD, ESTCB Edição 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

Buffer
do receptor
OS

Dados de A
enviados para B
Processo A Processo B
Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011
Chamadas de Procedimentos
(Remote Procedure Calls)
  Método que permite a chamada de procedimentos sobre outros
espaços de endereçamento
  Usa uma interface remota idêntica à interface local
  Os dados são passados como parâmetros
  Geralmente, a chamada de um RPC bloqueia até à chegada dos
resultados da execução do RPC

main () { .
. Dados como parâmetros .
rpc(); .
. server();
. .
. Dados como .
} valores de retorno .

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


Processo B 11
Processo A
Invocação Remota de Métodos
(Remote Invocation Method)
  Semelhante aos RPCs
  Método que permite a invocação de métodos sobre
objectos em execução numa máquina virtual remota
cliente A Objecto Remoto
metodo(Obj1 a,Obj2
C=Objecto.metodo Dados como parametros b) {
(A,B) //Implementação do
método
.
.
Dados como .
}
valores de retorno

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


12
Passagem de Mensagens (1)
  Passagem de mensagens é o paradigma base para as aplicações
distribuídas
  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 máquina: Pipes, FIFOS, message queues
  Entre máquinas: Sockets
Process A
Process B

a message

Message passing

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


Passagem de Mensagens (2)

  As mensagens são, portanto, um dos blocos básicos


constituintes de uma comunicação inter-processos
  Uma mensagem é um pedaço de informação que é
trocado entre processos
Processo
Emissor Processo
float a=2.4 Receptor
int b=1
long c=100, etc MsgID p1 p2 p3 p4 p5
11 2.4 1 100 3.5 1002

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


Passagem de Mensagens (3)

  As mensagens consistem num:


  Cabeçalho
  Tipo da mensagem
  ID da fonte e destino
  Comprimentos da
mensagem
  Informação de controlo

  Corpo
  Conteúdo (dados)

Alexandre Fonte Material


15 de Apoio a AD, ESTCB Edição 2010-2011
Passagem de Mensagens (4)
  As operações básicas para suporte da passagem de mensagens
são:
  Send(message)

  Receive(message).

  Com esta abstracção, os processos em comunicação realizam


trocas de dados (I/O-input/output) de forma semelhante à escrita e
leitura de um ficheiro.
  Estas operações I/O encapsulam os detalhes das comunicações
ao nível do sistema operativo.

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


Mapeamento de estruturas de dados
para mensagens

  Problema 1: Os dados, em programas, são


representados como estruturas de dados, enquanto que
a informação em mensagens é sequencial.

  Problema 2: Heterogeneidade na Representação dos


Dados
  Diferentes arquitecturas (processadores), sistemas e linguagens
podem ter:
  diferentes representações de números inteiros (2, 4, 8 bytes?) ou
reais
  diferente ordem na representação de inteiros (big-endian, little-
endian)
  diferentes representações de caracteres (ASCII, Unicode)

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


Mapeamento de estruturas de dados
para mensagens
  Big-endian vs Little-endian

e.g., Computadores com CPUs e.g., Computadores com


Motorola CPUs Intel
Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011
Tabela ASCII (7 bits)

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


Tabela Unicode (2 bytes)

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


Soluções p/ representação
dos Dados na Rede
  Soluções para definir o formato no qual os dados devem
passar na Rede:
  Forma Nativa: Transmissão de dados na sua forma nativa juntamente
com um identificador da arquitectura (Ex: Intel ou Motorola).

  Representação externa de dados: Converter os dados numa forma


exterior acordada entre ambos (marshalling e unmarshalling)
  As estruturas de dados são aplanadas (serializadas) e convertidas para
uma forma externa combinada antes da transmissão e reconstruídas
após a recepção;

  Omissão: Poderá omitir-se também o uso de uma forma exterior caso os


computadores em jogo sejam da mesma arquitectura.

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


Marshalling e Unmarshalling

  Mais sobre … Marshalling e Unmarshalling


  Marshalling é o processo de montagem de um conjunto de dados numa
forma adequada para a sua transmissão numa mensagem. Unmarshalling é
o processo inverso.
  Marshalling = arrange in proper order
  O marshalling consiste em:
  Aplanar as estruturas de dados para uma sequência de dados;

  Codificação do formato interno para o formato externos (rede).

  Unmarshalling:
  Descodificação do formato rede para o formato interno;

  Reconstrução das estruturas de dados.

  O processo de marshalling e unmarshalling é vulgarmente efectuado pela


camada de middleware.

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


Marshalling e Unmarshalling

Processo 1

Middleware
Marshalling
0110101 ....1010101010....
Middleware
Unmarshalling
Processo 2
Double a=10.1
String str=Sistemas Distribuídos

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


Comunicação entre Processos
  Exemplos de representação externa de dados
  Especificação XDR (External Data Representation) (RFC 1832) em que
a mensagem é constituída por uma sequência de objectos com 4
bytes, em que os números ocupam um objecto e os caracteres se
encontram em ASCII.

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


IPC e Ligações
  Os mecanismos IPC podem ser sem ligação ou podem
requerer ligação
  Mecanismos IPC sem ligação não requerem setup inicial
  Mecanismos IPC com ligação requerem negociação e
setup antes da troca de dados entre processos.

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


Connectionless IPC
(Sem Ligação)
  Os dados simplesmente fluem em blocos de bytes
com fronteiras limitadas, cujo fluxo pode não
manter a ordem
  Tipicamente, não existem estruturas de dados
permanentes partilhadas entre o emissor e receptor
  Vantagens e Desvantagens:
+ Bom para comunicação rápida e curta
+ Menor long-term OS overhead
- Menor eficiência para grandes e frequentes
comunicações
- Cada processo “toma” os recursos byte a
byte
Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011
Connection-Oriented IPC
(Com Ligação)
  O emissor e receptor combinam previamente os
detalhes das comunicações entre os processos
  O SO tipicamente aloca recursos e guarda informação
do estado das comunicações entre processos
  Sequências de bytes ilimitadas (byte stream),
sem fronteiras
  Vantagens/desvantagens são as opostas dos IPC sem
ligação

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


Sincronismo das Comunicações/Processos

  A troca de mensagens envolve sincronismo entre


processos
  Sincronismo é um aspecto importante pois:
  Permite ao emissor indicar quando os dados são transmitidos
  Permite ao receptor saber quando os dados estão disponíveis
  Como é que o processo emissor e processo receptor
sincronizam as suas comunicações?
  As soluções andam em torno de:

  Qual o processo a bloquear (emissor ou receptor?) e


quando.

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


Comunicação Síncrona
(Blocking Send, Blocking Receive)
  Na comunicação síncrona os processos sincronizam-se a
cada mensagem
  Neste caso, tanto a operação de envio como a de
recepção são bloqueantes
  Sempre que um processo (Emissor) envia uma
mensagem, este bloqueia-se até:
  O receptor receber os dados – Comunicação Unidireccional
  Ou até a confirmação da respectiva recepção seja feita – Comunicação
C-S
  Sempre que um processo (Receptor) pretende receber
alguma mensagem, este bloqueia-se até receber a
mensagem.

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


Comunicação Síncrona
(Blocking Send, Blocking Receive)
  Síncrona Unidireccional

  Síncrona Cliente-Servidor ou Pedido-Resposta

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


Comunicação Assíncrona
(Non-Blocking Send, Blocking Receive)

  A operação de envio é não bloqueante, o processo que envia pode


prosseguir a execução assim que a mensagem tenha sido copiada para
um buffer local. A transmissão da mensagem prossegue, depois,
concorrentemente com a execução do processo.
  Eventualmente, a operação de recepção pode não ser bloqueante
  Caso seja não bloqueante, o processo que recebe pode prosseguir após a operação
de recepção que disponibiliza um buffer para ser preenchido em background.
Separadamente, o processo deve receber uma notificação de que o buffer está cheio,
através de polling ou de interrupção.

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


Blocking, Deadlock
  Operações bloqueantes programadas numa sequência errada
podem causar deadlocks.
  Os deadlocks devem ser evitados. Timeouts podem ser usados
para detectar deadloacks.
  Exemplo: Dois processos simultaneamente em modo de recepção.
Process 1 Process 2

receive from process 2 issued


process 1 blocked pending data
from process 2.
received from process 1 issued
process 2 blocked pending data
from process 1.

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


Comunicação entre Processos

  Pipes e Fifos
  Sockets

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


Comunicação entre Processos

  Pipes
  Um pipe é uma técnica primitiva para passar dados entre processos no
mesmo sistema;
  Um pipe fornece apenas comunicação num sentido, não formatada e não
interpretada;
  Os pipes são implementados sobre o sistema de ficheiros, o acesso é
semelhante ao dos ficheiros;
  Um processo escreve bytes no pipe;
  Um segundo processo lê bytes do pipe.
  Um pipe é criado invocando a chamada de sistema pipe(), a qual cria um
par de descritores de ficheiro que apontam para o pipe:
  fd[0] é usado para leitura;
  fd[1] é usado para escrita.
  Os processos que utilizam os pipes têm que ter um processo pai em
comum.

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


Comunicação 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 cópia dele próprio. O


resultado é o seguinte:

Fork
Pai Filho

fd[1] fd[0] fd[1] fd[0]

process

Kernel

Pipe
  (saltar slide seguinte)
Dados

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


Comunicação 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 fluxo
de dados unidireccional entre dois processos:

Pai Filho

fd1[1] fd1[0]

process

Kernel

Pipe1

Dados

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011 36


Comunicação entre Processos
  Pipes – Fluxo Bidireccional
  Se pretendermos ter um fluxo de dados bidireccional, temos de criar
dois pipes, um para cada direcção:
  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])
Pai Filho

fd1[1] fd2[0] fd2[1] fd1[0]

process

Kernel

Pipe2

Dados

Pipe1

Dados

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


Comunicação 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 não estão disponíveis no pipe


bloqueia o processo receptor
  Até o processo emissor escrever mais alguns bytes no pipe

  Uma particularidade dos pipes é que o fluxo de dados é


temporário, uma vez lidos os dados no descritor não podem ser
lidos outra vez.

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


Comunicação entre Processos

  FIFOs (ou pipes named)


  Os pipes não têm nenhum nome associado a eles –são anónimos-, e logo só
podem ser usados em processos relacionados e durante a existência destes.
  Os FIFOs são semelhantes aos pipes com a vantagem que são
identificados no sistema de ficheiros pelo nome associado, e logo podem ser
usados por processos não relacionados.
  Os FIFOs também proporcionam apenas um fluxo de dados unidireccional.
  Um named pipe é chamado FIFO (first in first out), porque os primeiros
dados escritos no pipe são os primeiros dados a serem lidos.
Pai Filho

writefd readfd writefd readfd

process

Kernel
/tmp/fifo.2
Fifo2

Dados

/tmp/fifo.1
Fifo1
Alexandr
Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011 e 39
Fonte
Dados
Sockets
  Foram originalmente introduzidos no Free BSD 4.3

  Consistem num mecanismo de comunicação entre processos


cliente e servidor remotos (através de uma rede)

  Podem ser vistos como uma evolução dos pipes, dado que se
inserem na estrutura habitual dos descritores de ficheiros do UNIX

  Os sockets são baseados nos descritores de ficheiros, mas a


natureza da comunicação obrigou a adição de funções específicas

  Os sockets são criados num determinado domínio que especifica os


protocolos utilizados e as convenções de identificação

  Permitem comunicações bidireccionais

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


Sockets: Abstracção (1)
  A comunicação entre processos pode modelizar-se como a
interacção entre um processo emissor que gera informação e
um processo receptor que irá trata-la.
  A transferência de informação é suportada por um canal.
  As extremidades do canal (endpoints) são designadas como
portos / sockets

Emissor Receptor
Processo Processo

Porto Porto

Canal de comunicação

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


Sockets: Abstracção (2)
  Portos de comunicação – Os Sockets
  Portos são as extremidades do canal com os quais os processos
interagem.
  Considera-se os portos/sockets como uma abstracção semelhante a
um ficheiro.
  A identificação dos portos/Sockets
  Uma componente associada com o sistema operativo local, o identificador local
(file descriptor). Esta componente é devolvida pela função de criação do Socket
  Outra componente associada com o protocolo de comunicação, o endereço do
porto (normalmente associação IP e número do porto de serviço).
  Funções Associadas com os Portos/Sockets (dependem do SO,
Prot. Transporte e tipo de canal):
  Enviar/receber mensagens.
  Associar um endereço.
  criação/eliminação do porto (leia-se socket).
  parametrização do canal.

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011


Sockets API & Analogia com o Modelo OSI

  Sockets API (Application Programming Interface):


  Fornece primitivas de comunicação que podem ser chamadas do código
dos processos/threads
  Fornecem independência relativamente aos protocolos de transporte
subjacentes (o TCP ou UDP) e das linguagens utilizadas na programação
dos programas cliente e servidor
Modelo OSI Modelo sockets
Aplicação
Aplicação sobre
Apresentação
sockets
Sessão
Sockets API

Transporte
TCP/IP
Rede

Lógica
Lógica(Driver/
placa rede)
Física
Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011
Sockets API que usa os serviços da Pilha
TCP/IP

Protocolo C/S
Aplicação Cliente Aplicação Servidor

API Socket API Socket

UDP TCP UDP TCP

IP IP

lógica lógica

Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011

Vous aimerez peut-être aussi