Capítulo II Modelos de Programação Distribuída

Documentos relacionados
Capítulo II Modelos de Programação Distribuída

Capítulo II Modelos de Programação Distribuída

Programando sistemas distribuídos com objetos distribuídos na rede TCP/IP. Prof. Me. Sérgio Carlos Portari Júnior

Sockets: Sumário. Resumo das Propriedades de UDP e de TCP

AULA ANTERIOR: MODELOS FUNDAMENTAIS

Programação com Sockets

Sockets e Threads em Java

SISTEMAS DISTRIBUÍDOS

Redes de Computadores e Aplicações

[Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999.

Comunicação entre Processos

Canais de Comunicação

SISTEMAS DISTRIBUÍDOS

[Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999.

Common Object Request Broker Architecture

FUNDAMENTOS DE REDES DE COMPUTADORES Unidade 5 Camada de Transporte e Aplicação. Luiz Leão

Sistemas Distribuídos Aula 2

Sistemas Distribuídos

Reader e Writer para streams de caracteres (texto).

Programação com sockets (em Java)

[Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999.

Comunicação. Carlos A. G. Ferraz 25/6/2003. Sistemas Distribuídos 1. Tópicos. Camadas. Transmissão de dados. Marshalling/Unmarshalling.

Serviços de Comunicações Capítulo 3

Vamos fazer um pequeno experimento

15/4/15. Processamento Paralelo Middleware Orientado a Objetos. Sistema operacional é a única infraestrutura para interação. Middleware é adicionado

User Datagram Protocol

Infra-Estrutura de Software

Projecto hipotético para resolvermos hoje

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017. ALUNO Prof. Bosco

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 10. Operações nos processos. Processos cooperativos, comunicação entre processos.

Prof. A. G. Silva. 13 de novembro de Prof. A. G. Silva INE5603 Introdução à POO 13 de novembro de / 1

Sistemas Operativos I/O. Rui Maranhão

UFRJ IM - DCC. Sistemas Operacionais I. Unidade IV Gerência de Recursos Entrada e Saída. 02/12/2014 Prof. Valeria M. Bastos

Sistemas Distribuídos

Invocação Remota. Prof. Leonardo Barreto Campos. 1/29

Programação Orientada por Objectos com Java. Ademar Aguiar. MRSC, Programação em Comunicações

Processos ca 3 pítulo

Redes de Computadores II. Programação com Sockets em Python

Como pôde verificar, a criação de um objecto do tipo File não cria o ficheiro em disco.

Resumo das Propriedades de UDP e de TCP

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 03/07/2017 ALUNO

Roteiro... Sistemas Distribuídos Aula 4. Troca de mensagens. Comunicação entre processos. Conceitos de SD, vantagens e desvantagens

Módulo 13. Socket. Programação Orientada a Objetos Java (Rone Ilídio)

REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar

Sistemas Operacionais II

Network Programming. Conceitos Básicos A classe InetAddress Programação de Socket TCP Programação de Socket UDP

Sistemas Operacionais Distribuídos e de Redes

Sistemas Operativos. Processos cooperantes e processos independentes

UNIVERSIDADE ESTADUAL DE PONTA GROSSA SETOR DE CIÊNCIAS AGRÁRIAS E DE TECNOLOGIA DEPARTAMENTO DE INFORMÁTICA ENGENHARIA DE COMPUTAÇÃO

Programação concorrente (processos e threads)

Fundamentos de Sistemas de Operação (FSO)

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Comunicação. capítulo

Reader e Writer para streams de caracteres (texto).

Sistemas Distribuídos

Protocolos e Serviços de Redes

Estruturas de Sistemas Operacionais

Organização e Arquitetura de Computadores I

Comunicação entre processos

Módulo 3 - Estrutura e configuração de Sistemas Operativos monoposto

Sistemas Distribuídos Aula 10

Comunicação entre Processos

Comunicação baseada em canais de I/O e Pipelines no sistema Unix. José C. Cunha, DI-FCT/UNL

Entrada e Saída Exercício. Linguagem Java. Adenilso da Silva Simão 01/09/05

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 03/07/2017 ALUNO

Programação com Sockets

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017 ALUNO

Ambientes de Execução

Sistemas Distribuídos. Plano de Curso. Plano de Curso 04/03/12 ! EMENTA:

Sistemas Distribuídos

Hierarquia de classes. Veja as diversas classes do pacote

Introdução aos Sistemas Distribuídos

Capítulo II Modelos de Programação Distribuída

Um sistema de difusão de informação a nível da aplicação

Segurança em Sistemas Operativos

Índice FCA - EDITORA DE INFORMÁTICA XV

Camada de Aplicação. Redes Industriais Prof. Rone Ilídio

Processos e Threads e em sistemas distribuídos. Prof. Me. Hélio Esperidião

Protocolo Request-Reply

Num sistema de objectos distribuídos, dois conceitos são fundamentais.

Introdução aos Sistemas Operativos

João Correia Lopes. v 1.0, Outubro de Introdução aos Sistemas Operativos v1.0 1

Só podem ser executados por uma Thread que detenha o lock do objecto

O que é? É uma aplicação que consiste em 2 ou mais processos que executam em diferentes processadores que não partilham memória.

Fundamentos de Sistemas Operacionais

Camada de Aplicação da Arquitetura TCP/IP

Sistemas Distribuídos

COMUNICAÇÃO ENTRE APLICAÇÕES. Laboratórios de Informática João Paulo Barraca, André Zúquete, Diogo Gomes

COMPUTAÇÃO DISTRIBUÍDA

INTRODUÇÃO. RPC x RMI

Sistemas Operacionais II

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO Bacharelado em Sistemas de Informação. Processamento Paralelo Threads. Aluno: Wagner Palacio

21108 Sistemas Distribuídos Teste Formativo

Redes de Computadores e Aplicações Camada de aplicação IGOR ALVES

Data and Computer Network Endereçamento IP

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUÍDA

Transcrição:

Capítulo II Modelos de Programação Distribuída From: Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 4, Addison-Wesley 2005 From: M. Ben-Ari Principles of Concurrent and Distributed Programming Prentice Hall 1990 From: Qusay H. Mahmoud Distributed Programming with Java Manning Publications, 1999 From: Mastering Cloud Computing Foundations and Applications Programming Rajkumar Buyya, Christian Vecchiola, Thamarai Selvi Morgan Kaufmann Publishers, 2013 Paula Prata, Departamento de Informática da UBI http://www.di.ubi.pt/~pprata

Modelos de Programação Distribuída Sistema Distribuído: Conjunto de computadores ligados em rede, com software que permita a partilha de recursos e a coordenação de actividades, oferecendo idealmente um sistema integrado. Computação distribuída: - a computação é dividida em várias unidades que executam concorrentemente em diferentes elementos de computação. Estes podem ser diferentes processadores em diferentes máquinas, diferentes processadores na mesma máquina, ou diferentes cores no mesmo processador. 2/2

Modelos de Programação Distribuída Um sistemas distribuído é o resultado da interação de vários componentes que atravessam toda a pilha (stack) de computação desde o hardware até ao Software: Hardware: computador mais infraestrutura de rede; O hardware é diretamente gerido pelo sistema operativo (SO)que fornece os serviços para: - comunicação entre processos (IPC Inter Process communication) - escalonamento e gestão de processos - gestão de recursos, como o file system e periféricos Hardware + SO = plataforma 2/3

Modelos de Programação Distribuída Ao nível do sistema operativo, a comunicação entre processos é implementada usando protocolos como: - TCP/IP (Transmission Control Protocol/Internet Protocol); - UDP (User DatagramProtocol) - ou outros. Acima do sistema operativo, o middleware constrói uma camada que permitirá às aplicações abstraírem da heterogeneidade do hardware e do sistema operativo das plataformas. O middleware fornece uma interface uniforme para o desenvolvimento de aplicações. 2/4

Modelos de Programação Distribuída Frameworks for distributed programming Applications IPC primitives for control and data. Middleware Operating System Networking and Parallel Hardware Hardware From: Mastering Cloud Computing - Foundations and Applications Programming 2/5

Modelos de Programação Distribuída A comunicação entre processos (IPC) é usada quer para transferir dados entre os processos quer para coordenar a sua actividade. Modelos de IPC mais importantes: - Memória partilhada - Comunicação por mensagens 2/6

Modelos de Programação Distribuída Sistemas de Memória Partilhada - Os processos acedem a um único espaço de endereçamento; - Comunicação através de variáveis partilhadas; - Sincronização feita pelas técnicas clássicas da programação concorrente (ex. Semáforos ou Monitores). 2/7

Modelos de Programação Distribuída Sistemas de Memória Distribuída - Vários espaços de endereçamento disjuntos (cada processador tem a sua própria memória local - Comunicação por mensagens (através de uma canal de comunicação) - Comunicação e sincronização integradas num único conceito O programador utiliza os mecanismos de comunicação por mensagens sem se preocupar com a forma como é feito o armazenamento e a transferência dos dados. 2/8

1 Modelos de comunicação por mensagens As várias formas de comunicação por mensagens distinguem-se por: 1 - Tipo de sincronização - Comunicação síncrona - Comunicação assíncrona - Invocação remota de procedimentos 2/9

1 Modelos de comunicação por mensagens As várias formas de comunicação por mensagens distinguem-se por: 2 - Forma como são especificados os vários intervenientes no processo - Identificação dos processos - Criação dos processos (dinâmica ou estática) - Comunicação bi ou uni-direcional 2/10

1 Modelos de comunicação por mensagens processo emissor mensagem canal de comunicação processo receptor Três tipos de interacção: Comunicação síncrona O envio de uma mensagem é uma operação atómica que requer a participação de dois processos (emissor e receptor) - Se o emissor está pronto a enviar a mensagem mas o receptor não a pode receber, o emissor bloqueia. - Se o receptor está pronto a receber a mensagem mas o emissor não a envia, o receptor bloqueia 2/11

1 Modelos de comunicação por mensagens processo emissor mensagem canal de comunicação processo receptor Comunicação síncrona (cont.) Em resumo: O acto de comunicação sincroniza as sequências de execução dos dois processos o 1º processo a chegar ao ponto da comunicação espera pelo segundo 2/12

1 Modelos de comunicação por mensagens Comunicação assíncrona - O emissor pode enviar a mensagem e continuar a executar sem bloquear, independentemente do estado do processo receptor. - O receptor pode estar a executar quaisquer outras instruções, e mais tarde testar se tem mensagens a receber; quando aceita a mensagem não sabe o que se passa no emissor (pode até já ter terminado) 2/13

1 Modelos de comunicação por mensagens Comunicação síncrona versus assíncrona (telefonar vs enviar uma mensagem) c. síncrona conceito de mais baixo nível (mais eficiente) c. assíncrona permite um maior grau de concorrência exige que o sistema de execução faça a gestão e o armazenamento das mensagens (um buffer de memória tem que estar preparado para armazenar um número de mensagens potencialmente ilimitado. 2/14

1 Modelos de comunicação por mensagens Invocação remota de procedimentos RPC ( Remote Procedure Calling) A comunicação entre dois processos diz-se uma chamada de procedimento remoto quando, 1 Um processo (o emissor) envia um mensagem 2 o processo receptor produz uma resposta à mensagem e 3 o emissor permanece suspenso até à recepção da resposta. 2/15

1 Modelos de comunicação por mensagens Invocação remota de procedimentos (cont.) Do ponto de vista do processo emissor (cliente) este mecanismo funciona como a chamada de um procedimento. O procedimento não vai ser executado no próprio processo mas sim no receptor (servidor). Os dados comunicados na mensagem, funcionam como parâmetros do tipo valor. A resposta do receptor pode ter a forma de parâmetros resultado. 2/16

1 Modelos de comunicação por mensagens Invocação remota de procedimentos (cont.) O sistema de execução é responsável por encapsular sob a forma de mensagem qual o procedimento a executar e os respectivos parâmetros. A pós a execução do procedimento o resultado é uma mensagem do processo remoto para o cliente. O estado do procedimento não perdura entre invocações. 2/17

1 Modelos de comunicação por mensagens Invocação remota de procedimentos (cont.) Node A Node B Main Procedure Procedure Registry Procedure A Procedure C:Node B Procedure C Procedure B RPC Library RPC Service Program A (RPC Client) Program C (RPC Server) Parameters Marshaling and Procedure Name Return Value Unmarshaling Parameters Unmarshaling and Procedure Name Return Value Marshaling Network 2/18

1 Modelos de comunicação por mensagens Invocação remota de procedimentos Variante do RPC Emissor: - após o envio da mensagem, o emissor prossegue a execução até que precise do resultado (permite maior concorrência) - se, nesse ponto, a resposta ainda não estiver disponível, o emissor é suspenso 2/19

1 Modelos de comunicação por mensagens Invocação remota de procedimentos Variante do RPC (cont.) Receptor: - Quando um processo executa uma instrução de aceitação de mensagem, é suspenso até à chegada da mesma. Pode ocorrer que o receptor pretenda: - escolher uma de entre um conjunto de mensagens possíveis; - estabelecer condições para a recepção de uma mensagem; 2/20

1 Modelos de comunicação por mensagens Variante do RPC Receptor: (cont) Para isso é necessário que exista uma instrução em que o receptor, - selecciona uma de um conjunto de mensagens alternativas - cada uma das quais pode ter associada uma condição para a aceitação da mensagem 2/21

1 Modelos de comunicação por mensagens 2 - Forma como são especificados os vários intervenientes no processo Identificação dos processos i) Sistema em que todos os processos têm um nome único O comando de envio pode nomear directamente o processo receptor ENVIA <mensagem> PARA <nome do processo> simetricamente no receptor ESPERA <mensagem> DE <nome do processo> (*) 2/22

1 Modelos de comunicação por mensagens Identificação dos processos (*) requer que o receptor saiba o nome de todos os processos passíveis de lhe enviar uma mensagem Se o receptor apenas estiver interessado em receber determinada mensagem, não importando quem é o emissor: ESPERA <mensagem> // o emissor é anónimo o receptor não 2/23

1 Modelos de comunicação por mensagens Identificação dos processos ii) Quando não é apropriado um sistema de nomes únicos para todos os processos, definem-se entidades intermédias, caixas de correio (ou canais) conhecidas por ambos os intervenientes na comunicação ENVIA <mensagem> PARA <caixa de correio> ESPERA <mensagem> DE <caixa de correio> 2/24

1 Modelos de comunicação por mensagens Uma caixa de correio pode ter várias formas. Pode ser usada por: por vários emissores e vários receptores um emissor e vários receptores (difusão ou broadcasting ) vários emissores e um receptor um receptor e um emissor Pode ainda ser estruturada para enviar informação em ambas as direcções ou apenas numa. 2/25

1 Modelos de comunicação por mensagens Formas de criação de processos Os processos de um programa distribuído podem ser criados de forma estática ou dinâmica Definição estática: - todos os processos são criados no início da execução - a atribuição de recursos (memória, canais de comunicação, etc) é feita em tempo de compilação) mais eficiente 2/26

1 Modelos de comunicação por mensagens Formas de criação de processos Definição dinâmica: Permite maior flexibilidade: - O sistema ajusta-se às necessidades da aplicação ao longo do tempo - Permite mecanismos de balanceamento de carga ( load balancing ) A criação estática de processos é apropriada para sistemas dedicados onde a configuração do sistema é conhecida à partida. Ex.los: - embedded systems,... - sistemas de monitorização médica 2/27

2 Exemplos: a) Comunicação por mensagens através de Sockets TCP (em Java) Socket interface de um canal de comunicação entre dois processos Um par de processos comunica através de uma par de sockets Emissor write sockets read Receptor sistema operativo sistema operativo rede de comunicação 2/28

2 Exemplos: a) Comunicação por mensagens através de Sockets (em Java) Paradigma de comunicação (análogo a usar um descritor de um ficheiro) - criação ( open ) do socket - ler e escrever ( receive, send ) - destruição ( close ) do socket 2/29

