Sistemas Distribuídos OBJETIVO O que é uma Aplicação Distribuída? Uma aplicação que executa simultaneamente em várias máquinas Um grupo de processos que executa em máquinas distintas e trabalha de forma coordenada e cooperativa para realizar uma determinada tarefa aplicação centralizada aplicação distribuída ... máquina 1 máquina 1 máquina 2 máquina n Sistema Distribuído conjunto de nós de processamento independentes heterogêneos características e objetivos distintos interligados (rede de comunicação) interagem e cooperam Porquê? Distribuição Geográfica (organizações físicas distribuídas) Extensibilidade, modularidade Partilha de recursos Maior disponibilidade (replicação) Maior desempenho (carga computacional distribuída) Condicionantes da Evolução Tecnologia Redes de computadores Computadores pessoais Sistemas abertos Arquitetura de Computadores Requisitos Utilizadores finais Programadores Gestores Evolução das Redes de Computadores Terminais ligados ao mainframe Interligação dos sistemas centrais Oferta de comunicação de dados pelos operadores públicos X.25; RDIS; ATM Redes locais Internet Wireless Interligação de TODOS os dispositivos onde quer que estejam + distribuição = Computação ubíqua Evolução dos Computadores Pessoais Equipamentos simples e autónomos Baixo custo Interface atraente e intuitiva Mercado dominado pela Wintel: Windows + Intel + Office Miríade de aplicações mas… para que servem exatamente os computadores Evolução da Arquitetura de Computadores Grande aumento da: potência de cálculo, memória, e disco Utilização de componentes de h/w standard Multiprocessamento económico e eficaz Alguma uniformização do s/w de sistema SO: Windows, Unix, IBM MVS BD’s: Oracle, Informix,Sybase, SQL-Server, DB2 Redução de equipamentos centrais: downsizing custo e dimensão, modularidade e extensibilidade dos servidores Consequências da Evolução Tecnológica Grande disponibilidade da tecnologia (clientes, servidores, e interligações) Distribuição da tecnologia pelo mundo Grande descoordenação e heterogeneidade Sistema compatíveis com a distribuição e modo de vida Requisitos dos Utilizadores Transparência Partilha de informação Melhoria de comunicação entre pessoas Segurança e proteção Fiabilidade e disponibilidade Requisitos dos programadores Interfaces normalizadas Ambientes de programação independentes das características do hardware e das redes Controle sobre o desempenho, fiabilidade, disponibilidade, segurança Requisitos dos Gestores Investimento reduzido Modularidade e extensibilidade na evolução do sistema proteção do investimento anterior Adequação às equipas técnicas Otimização da gestão dos recursos Desempenho, disponibilidade, fiabilidade, segurança Modelos de Sistema de RV Multi-Usuário Acesso ao Mundo Virtual Distribuído Funcionamento Geral A estrutura de um sistema distribuído pode ser visualizada em camadas. A camada mais interna corresponde ao hardware, que suporta todas as outras camadas do software. Em seguida vem o núcleo, que é a primeira camada de software a envolver o hardware, sobre esse núcleo (kernel) situa-se o sistema operacional propriamente dito, que fornece o suporte necessário à execução de programas. E, em seguida, tem-se a camada mais externa, correspondente ao nível de aplicação. Funcionamento Geral Em um sistema distribuído, a existência de computadores autônomos é transparente (não visível) para o usuário, que não percebe a existência de múltiplos processadores. Um sistema distribuído é um caso especial de rede, cujo software lhe fornece maior grau de coesão e transparência. Desta forma, a distinção entre uma rede e um sistema distribuído está no software (especialmente no sistema operacional) não no hardware. Funcionamento Geral Os sistemas distribuídos permitem que uma aplicação seja dividida em diferentes partes, que se comunicam através de linhas de comunicação, e cada parte podendo ser processada em um sistema independente; “Sistema Distribuído é aquele que roda em um conjunto de máquinas sem memória compartilhada, máquinas que mesmo assim aparecem como único computador para seus usuários” (Lamport, 1978). Vantagens do Sistema Distribuído Economia: Os microprocessadores oferecem uma melhor relação preço/performance do que a oferecida por mainframes. Velocidade: Um sistema distribuído pode ter um poder de processamento maior que o de qualquer mainframe. Confiabilidade: Se uma máquina sair do ar, o sistema como um todo pode sobreviver. Crescimento incremental: O poder computacional pode crescer gradualmente. Vantagens do Sistema Distribuído(cont.) Compartilhamento de dados: permite que mais de um usuário acesse uma base de dados comum. Compartilhamento de dispositivos: permite que mais de um usuário possa ter acesso a vários periféricos. Flexibilidade: Espalha a carga de trabalho por todas as máquinas disponíveis ao longo da rede. Desvantagens do Sistema Distribuído Software: Existência de software para sistemas distribuídos é pequena até o momento; Redes: As redes de comunicação podem saturar ou causar outros problemas; Segurança: Fácil acesso a dados também se aplica a dados confidenciais (secretos); Sistemas Distribuídos X Sistemas Centralizados Item Compartilhamento de dados Descrição Permite vários usuários acessarem uma base de dados comum Compartilhamento de dispositivos Permitem vários usuários acessarem recursos caros como impressoras coloridas Comunicação Torna a comunicação entre humanos mais fácil através de mensagens Economia Microprocessadores mainframes oferecem custo/benefício maior do que Velocidade Um sistema distribuído pode ter maior poder computacional do que um mainframe Distribuição Inerente Algumas aplicações envolvem máquinas espacialmente separadas Flexibilidade Espalha a carga de trabalho através das máquinas disponíveis da maneira mais efetiva em relação ao custo computacional Crescimento incremental Poder computacional incrementos pode ser adicionado com pequenos