Slide01 Introdução e Conceitos de Sistemas Distribuídos SIST706 Sistemas Distribuídos 2013/1 Prof. Jéfer Benedett Dörr @: prof.jefer@gmail.com profjefer.wordpress.com
Sistema Distribuído Definição de Andrew Tanenbaum é uma "coleção de computadores independentes que se apresenta ao usuário como um sistema único e consistente" Definição de George Coulouris diz que "Sistema Distribuído é uma 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"
Definição curiosa Você sabe que existe um sistema distribuído quando a falha de um computador que você nunca ouviu falar impede que você faça qualquer trabalho - Leslie Lamport
Exemplos Banco e agências Internet Computação Móvel e Ubíqua Top 500 supercomputadores P2P Napster
Sistemas multiusuários centralizados Mainframes Alto custo Baixa flexibilidade Baixa escalabilidade Baixa tolerância a falhas
Linux Terminal Server Project (LTSP) (LTSP) é um projeto baseado em GNU/Linux que agrupa várias ferramentas e protocolos, com a finalidade de proporcionar um ambiente de trabalho remoto.
Multiterminal
Multiterminal
Cluster Um cluster, ou aglomerado de computadores, é formado por um conjunto de computadores, que utiliza um tipo especial de sistema operacional classificado como sistema distribuído. Muitas vezes é construído a partir de computadores convencionais (personal computers), os quais são ligados em rede e comunicam-se através do sistema, trabalhando como se fossem uma única máquina de grande porte. Há diversos tipos de cluster. Um tipo famoso é o cluster da classe Beowulf, constituído por diversos nós escravos gerenciados por um só computador.
Cluster * Cluster Knoppix * SO local *Avatar: Cluster de renderização 40.000 CPUS Top200 Supercomputadores Ubuntu
Cluster Específico
GRID Heterogeneidade Recursos de diferentes organizações são reunidos para permitir a colaboração de um grupo de pessoas ou instituições PlanetLab: http://www.planet-lab.org
NUMA
NUMA
Processadores *Mais núcleos ou núcleos mais rápidos? *Existe uma vantagem real em ter um processador com vários núcleos? *Hyper-threading: um núcleo real, dois núcleos lógicos *Muitos núcleos gastam menos ou mais energia? * I7 Lynnfield serie 8XX (HT) * Nvidia Tegra 3 (Quad-Core com um quinto núcleo para economia de bateria)
Multiprogramação Processo X Thread P0, P1, P2...
Programação Distribuída CORBA (abreviado de Common Object Request Broker Architecture) é a arquitetura padrão criada pelo Object Management Group para estabelecer e simplificar a troca de dados entre sistemas distribuídos heterogêneos. Message Passing Interface (MPI) é um padrão para comunicação de dados em computação paralela. Existem várias modalidades de computação paralela, e dependendo do problema que se está tentando resolver, pode ser necessário passar informações entre os vários processadores ou nodos de um cluster, e o MPI oferece uma infraestrutura para essa tarefa. O OpenMP (do inglês Open Multi-Processing, ou Multi-processamento aberto) é uma interface de programação de aplicativo(api) para a programação multiprocesso dememória compartilhada em múltiplas plataformas. Permite acrescentar simultaneidade aos programas escritos em C, C++ e Fortran sobre a base do modelo de execução fork-join.
Programação Distribuída Chamada remota de procedimento (RPC, acrônimo de Remote Procedure Call) é uma tecnologia de comunicação entre processos que permite a um programa de computadorchamar um procedimento em outro espaço de endereçamento (geralmente em outro computador, conectado por uma rede) O RMI (Remote Method Invocation) é uma interface de programação que permite a execução de chamadas remotas no estilo RPC em aplicações desenvolvidas em Java. É uma das abordagens da plataforma Java para prover as funcionalidades de uma plataforma de objetos distribuídos. O XML-RPC é um protocolo de chamada de procedimento remoto (CPR) que utiliza XML para codificar suas chamadas e HTTP como um mecanismo de transporte.
Network File System - NFS NFS é um sistema de arquivos distribuído que permite aos usuários acessar arquivos e diretórios localizados em computadores remotos e tratá-los como se fossem locais. O protocolo Network File System é especificado nas seguintes RFCs: RFC 1094, RFC 1813 e RFC 3530.
Heterogeneidade Computação Ubíqua ou pervasiva: termo usado para descrever a onipresença da informática no cotidiano das pessoas.
Sistemas distribuídos não são redes A computação distribuída não é o mesmo que redes de comunicação: As redes preocupam-se com o envio de mensagens de um ponto A para outro B e não com o que se faz com a mensagem A computação distribuída assume que existe alguma forma de enviar a mensagem (o transporte da mensagem é assegurado pela rede de comunicação) preocupa-se com as propriedades dessas mensagens e como construir um sistema com o uso de mensagens
Evento da Área http://sbrc2013.unb.br/ O Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos (SBRC) é um evento anual promovido pela Sociedade Brasileira de Computação (SBC) e pelo Laboratório Nacional de Redes de Computadores (LARC). Ao longo dos anos, o SBRC tornouse o mais importante evento científico nacional em redes de computadores e sistemas distribuídos do país, e um dos mais concorridos em Informática.
Bibliografia
Exercício 1. O que é um Sistema distribuído? Cite um exemplo diferente dos apresentados no slide. Cite outro exemplo que SD do dia a dia. 2. Quais os principais objetivos de "distribuir um sistema? 3. Quais diferenças entre Mainframe e LTSP? 4. Qual motivo de os atuais processadores terem mais de um núcles em um única pastilha? Em que situação tem vantagem ter 2 núcleos de 1.2 MHz no lugar de um de 2.4 MHz? O inverso pode ser verdade? 5. Para que serve o NFS? Tem alguma vantagem? 6. Qual a diferença entre OpenMP e MPI? Podem ser usadas juntas? 7. O que é Beowulf?