2 Exemplos: a) Comunicação por mensagens através de Sockets (em Java) O endereço de um socket é especificado por: - endereço internet ( IP da máquina onde está o processo com que queremos comunicar) - nº de um porto (um porto é representado por um inteiro >1024 que identifica os vários serviços em execução numa mesma máquina, 0-1023 reservados a utilizadores com privilégios root ou superuser) Ex. lo 146.75.4.30/1234 2/30

2 Exemplos: a) Comunicação por mensagens através de Sockets (em Java) A classe Socket - Permite criar sockets que comunicam através do protocolo TCP (Transmission Control Protocol) usando uma stream de bytes. - Um dos sockets (o servidor) aguarda por um pedido de ligação enquanto o outro (o cliente) solicita a ligação. - Após ser estabelecida a ligação entre os dois sockets, estes podem ser usados para transmitir dados nos dois sentidos 2/31

2 Exemplos: a) Comunicação por mensagens através de Sockets (em Java) 1) Criar um socket Se o processo é um cliente: import java.net.*; import java.io.*; Socket meucliente = null; try { meucliente = new Socket ( host, portnumber); } catch (IOException e){ System.out.println( e.getmessage()); } 2/32

2 Exemplos: a) Comunicação por mensagens através de Sockets (em Java) 1) Criar um socket Se o processo é um servidor:... ServerSocket meuservidor = null; try { meuservidor = new ServerSocket (portnumber); } catch (IOException e){ System.out.println( e.getmessage());} o objecto do tipo ServerSocket vai permitir esperar por um pedido de ligação no porto especificado Socket sservidor = null try { sservidor = meuservidor.accept();* quando o cliente solicita uma ligação, o método accept() devolve o endereço de uma ligação ao socket do servidor } catch (IOException e){ System.out.println( e.getmessage()); } * método da classe ServerSocket: public Socket accept() throws IOException 2/33

