1 Sistemas Distribuídos 5º Semestre Aula 1 ProfSistemas Distribuídos 5º Semestre Aula 1 Prof. Carlos Vinícius SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA SENAC PELOTAS
2 Introdução Definição de Sistemas Distribuídos“Um sistema distribuído é uma coleção de computadores independentes que aparecem para os usuários do sistema como um único computador.” (Tanenbaum) Conceitos relacionados a HW e SW Hardware – Máquinas autônomas Software – os usuários pensam do sistema como um único computador
3 Introdução Definição (2) de Sistemas Distribuídos“Um sistema em que componentes de hardware e software localizados em computadores em rede se comunicam e coordenam suas ações por passagem de mensagens.” (Coulouris)
4 Introdução O que é um Sistema Distribuído?É uma coleção de computadores independentes que aparenta ser um único computador aos seus usuários. Se baseia em conceitos relacionados a hardware e software, respectivamente. Exemplo: Rede com estações de trabalho e processadores standalone alocados por demanda com um sistema de arquivos unificado. Sistema bancário com terminais espalhados geograficamente, diferentes plataformas e um único banco de dados.
5 Introdução Por que ter sistemas distribuídos?SDs permitem, através da comunicação entre componentes, a integração de sistemas diversos Ex.: integração de sistemas embarcados, como um relógio com alarme se coordenando com um dispositivo de agenda/calendário, sistema bancário com vários dispositivos e com terminais espalhados geograficamente e em um único banco de dados, rede com estações de trabalhos e processadores alocados por demanda com um sistema de arquivos unificado
6 Introdução Como se tornou possível o surgimento desses sistemas?Computadores mais rápidos e baratos e o surgimento de redes de computadores de alta-velocidade...
7 Introdução Quais implicações esta definição (2) tem em uma implementação? MUDANÇA DE PARADIGMA... Controle central Nomeação global Consistência global Execução sequencial Vulnerabilidade Informação local Localização fixa Homogeneidade Autonomia Nomeação federada (nome distribuido por partes) Consistência fraca Execução concorrente Tolerância a falha Informação remota Migração Heterogeneidade
8 Introdução Ex.: SD Web Servidor de Arquivos Servidor DNS Servidor BDServidor Web Internet Servidor DNS Cliente “browser” Servidor DNS
9 World Wide Web – Um Sistema Distribuído SimplesCliente-Servidor No cliente (browser) novos formatos de documentos (não necessariamente HTML) podem ser manipulados por plugins ou helpers sem mudar o software do browser O servidor apenas entrega documentos e não se preocupa com interfaces de usuário ou formatos de documentos
10 HTTP (HyperText Transfer Protocol)Construído usando conexões TCP Socket Protocolo pedido-resposta: Cliente inicia com um pedido (GET) Servidor responde com o documento solicitado ou um erro Content types identificam tipos de documentos para o browser HTTP 1.0 – pedido separado para cada recurso HTTP 1.1 – enfileira os pedidos (“pipeline”), que são servidos por uma única conexão
11 Sistemas DistribuídosVantagens: Economia: melhor relação custo/benefício Eficiência: maior poder total de computação Distribuição inerente: máquinas espacialmente separadas Confiabilidade: se uma máquina falha, o sistema como um todo pode ainda sobreviver Crescimento incremental: poder computacional adicionado em incrementos
12 Sistemas DistribuídosDesvantagens: Pouco software disponível Networking: a rede pode causar problemas Segurança: várias portas de acesso
13 Desempenho de Sistemas DistribuídosUso de múltiplos recursos de processamento Como se dá esta sintonia??? Algoritmos de aplicações – uso de concorrência Plataforma de distribuição – gerência de threads Sistema local – suporte de comunicação Rede – aumento de velocidade
14 Convergência Digital Comunicações Processamento de InformaçõesComputação em Rede Telefonia Computação Sistemas Distribuídos Software e hardware para diversão e informação Difusão de conteúdo em Rede {Filmes, referências, ficção, música, P2P...} Mídia
15 Desafios Heterogeneidade Abertura Segurança Tratamento de falhasConcorrência Transparência
16 Objetivos de um SD Conectar, de forma transparente, usuários a recursos que estão distribuídos: Recursos são: impressoras, arquivos, redes, computadores, serviços, banco de dados... Ser aberto, oferecendo serviços de acordo com regras padronizadas que descrevem a sintaxe e a semântica do serviço; Ser escalável.
17 Objetivos Vantagens de sistemas distribuídos sobre sistemas centralizados Lei de Grosch – O poder de computação de um computador é proporcional ao quadrado do seu preço. (aplicável a mainframes) No caso de microprocessadores, é mais barato se comprar vários processadores e montá-lo em um sistema multi-processador. (preço) Em alguns casos, é teoricamente impossível de se construir um computador centralizado que possa ser comparado a um sistema distribuído com uma grande quantidade de processadores. (velocidade)
18 Objetivos Vantagens de sistemas distribuídos sobre sistemas centralizados (CONT.) Algumas aplicações são inerentemente distribuídas – sistema de uma cadeia de lojas, jogos ou outras aplicações cooperativas. (distributividade inerente) Maior confiabilidade, útil em aplicações de alto risco. (confiabilidade) Crescimento incremental – acaba com necessidade da compra de mainframes cada vez maiores, agora o sistema pode ser trocado aos poucos. (crescimento incremental)
19 Objetivos Vantagens de sistemas distribuídos sobre micros independentes Compartilhamento de dados. (colaboração e preço) Compartilhamento de dispositivos. (preço) Comunicação Mistura de computadores pessoais e compartilhados pode permitir uma distribuição de tarefas mais eficiente. (flexibilidade)
20 Objetivos Desvantagens de sistemas distribuídosSoftware – sistemas operacionais, linguagens de programação e aplicações. Comunicação – tratamento e recuperação de mensagens. Melhoria da rede pode acarretar em custos altos. Segurança – compartilhamento de dados implica em esquemas especiais para proteção de dados sigilosos. IDEAL – Pessoas trabalhando juntas e compartilhando informações sem se preocupar com distribuição física dos dados, máquinas e outros usuários.
21 Conceitos de Hardware Tanenbaum propõe a divisão de máquinas MIMD (múltiplas instruções e múltiplos dados) em multiprocessadores, que usam memória compartilhada e multicomputadores que possuem somente memória própria. Exemplos de multiprocessadores e multicomputadores. Outra subdivisão dessa classificação é em sistemas com barramento ou switches (ligações ponto-a-ponto). Outro ponto da taxonomia de Tanenbaum é a caracterização dos sistemas pelo grau de ligação entre as máquinas, que podem ser fortemente acopladas ou fracamente acopladas. Máquinas fortemente acopladas possuem um baixo retardo no envio de mensagens e uma alta taxa de transmissão, o oposto de máquinas fracamente acopladas. Geralmente, sistemas fortemente acoplados são usados como sistemas paralelos, trabalhando em um único problema enquanto que sistemas fracamente acoplados são utilizados como um sistema distribuído, trabalhando em diversos problemas. Geralmente multiprocessadores são sistemas fortemente acoplados enquanto que multicomputadores são sistemas fracamente acoplados.
22 Conceitos de Hardware Multiprocessadores baseados em barramentoConsiste em um número de CPUs (que pode ter alguma memória local – cache) ligadas através de um barramento. Sem caches locais, o barramento tende a ser sobrecarregado rapidamente. Solução: adicionar caches locais. Novo problema: A coerência dos dados armazenados em cada cache é fundamental.
23 Conceitos de Hardware Multiprocessadores baseados em barramentoCache write-trough: Toda escrita na cache acarreta em escrita na memória. Escritas sempre geram tráfego no barramento, enquanto que leituras só geram tráfego quando a palavra não está na cache (cache miss). Para manter a consistência, as outras caches escutam o barramento e invalidam as posições que são escritas por outras caches na memória (snoopy caches). Um design deste tipo é coerente e invisível ao programador. É um esquema difícil de funcionar com um grande número de processadores.
24 Conceitos de Hardware Multiprocessadores com switchPodem ser usados com barras cruzadas ou com pontos de cruzamento. Memórias são localizadas de um lado e os processadores do outro. Caminho em uma comunicação é switched e a memória em questão tem o acesso bloqueado para os outros processadores. Número de switches pode tornar custo do sistema proibitivo. Rede ômega diminui número de switches necessários de n2 para log2n. O retardo em redes ômegas com muitos níveis pode se tornar considerável, ou o seu custo caso switches ultra-rápidos sejam utilizados.
25 Conceitos de Hardware Multiprocessadores com switchSolução: construir um sistema que use hierarquia de memórias. Um design deste tipo é o NonUniform Memory Access (NUMA) onde cada CPU tem uma memória local além de memórias que servem a várias CPUs. O retardo diminui, mas a localização de software se torna crucial para o bom funcionamento do sistema. Conclusão: construir um grande sistema de multiprocessadores fortemente acoplados com memória compartilhada é possível, mas é muito caro e complicado.
26 Conceitos de Hardware
27 Conceitos de Hardware Multicomputadores baseados em barramentoConjunto de CPUs com memória local trocando mensagens através de um barramento. Rede local ou CPUs conectadas com um barramento rápido.
28 Conceitos de Hardware Multicomputadores com switchCPUs tem um certo número de conexões para outras CPUs e mensagens são trocadas através de CPUs que intermediam a comunicação quando necessário. Abaixo estão as topologias de grid e hipercubo. No grid, número de conexões e número máximo de passos em uma comunicação cresce com a raiz quadrada do número de CPUs enquanto que no hipercubo esse número cresce com o logaritmo do tamanho. Atualmente já são usados grids com dezenas de milhares CPUs. A Teragrid conecta milhares de computadores usando uma rede de 40 Gb/s.
29 Conceitos de Hardware Multicomputadores com switch
30 Conceitos de Software A imagem que o sistema apresenta aos usuários é quase que completamente determinada pelo sistema operacional. Software fracamente acoplado (loosely-coupled) permite que máquinas e usuários sejam fundamentalmente independentes dos outros. Exemplo: LAN. Software fortemente acoplado (tightly-coupled) funciona como uma única máquina. Exemplo: Computador multiprocessador que executa um programa de xadrez em paralelo.
31 Conceitos de Software Existem 8 possíveis combinações de hardware e software, entretanto somente quatro são distinguíveis pelos usuários já que os mesmos não tem a noção de qual tecnologia de interconexão está sendo utilizada (com barramento ou switches). Das 4 opções restantes, a combinação hardware fortemente acoplado (tightly-coupled) e software fracamente acoplado (loosely-coupled) não faz sentido, já que se estaria indo de encontro ao objetivo principal da construção de um SD.
32 Conceitos de Software O que é um sistema aberto e quais os benefícios que a abertura provê? Um sistema aberto é um sistema projetado e implementado de acordo com as regras sintáxicas e semânticas padronizadas (normalmente completas e neutras) Os benefícios são: interoperabilidade (diferentes implementações de sistemas ou componentes trabalhando juntas), portabilidade (executa em diferentes sistemas) e flexibilidade (facilidade para acionar ou trocar componentes do sistema).
33 Conceitos de Software Sistemas Operacionais de RedeLoosely coupled – comunicação é explicitamente solicitada pelo usuário e se dá através de troca de mensagens. A distribuição do sistema é clara para o usuário. rlogin (ssh), rcp (scp). Servidores de arquivos fornecem arquivos a máquinas clientes. Usuários diferentes tem visões diferentes do sistema, devido a diferenças em como os sistemas de arquivo locais estão organizados, quais dispositivos locais as máquinas possuem, etc.
34 Conceitos de Software Sistemas Operacionais de RedeMáquinas podem rodar diferentes versões de um mesmo SO ou até diferentes SOs desde que os protocolos de comunicação e serviços sejam usados por todas as máquinas. A “coordenação” (mínima) de serviços entre as máquinas é feita através a aderência aos protocolos.
35 Conceitos de Software Sistemas Distribuídos VerdadeirosAs vezes são chamados de sistemas operacionais distribuídos. Software fortemente acoplado (tightly-coupled) em um hardware fracamente acoplado (loosely-coupled). O objetivo é a criação de uma ilusão para os usuários que o sistema de multicomputadores funciona como uma grande máquina de tempo compartilhado. As vezes são referenciados como sistemas de imagem única ou uniprocessador virtual.
36 Conceitos de Software Sistemas Distribuídos VerdadeirosCaracterísticas de SDs: Sistema de comunicação interprocessos único, independente se os dois processos estão localizados na mesma máquina ou não. Esquema de proteção global. Gerenciamento de processos único, isto é, como eles são criados, destruídos, iniciados ou parados. A ideia usada nos sistemas operacionais de rede de se estabelecer protocolos para a comunicação cliente-servidor não é suficiente. Deve haver um único conjunto de chamadas de sistema em todas as máquinas e as chamadas devem ser projetadas levando em conta o ambiente distribuído.
37 Conceitos de Software Sistemas Distribuídos VerdadeirosCaracterísticas de SDs: Sistema de arquivos deve ter a mesma visão e regras em todas as máquinas. Segurança deve ser implementada em relação aos usuários e não as máquinas. Geralmente, o mesmo núcleo (Kernel) roda em todas as máquinas, já que os mesmos implementam as mesmas funções e chamadas. Entretanto cada núcleo pode ter um controle razoável sobre os recursos locais, por exemplo, no gerenciamento de memória, swapping, ou até escalonamento de processos, no caso de uma CPU possuir mais de um processo sendo executado.
38 Conceitos de Software Sistemas Multiprocessadores de Tempo Compartilhado Software fortemente acoplado (tightly-coupled) em um sistema fortemente acoplado (tightly-coupled). Exemplo: multiprocessadores rodando Unix. Implementação mais simples que um verdadeiro sistema distribuído devido ao projeto do SO poder ser centralizado. Único sistema de arquivos, e fila de execução, que é mantida em um espaço de memória compartilhada. Somente uma cópia do SO é executada, ao contrário dos outros dois tipos de sistema.
39 Conceitos de Software Sistemas Multiprocessadores de Tempo Compartilhado Como nenhuma CPU possui memória local e todos os programas são armazenados em memória global compartilhada. Teoricamente um processo que seja executado por um longo período passaria aproximadamente o mesmo tempo sendo executado em cada CPU do sistema, entretanto é preferível a execução contínua na mesma CPU (caso esteja disponível) devido a pater do espaço de endereçamento do processo permanecer na cache da CPU.
40 Conceitos de Software Sistemas Multiprocessadores de Tempo Compartilhado Processos bloqueados esperando por E/S podem ser suspensos ou marcados como esperando (busy waiting), dependendo da carga total do sistema. Implementa um sistema de arquivos tradicional.
41 Conceitos de Software QUESTÕES DE PROJETO 1- TransparênciaO objetivo final é passar a impressão de um sistema único aos usuários, logo a transparência é o aspecto mais importante em SOD. Transparência pode ser atingida em dois níveis: Escondendo-se a distribuição dos usuários e escondendo-se a distribuição dos programas (muito mais difícil). Qual o significado de transparência?
42 Conceitos de Software QUESTÕES DE PROJETO 1- Transparência (cont.)Transparência de Acesso – Esconde as diferenças de representação de dados e como os recursos são acessados. Transparência de localização – Os usuários não sabem onde os recursos estão localizados. Transparência de migração – Recursos podem ser movidos dentro do sistema sem que os usuários percebam.
43 Conceitos de Software QUESTÕES DE PROJETO 1- Transparência (cont.)Transparência de relocação – Mudança de local de um recurso é transparente aos usuários. Transparência de replicação – Usuários não sabem quantas cópias de um programa ou arquivo existem. Transparência de concorrência – Vários usuários dividem recursos sem saber.
44 Conceitos de Software QUESTÕES DE PROJETO 1- Transparência (cont.)Transparência de paralelismo – Atividades ocorrem em paralelo ser que os usuários saibam. Muito complicado. Geralmente o usuário tem que programar sua aplicação para que ela tome vantagem do paralelismo do sistema.
45 Conceitos de Software
46 Conceitos de Software QUESTÕES DE PROJETO 2- FlexibilidadeUtilização de núcleos monolíticos ou de micro-núcleos associados com servidores a nível de usuário. O núcleo monolítico é basicamente um SO com aplicações de conexão via rede e a integração de serviços remotos. Sistemas adaptados do Unix utilizam essa abordagem, pois o Unix usa um núcleo monolítico.
47 Conceitos de Software QUESTÕES DE PROJETO 2- Flexibilidade (cont.)Os micro-núcleos são mais flexíveis e implementam quatro serviços: 1. Um mecanismo de comunicação interprocesso. 2. Algum gerenciamento de memória. 3. Um pouco de gerenciamento de baixo-nível de processos e escalonamento. 4. Entrada e saída de baixo-nível.
48 Conceitos de Software QUESTÕES DE PROJETO 2- Flexibilidade (cont.)A vantagem do micro-núcleo é que é altamente modular: existem interfaces bem definidas para cada serviço e cada serviço é igualmente acessível para cada usuário independente da localização. Também facilita a implementação, instalação e depuração de novos serviços - flexibilidade. O teste de um novo serviço não acarreta em uma recompilação e reinicialização do núcleo. Usuários que não estão satisfeitos com os serviços podem implementar os seus próprios serviços.
49 Conceitos de Software QUESTÕES DE PROJETO 2- Flexibilidade (cont.)Pode-se ter mais de um servidor de arquivos, com cada um funcionando com um formato.
50 Conceitos de Software QUESTÕES DE PROJETO 2- Flexibilidade (cont.)As únicas vantagens em potencial dos núcleos monolíticos são a performance e o custo inicial, no entanto um estudo experimental comparando o Sprite com o Amoeba não mostrou diferenças significativas em performance e o vantagem de custo inicial do núcleo monolítico tende a desaparecer a medida que serviços vão sendo implementados e/ou atualizados.
51 Conceitos de Software QUESTÕES DE PROJETO 3- ConfiabilidadeUm dos objetivos originais em se construir SODs era o de se obter um sistema mais confiável que sistemas com um único processador. A idéia e que se uma máquina quebra, outra máquina do sistema pode assumir as suas funções. Teoricamente, a confiabilidade total do sistema seria um OU das confiabilidades dos componentes. “Um sistema distribuído é um sistema onde eu não consigo trabalhar porque alguma máquina na qual eu nunca ouvi falar não está funcionando” Leslie Lamport.
52 Conceitos de Software QUESTÕES DE PROJETO 3- Confiabilidade (cont.)Aspectos de confiabilidade: 1. Disponibilidade (availability). Replicação de dados pode melhorar disponibilidade. 2. Segurança. Mais problemático do que em sistemas uniprocessador. 3. Tolerância a falhas. É desejável que a ocorrência de falhas seja transparente aos usuários. Servidores cooperativos podem ser usados para este fim.
53 Conceitos de Software QUESTÕES DE PROJETO 4- PerformanceProblema: comunicação entre CPUs (essencial em um SD) é bem mais lenta que execução nas CPUs, devido ao overhead de protocolos. Reduzir o número de mensagens? Seria bom se isso não afetasse a execução paralela de processos, além da confiabilidade. Uso de granularidade de paralelismo na alocação de processos. Processos com paralelismo fine-grained, isto é, com um grande número de pequenas computações devem ser executados localmente enquanto que os coarse-grained, com grandes computações e pouca interação e dados são mais adequados a execução em paralelo.
54 Conceitos de Software QUESTÕES DE PROJETO5- Capacidade de Expansão (Scalability) A maioria dos SDs são projetados para trabalhar com algumas centenas de CPUs. Soluções viáveis para sistemas com 200 máquinas podem falhar bisonhamente para um sistema com máquinas. Arquiteto do sistema deve evitar tabelas (catálogo telefônico), componentes (servidor de correio eletrônico) e algoritmos (que necessitem de um servidor centralizado) centralizados.
55 Conceitos de Software QUESTÕES DE PROJETO5- Capacidade de Expansão (Scalability) (cont.) Algoritmos descentralizados tem as seguintes características: 1. Nenhuma máquina tem informação completa sobre o estado do sistema. 2. Máquinas tomam decisões baseadas somente em informações locais. 3. A quebra de uma máquina não faz com que o algoritmo falhe. 4. Não trabalham com nenhuma suposição de que existe um clock global.