Sistemas distribuídos Prof. Emiliano Monteiro Múltiplos processadores • São arquiteturas que possuem duas ou mais CPU interligadas e que funcionam em conjunto na execução de tarefas independentes ou no processamento simultâneo de uma mesma tarefa. Vantagens/Desvantagens • • • • • • Desempenho, pode ser obtido em dois níveis: • 1. Múltiplos processadores permitem a execução simultânea de diversas tarefas independentes, aumentando o throughput do sistema • 2. Múltiplos computadores permitem a execução de uma mesma tarefa por vários processadores simultâneamente (processamento paralelo) Escalabilidade: é a capacidade de adicionar novos processadores ao conjunto Relação custo/benefício: Permite utilizar CPUs convencionais interligadas por barramentos a custo inferiores de uma única CPU poderosa Tolerância a Falhas Disponibilidade Balanceamento de carga Tipos de Sistemas Operacionais Tipos de SO monotarefa Batch (lote) Multi processadores multitarefa Tempo compartilhado (time sharing) Tempo real (Real Time) Fracamente acoplado Fortemente acoplado Tipos de sistemas computacionais • SISD – Single Instruction Single Data • Sistemas que suportam uma única seqüência de instruções e apenas uma seqüência de dados – a maioria dos computadores pessoais e servidores esta nesta categoria • SIMD – Single Instruction Multiple Data • Sistemas que tratam uma única seqüência de instruções e múltiplas entradas de dados, trabalham com dados escalares e portanto processam vetores seqüêncialmente (Família de computadores CRAY) • MISD – Multiple Instruction Single Data • Permite Múltiplas seqüências de instruções e uma única seqüência de dados. Não existe, até o momento nenhum computador desenvolvido com essa arquitetura!! • MIMD – Multiple Instruction Multiple Data • Tratam múltiplas seqüências de instruções e múltiplas seqüências de dados, onde se enquadram os sistemas com múltiplos processadores e Sistemas Distribuídos Sistemas Fracamente Acoplados e Fortemente Acoplados • São uma classificação das arquiteturas MIMD • Fortemente Acoplados: • Os processadores compartilham uma única memória principal e são controlados por apenas um único sistema operacional • Fracamente Acoplados: • Caracterizam-se por possuir dois ou mais sistemas computacionais independentes, conectados por uma rede de comunicação, tendo cada um seus próprios processadores, memória, SO, etc. Tabela comparativa Características 1 Espaço de endereçamento Sistemas Fortemente Acoplados Centralizado 2 Comunicação entre processadores Muito Rápida 3 Arquitetura de hardware 4 Sistema Operacional 5 Cópias do sistemas operacional 6 Programação paralela 7 Número de processadores 8 Escalabilidade 9 Disponibilidade 10 Administração 11 Custo de software 12 Intercomunicação 13 Segurança Sistemas Fracamente Acoplados Distribuído Lenta Complexa Mais simples Homogêneo Geralmente heterogêneo Várias cópias, uma para cada Existe apenas uma cópia sistema Mais fácil Mais difícil Centenas Não existe limite Baixa Alta Baixa/Média Média/Alta Simples Complexa Menor Maior Proprietária Padronizada Centralizada Distribuída Subdivisões das arquiteturas MIMD - Multiple Instruction Multiple Data M IM D S istem asF ortem ente S istem asF racam ente A coplados A coplados S M P N U M A C luster S O R S D Subdivisões das arquiteturas MIMD • SMP – Symmetric Multiprocessors: possuem dois ou mais processadores compartilhando um único espaço de endereçamento e gerenciados por apenas um SO • NUMA – Non-Uniform Memory Access: o tempo de acesso a memória dependente da localização física do processador • Em ambos os casos anteriores (SMP/NUMA) é implementada a simetria dos processadores, ou seja, todos os processadores realizam as mesmas funções. As diferenças entre ambos esta no desempenho das operações de acesso a memória Subdivisões das arquiteturas MIMD • Clusters • São formados por nós conectados por uma rede de interconexão de alto desempenho dedicada. Cada nó da rede é um membro do Cluster e possui seus próprios recursos. • Cada membro do cluster possui seu próprio espaço de endereçamento individual e a comunicação entre os membros se faz na maioria das implementações pelo mecanismo de troca de mensagens • As conexões de rede geralmente são: Gigabit Ethernet, Fiber Channel e ATM • A rede de conexão é restrita ao cluster Subdivisões das arquiteturas MIMD • SOR – Sistemas Operacionais de Rede • Cada componente deste sistema possui seus próprios recursos de hardware, como processadores, memória, IO, etc • Os nós são totalmente independentes dos demais, sendo interconectados por uma rede comunicação de dados formando uma rede de computadores. • Utilizam redes locais como: Ethernet, Token Ring, Token Bus, Wireless. • Cada nó possui seu próprio Sistema Operacional • Na maioria das vezes é utilizado os sistema operacional TCP/IP na comunicação entre os hosts Subdivisões das arquiteturas MIMD • Sistemas Distribuídos: • São um conjunto de sistemas autônomos, interconectados por uma rede de comunicação e que funcionam como se fosse um sistema fortemente acoplado. • Cada componente do sistema possui seus próprios recursos, como processador, memória, SO, etc. • É um sistema fracamente acoplado pelo aspecto de hardware porém fortemente acoplado pelo aspecto de software. É um conceito chamado de Imagem única do Sistema. • Fornecem: Tolerância a Falhas e Transparência. • Exemplo de sistema operacional distribuído: Amoeba Sistemas Distribuídos • São uma coleção de processadores fracamente acoplados entre si por uma rede de comunicação. • Do ponto de vista de um processador específico em um sistema distribuído, o restante dos processadores e seus recursos são remotos, enquanto seus próprios recursos são locais Conceitos • Sistema Operacional de Rede • Sistemas Distribuídos • Rede x SD Redes de computadores Sistemas Distribuídos a) Usuário devem realizar um login (ou logon) com uma máquina, submeter explicitamente suas tarefas remotas e movimentar explicitamente seus arquivos. a) Existem diversos computadores autônomos (o usuário não tem conhecimento destes). b) Cabe ao sistema operacional selecionar recursos, localizar objetos, e esconder do usuário detalhes de implementação e funcionamento do sistema. Sistemas Distribuídos • “Um SD consiste de processos concorrentes acessando recursos distribuídos, os quais podem ser compartilhados ou replicados, através de passagem de mensagem em um ambiente de rede.” • “Um SD é uma coleção de computadores autônomos, ligados por uma rede, com software projetado para produzir uma facilidade de computação integrada.” (Coulouris, Dollimore, Kindberg) Quanto a localização de recursos • Sistemas operacionais de rede: os usuários sabem da existência das várias máquinas da rede, podem abrir sessões em máquinas remotas e transferir dados de uma máquina remota para a máquina local • Sistemas operacionais distribuídos: os usuários não precisam saber da existência das máquinas. Os recursos são usados da mesma maneira que os locais Motivos da existência de S.D. • Compartilhamento de recursos • Diminuição do tempo de processamento • Se os programas forem divididos em partes, estas partes podem ser executadas em máquinas diferentes • Confiabilidade • Em caso de defeito de um computador os outros continuam trabalhando, os computadores de um SD são autônomos • Comunicação • Permite que usuários de diferentes computadores possam trocar dados. Mensagens são trocadas entre computadores de maneira similar as trocas de mensagens entre processos Topologias E A A B D C C E Barramento B D Estrela E A B E A C Mista C Anel D B D A B C D E Topologias A A B B C E D Totalmente conexa A B C E D Árvore F G C D E Parcialmente conexa Características diversas • As seguintes características podem se apresentar juntas ou em separado, nem sempre um SD possui todas elas! • • • • • • • • • • • Suporte ao modelo cliente servidor Suporte a comunicação Suporte a multiprogramação, threads, etc Suporte a nomeação Sincronização Consistência e replicação Tolerância a falhas Segurança Objetos distribuídos Sistemas de arquivos distribuídos Transparência (de acesso, de localização, etc..) Comunicação em um SD • Via protocolos estruturados em camadas (TCP/IP, por exemplo) • Suporte RPC (remote procedure call) • Invocação a objetos remotos • Comunicação baseada em troca de mensagens • Comunicação baseada em fluxos Características Importantes Nomeação • Resolução de nomes • DNS • Localização de objetos Sincronização • Sincronização de clock • Estado global • Exclusão mútua Consistência e replicação • Sistemas centrados em dados • Protocolos para distribuição de dados Características Importantes Tolerância a falhas • Confiabilidade de: • • • • • Processos clientes Processos servidores Protocolos Meios de comunicação Hardware Características Importantes Segurança • Canais seguros • Controle de acesso • Gerenciamento de segurança • Kerberos Aplicações distribuídas... Motivos de uso. • Os dados usados pelas aplicações estão espalhados pela rede • Os dados necessários estão localizados em vários computadores • A computação é distribuída • O processamento depende de várias CPUs para resolver o problema • Os usuários estão distribuídos • Os usuários podem estar localizados em vários locais Problemas dos ambientes distribuídos • Comunicação • Algumas vezes lento conforme a carga aumenta • Falhas • Objetos podem falhar separadamente ou a rede pode ficar particionada • Segurança • Apresenta maiores desafios que os ambientes centralizados (Tipo C/S em LAN ou Terminais Burros) Objetos Distribuídos • São sistemas nos quais todas as suas entidades (partes) são modeladas como Objetos. Características Importantes Sistemas Distribuídos • • • • Compartilhamento de recursos • Impressoras, HD - Diminuir os custos e por questões de segurança. • Servidor de Arquivos • Recursos encapsulados em um computador da rede. Sistemas Abertos • Não proprietários, interoperáveis com arquiteturas distintas Concorrência • Diversos processos coexistem em um único computador e são executados concorrentemente Escalabilidade • É a capacidade que um SD apresenta de poder adaptar-se facilmente a uma carga crescente de recursos e serviços. Características Importantes Sistemas Distribuídos • Tolerância à Falhas • Continuação de funcionamento do sistema, apesar da ocorrência de uma falha em um dos seus componentes • Redundância de Hardware • Recuperação por Software • Disponibilidade do Sistema • Medida da proporção de tempo que o sistema está disponível para os usuários. • Confiabilidade • Probabilidade que o sistema continuará a funcionar dentro de uma escala de tempo. Características Importantes Sistemas Distribuídos • Transparência • Parece não existir, quando na verdade existe. • Tipos de Transparência • Transparência de Acesso • Ocultação do uso de comunicação para acessar recursos remotos. Ex. Clicar um ícone • Transparência de Localização • Usuários não têm que saber a localização dos recursos remotos Características Importantes Sistemas Distribuídos • Tipos de Transparência • Transparência de Concorrência • Usuário não está ciente da existência de acesso simultâneo à recursos remotos. • Transparência de Replicação • Múltiplas instâncias de recursos são usados, mas SD oculta qualquer diferença entre recursos replicados, ou não replicados. • Transparência de Falha • SD oculta os efeitos de falhas parciais. • Transparência de performance • SD é reconfigurado para melhorar a performance na medida que a carga varia sem o usuário perceber a configuração. Características Importantes Sistemas Distribuídos • Tipos de Transparência • Transparência de Migração • Potencial para realocar recursos dinamicamente sem que os usuários estejam cientes do movimento de recursos • Transparência de escala • Oculta a expansão sem mudar a estrutura do sistema. Arquitetura Cliente/Servidor • Modelo conceitual, adotado para disciplinar e orientar o projeto e a implementação de aplicações que estão funcionalmente separadas em processos distintos. • Uma aplicação distribuída é conceitualmente modelada para ser composta por dois processos cooperantes: o processocliente e o processo servidor. • Componentes da computação distribuída: • • • • • • Controle da Concorrência Rede de Computadores Chamadas Remotas a Procedimentos Serviços de Nomes e Diretórios Distribuídos Sistemas de Arquivos Distribuídos SGBDs Cliente/Servidor Referências Bibliográficas • Sistemas Distribuídos – Conceitos e Projetos. Coulouris, George. [et al]. 5ª. Ed. Porto Alegre. Bookman, 2013. • Sistemas Distribuídos – Princípios e paradigmas. 2ª ed. Tanenbaum, Andrew S. Steen, Maarten Van. São Paulo. Pearson Prentice Hall, 2007. • Tecnologia de sistemas distribuídos. Marques, José Alves. Guedes, Paulo.