2 Exemplo: a.1 - Percorrer todos os portos de um máquina remota... public static void scan(string host) { } for (int port = 0; port<65536; port++) { try { Socket s = new Socket(host, port); System.out.println( Existe um servidor no porto + port + " da máquina " + host ); s.close(); } catch (IOException e) { System.out.println( A máquina + host + não está à escuta no porto + port); } } 2/34

2 Exemplos: a) Comunicação por mensagens através de Sockets (em Java) 2) Criar uma OutputStream - no cliente... PrintWriter os = null; try { os = new PrintWriter (a) ( meucliente.getoutputstream() (b), true); os.println ( Olá, eu sou o cliente ); } catch (IOException e) { System.out.println( e.getmessage()); }... (a) (b) caracteres bytes PrintWriter (OutputStream out, boolean autoflush); converte caracteres em bytes OutputStream getoutputstream () throws IOException; método da classe Socket 2/35

2 Exemplos: a) Comunicação por mensagens através de Sockets (em Java) 2) Criar uma OutputStream - no servidor... os = new PrintWriter (sservidor.getoutputstream(), true);... 3) Criar uma InputStream - no cliente BufferedReader is = null; try { is = new BufferedReader (new InputStreamReader (meucliente.getinputstream()) ); is.readline(); } catch (... caracteres <= String readline(); bytes 2/36

2 Exemplos: a) Comunicação por mensagens através de Sockets (em Java) 3) Criar uma InputStream - no servidor... is = new BufferedReader (new InputStreamReader (sservidor.getinputstream()));... 4) Fechar um socket // 1º fechar as streams try { is.close(); os.close(); //fechar os sockets meucliente.close(); // no cliente sservidor.close(); // no servidor } catch (IOException e) {...}... Para criar o cliente e o servidor na mesma máquina: IP: 127.0.0.1 (local host) - permite à maquina comunicar com ela própria através do protocolo TCP/IP mesmo sem estar ligada à rede 2/37

