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).
Material de Apoio a AD, ESTCB Edição 2010-2011

Alexandre Fonte

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

Espaço de endereçamento Privado

Espaço de endereçamento do Sistema Operativo

Espaço de endereçamento Privado

Processo A

Processo B

Alexandre Fonte

Normalmente, nenhum processo pode escrever no espaço de endereçamento de outro processo
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 do Sistema Operativo (A) Espaço de endereçamento do Sistema Operativo (B)

Espaço de endereçamento Privado

Espaço de endereçamento 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 endereçamento Privado

Espaço de endereçamento 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 () { . x = 10 . . . }
Alexandre Fonte

write variable x x: 10 read variable x

. . . print(x); . . .

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)

Alexandre Fonte

Processo A

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

Dados

Processo B

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

Processo A
Alexandre Fonte

Dados de A enviados para B

Processo B

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 () { . rpc(); . . . }
Alexandre Fonte

Dados como parâmetros

Dados como valores de retorno

. . . server(); . . . Processo B
11

Processo A

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

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
C=Objecto.metodo (A,B)

Objecto Remoto Dados como parametros
metodo(Obj1 a,Obj2 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 float a=2.4 int b=1 long c=100, etc Processo Receptor

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 de Apoio a AD, ESTCB Edição 2010-2011 15

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, littleendian) diferentes representações de caracteres (ASCII, Unicode)
Material de Apoio a AD, ESTCB Edição 2010-2011

Alexandre Fonte

Mapeamento de estruturas de dados para mensagens
 

Big-endian vs Little-endian

e.g., Computadores com CPUs Motorola
Alexandre Fonte

e.g., Computadores com CPUs Intel
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
Material de Apoio a AD, ESTCB Edição 2010-2011

Alexandre Fonte

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.
Material de Apoio a AD, ESTCB Edição 2010-2011

Alexandre Fonte

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.
Material de Apoio a AD, ESTCB Edição 2010-2011

Alexandre Fonte

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 fd[1] fd[0]

Filho fd[1] fd[0]
process Kernel

 

(saltar slide seguinte)

Pipe

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 fd1[1]

Filho 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 fd1[1] fd2[0] fd2[1] Filho 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 writefd readfd writefd Filho readfd

process Kernel

/tmp/fifo.2

Fifo2 Dados
/tmp/fifo.1

Alexandre Fonte

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

Fifo1

Alexandr e 39 Fonte

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
Processo

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

 

A identificação dos portos/Sockets
   

 

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
Aplicação Apresentação Sessão Transporte TCP/IP Rede Lógica Física Lógica(Driver/ placa rede) Aplicação sobre sockets Sockets API

Modelo sockets

Alexandre Fonte

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

Sockets API que usa os serviços da Pilha TCP/IP
Aplicação Cliente

Protocolo C/S

Aplicação Servidor

API Socket

API Socket

UDP

TCP

UDP

TCP

IP

IP

lógica
Alexandre Fonte

lógica
Material de Apoio a AD, ESTCB Edição 2010-2011

Sign up to vote on this title
UsefulNot useful