Ad Cap3 Prog Comunicacao

download Ad Cap3 Prog Comunicacao

of 44

Transcript of Ad Cap3 Prog Comunicacao

  • 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