2 Exemplos: a) Comunicação por mensagens através de Sockets (em Java) Exercício: Criar um cliente e um servidor que comuniquem por Sockets e Object Streams. 2/38

2 Exemplos: b) Sistemas de Objetos distribuídos Os Sistemas de Objetos Distribuídos implementam o modelo de objectos locais usando RPC. - Cada processo regista um conjunto de interfaces que podem ser acedidas remotamente. - Os processos clientes podem aceder a um ponteiro para essas interfaces e invocar os métodos disponíveis através delas. 2/39

2 Exemplos: b) Sistemas de Objetos distribuídos - Os métodos remotos executam no contexto de uma instância de um objeto cuja existência pode perdurar independentemente de existência de requests dando origem a active objects que têm uma thread de execução própria. - Ex.s CORBA, Java RMI,.NET Remoting 2/40

2 Exemplos: c) Web Services Implementam o modelo de RPC usando o protocolo HTTP. Um WS é exposto como um objeto remoto num servidor web. As invocações dos métodos são transformadas em pedidos (requets) HTTP. Esses requests são encapsulados segundo dois protocolos principais: SOAP Simple Object Access Protocol REST Representational State Transfer 2/41

3 Modelos de interação por mensagens: - Comunicação Ponto a Ponto Cada mensagem é enviada de um componente para outro. O processo que envia a mensagem tem de conhecer o endereço do receptor. A comunicação pode ser síncrona ou assíncrona. A comunicação assíncrona implica um sistema de armazenamento de mensagens. 2/42

3 Modelos de interação por mensagens: - Publish-and-subscribe Os processos podem desempenhar um de dois papéis: - O publisher que permite aos outros processos subscreverem um determinado tópico ou evento. - Quando o evento ocorre do lado do publisher, é desencadeada a criação de uma mensagem associada ao evento e que ficará disponível para todos os subscritores desse evento. Para os subscritores serem notificados do evento, há duas estratégias 2/43 possíveis:

3 Modelos de interação por mensagens: - Publish-and-subscribe Push strategy O publisher tem a responsabilidade de notificar todos os subscritores. Pull strategy O publisher cria a mensagem, mas são os subscritores que têm que verificar se há mensagens para um dado evento. 2/44

3 Modelos de interação por mensagens: - Request-reply Inclui todos os modelos para os quais para cada mensagem enviada a um processo existe uma resposta. 2/45