1 Middleware Marcellus Tavares. 2 Roteiro Sistemas distribuídos Motivação Middleware  MPI  RMI Referências.

Slides:



Advertisements
Apresentações semelhantes
Sistemas Distribuídos
Advertisements

Sistemas Distribuídos Baseados em Objetos
SISTEMAS OPERACIONAIS (SO) Aula 5 Luciana A. F. Martimiano 2002
C/C++ para Sistemas Operacionais Professor: André Luis Meneses Silva /msn: Página:
Sistemas distribuídos
Programa de Pós-Graduação Lato Sensu MBA em Gestão de Software
MPI – Comunicações Com. Colectiva esquecida Barrier não há troca de dados, apenas sincroniza os processos int MPI_Barrier( MPI_Comm, comm) T com = T lat.
MPI - Introdução Message-Passing Model Task: código + memória (uma ou várias tasks no mesmo processador) Mensagem: as tasks comunicação entre si trocando.
Comunicação Distribuída
Padrão MPI – Message Passing Interface
Message Passing Interface (MPI)
Interação Cliente Servidor
Objetos Distribuídos e Invocação Remota
Desenvolvimento de Aplicações Distribuídas
Sistemas Distribuídos Comunicação Objetos Distribuídos e RMI - Parte 2 - Instituto de Informática – UFG Verão 2005 Baseado em: Tanenbaum, Capítulo 2.
Invocação de Métodos Remotos RMI
Programação Concorrente
1 Comunicação Inter-Processos -> RMI -> RPC -> TCP -> UDP (Abstração de passagem de mensagem)
1 Arquitetura CORBA Repositório de Implementação Repositório de Interface cliente programa cliente proxy ORB Core ou invocação dinâmica servidor ORB Core.
Comunicação Entre Objetos Distribuídos
1 Comunicação Inter-Processos -> RMI -> RPC -> TCP -> UDP (Abstração de passagem de mensagem)
Comunicação Inter-Processos
Sincronização de Processos (5)
Sincronização de Processos (6) - Troca de Mensagens -
Mobilidade Cláudia Ribeiro.
Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB.
Sistemas Distribuídos
Middleware e Sistemas Distribuídos
INPE / CAP-315 Airam J. Preto, Celso L. Mendes Aula 27 (1) Programação com MPI Tópicos: Modelo de Programação Funções de Ambiente Funções Básicas.
Arquitetura CORBA e Objetos Distribuídos
Sistemas Distribuídos
Tópicos em redes e sistemas distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Web Services Uninorte Semana de Tecnologia da Informação
Chamada Remota de Procedimentos
Marcela Bezerra da Silva Cin - UFPE
Remote Method Invocation RMI
Concorrência e Java RMI
Administração e Integração de Redes em Sistemas Distribuídos
Sistemas Distribuídos Introdução. Conceito Coleção de múltiplos processos que executam sobre uma coleção de processadores autônomos interligados em uma.
Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB.
Algoritmos - Propriedades Desejáveis (1)
Tecgraf PUC-Rio maio de 2011 Principais conceitos de CORBA.
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
RMI x C# Remote Emilena Specht – 1113/01/9 2004/01
SISTEMAS OPERACIONAIS I
Java RMI João Gabriel (jggxm).
Processos.
RMI - JAVA.
Sistemas Distribuídos
Comunicação.
MPI - Message Passing Interface Mestrado em Matemática Computacional 2003.
Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB.
MPI – Message Passing Interface Algumas Funções. Funções básicas As 6 funções que permitem escrever muitos dos programas: MPI_Init -- inicia a computação.
RMI Objetos Distribuídos Luiz C. D´oleron SCJP
Linguagem de Programação IV Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Capítulo 4: Processos.
JR: Flexible Distributed Programming in an Extended Java Elmário Gomes Dutra Jr. Gustavo Romano.
Multiparadigma das Comunicações em Java para Grid Computing Fernanda R. Ramos Luiz Felipe Marco Eiterer Profº Alcides Calsavara, Ph.D.
Conceitos do Cliente Funcionamento Básico do Cliente Como Clientes acessam e usam Objetos Distribúidos.
Flávia Rainone - 1 Computação Paralela com CORBA.
Sistemas Distribuídos Nadilma Nunes Aula Inicial – Apresentação da disciplina.
Jorge Zavaleta PVM vs MPI. Introdução Objetivos do MPI Implementações e definições processos dinâmicos Contextos Operações não bloqueantes Portabilidade,heterogeneidade.
Sistemas Distribuídos Prof. Marcus Rodrigues
Leandro Clementino Almeida.  Anos 50 - Sistemas Operacionais tipo Lote:  Aumentar a capacidade de processamento de programas  Usuário ia ao computador.
Protocolos de Comunicação e Passagem de Mensagens
CURSO JAVA BÁSICO Módulo 9 – slide 1 Módulo 10 Threads.
SOCKET - É um canal de comunicação entre processos que estabelece uma conexão entre eles na forma de cliente-servidor. Por meio de sockets, os computadores.
Curso Superior em Redes de Computadores Camada de Aplicação Prof. Sales Filho.
Airam J. Preto , Celso L. Mendes
Transcrição da apresentação:

1 Middleware Marcellus Tavares

2 Roteiro Sistemas distribuídos Motivação Middleware  MPI  RMI Referências

3 Sistemas distribuídos “Coleção de computadores autônomos interligados através de uma rede de computadores e equipados com software que permita o compartilhamento dos recursos do sistema: hardware, software e dados" George Coulouris “Coleção de computadores independentes que se apresenta ao usuário como um sistema único e consistente” Andrew Tanenbaum

4 Motivação para Arquiteturas paralelas Performance Custo Disponibilidade e confiabilidade

5 Middleware [1/2] Camada que fornece um link entre aplicações distintas. Conjunto reusável e expansível de serviços e funções comumente necessários por parte de várias aplicações para funcionarem bem em um ambiente de rede. (NGI workshop, ’97)

6 Middleware [2/2] Facilita o desenvolvimento de aplicações distribuídas. ClienteServidor Middleware

7 Middleware - modelos Message-Oriented Middleware (MOM)  MPI Object-Oriented Middleware  RMI

8 O modelo de passagem de mensagens Um processo é (tradicionalmente) um PC + espaço de endereçamento Programas podem ter múltiplas threads compartilhando um único espaço de endereçamento. MPI é para a comunicação entre processos com espaços de endereçamento separados Comunicação inter-processos consistem de:  Sincronização  Movimentação de dados

9 Passagem de mensagens [Cooperative Operations] Os processos coordenam suas atividades através de trocas explícitas de mensagens (envio e recebimento) Comunicação e sincronização são combinadas Process 0 Process 1 Send(data) Receive(data)

10 Passagem de mensagens [One-Sided Operations] Acesso remoto a memória para escrita e leitura Só um processo precisa participar Comunicação e sincronização estão separados Parte do MPI-2 Process 0 Process 1 Put(data) (memory) Get(data)

11 O que é MPI ? Message-Passing Interface Especificação de uma biblioteca para a passagem de mensagens  Não é uma linguagem  Não é um produto ou uma implementação específica Desenhada para computadores paralelos

12 Por que usar MPI? MPI provê uma maneira poderosa, eficiente e portável de expressar programas paralelos. Possibilidade de desenvolvedores escreverem bibliotecas paralelas. MPI foi explicitamente desenhada para esse propósito

13 Exemplo Simples programa utilizando MPI_Send e MPI_Recv Na maioria dos sistemas paralelos os processos envolvidos na execução de um programa paralelo são identificados por inteiros não negativos.

14 MPI_Send Envia dados referenciados pelo buffer para o processo especificado pelo destination Int MPI_Send (void* buffer, int count, MPI_Datatype datatype, int destination, int tag, MPI_Comm communicator)

15 MPI_Recv Recebe os dados enviados pelo processo especificado pelo source e os armazena no buffer. Int MPI_Recv (void* buffer, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm communicator, MPI_Status* status)

16 Exemplo [Greetings 1/2] #include #include "mpi.h" main(int argc, char* argv[]) { int my_rank; /* rank of process */ int p; /* number of processes */ int source; /* rank of sender */ int dest; /* rank of receiver */ int tag = 0; /* tag for messages */ char message[100]; /* storage for message */ MPI_Status status; /* return status for */ /* receive */ /* Start up MPI */ MPI_Init(&argc, &argv); /* Find out process rank */ MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); /* Find out number of processes */ MPI_Comm_size(MPI_COMM_WORLD, &p);

17 Exemplo [Greetings 2/2] if (my_rank != 0) { /* Create message */ sprintf(message, "Greetings from process %d!", my_rank); dest = 0; /* Use strlen+1 so that '\0' gets transmitted */ MPI_Send(message, strlen(message)+1, MPI_CHAR, dest, tag, MPI_COMM_WORLD); } else { /* my_rank == 0 */ for (source = 1; source < p; source++) { MPI_Recv(message, 100, MPI_CHAR, source, tag, MPI_COMM_WORLD, &status); printf("%s\n", message); } /* Shut down MPI */ MPI_Finalize(); } /* main */

18 Considerações [Greetings] Saída se o programa fosse rodado com 4 processos Greetings from process 1 Greetings from process 2 Greetings from process 3 De uma forma mais geral na programação MIMD teríamos um programa para cada processo Na prática isso não é necessário  if/else em um único programa  SPMD (Single-program multiple-data)

19 Informações sobre o ambiente Duas questões logo são levantadas na programação paralela  Quantos processos estão participando dessa computação?  Que processo sou eu? MPI provê funções que respondem a essas perguntas  MPI_Comm_size: retorna o número de processos  MPI_Comm_rank: retorna o rank, número entre 0 e size-1 que identifica o processo

20 Conceitos Básicos Processos são postos em grupos Cada mensagem é enviada em um contexto e deve ser recebida nesse mesmo contexto O grupo e o contexto forma o que se chama de communicator Existe um communicator default cujo grupo contém todos os processos iniciais: MPI_COMM_WORLD

21 Tipos de dados MPI O tipo de dado MPI pode ser  Predefinido (MPI_INT, MPI_DOUBLE)  Tipos de dados derivados

22 MPI Tags Mensagens são enviadas junto com um inteiro definido pelo usuário chamado de tag As mensagens podem ser selecionadas pelo destinatário através da tag ou não. MPI_ANY_TAG

23 Operações coletivas em MPI São chamadas por todos os processos em um communicator MPI_BCAST MPI_REDUCE Em muitos algoritmos, SEND/RECEIVE podem ser substituídos por BCAST/REDUCE como uma alternativa para aumentar a simplicidade e eficiência

24 MPI_Bcast e MPI_Reduce

25 Exemplo: MPI_BCAST #include “mpi.h” void Get_data(float* a_ptr /*out*/, float* b_ptr/*out*/, int* n_ptr /*out*/, int my_rank /*in*/ ){ if (my_rank == 0){ printf(“Entre com a,b and n\n”); scanf(“%f %f $d”, a_ptr,b_ptr,n_ptr); } MPI_Bcast(a_ptr, 1, MPI_FLOAT, 0, MPI_COMM_WORLD); MPI_Bcast(b_ptr, 1, MPI_FLOAT, 0, MPI_COMM_WORLD); MPI_Bcast(n_ptr, 1, MPI_INT, 0, MPI_COMM_WORLD); }

26 Operações de redução Usados para combinar resultados parciais de todos os processos Diversos tipos de operações disponíveis int MPI_Reduce(void * operand /*in*/, void* result /*out*/, int count /*in*/, MPI_Datatype datatype /*in*/, MPI_Op operator /*in*/, int root /*in*/, MPI_Comm communicator /*in*/)

27 Operações pré-definidas para MPI_Reduce MPI_MAXMaximum MPI_MINMinimum MPI_PRODProduct MPI_SUMSum MPI_LANDLogical and MPI_LORLogical or MPI_LXORLogical exclusive or MPI_BAND Bitwise and MPI_BORBitwise or MPI_BXORBitwise exclusive or MPI_MAXLOCMaximum value and location MPI_MINLOCMinimum value and location

28 Exemplo Soma paralela MPI_Reduce(&resultado_local, &total, 1, MPI_FLOAT, MPI_SUM, 0, MPI_COMM_WORLD);

29 Object-Oriented Middleware Object Request Broker STUB OBJ SKEL SERVER

30 RMI Remote Method Invocation. Permite objetos Java invocar transparentemente métodos de outros objetos (que podem estar em máquinas diferentes – objetos remotos) Java RMI libera o programador de tratar de detalhes como endereçamento e codificação/ decodificação de mensagens

31 RMI

32 RMI - Implementação Módulo de comunicação  Protocolo request-reply Módulo de referência remota  realiza a tradução entre referências de objetos remotos e locais, e cria referências de objetos remotos (tabela de objetos remotos) Proxy (localizado no cliente)  marshaling de parâmetros, unmarshaling de resultados

33 RMI - Implementação Dispatcher (localizado no servidor) – recebe a requisição do módulo de comunicação e chama o método indicado na mensagem (methodId) Skeleton (localizado no servidor) – unmarshaling dos parâmetros, marshaling dos resultados

34 RMI - Implementação Geração das classes para proxies, dispatchers e skeleton  geradas pelo compilador de interfaces Binder  serviço que mantém uma tabela contendo os mapeamentos denomes textuais para referências de objetos remotos. (rmiregistry) Threads do servidor  para cada invocação remota é disparada uma thread no servidor (concorrência)

35 Referências 3%A3o_distribu%C3%ADda 3%A3o_distribu%C3%ADda Peter S. Pacheco Parallel Programming with MPI html html