Sistemas Distribuídos Introdução à Ciência da Computação Ana Paula & Lúcia Material adaptado do Prof. Tiago Ferreto Introdução - Sistemas Distribuídos • Conteúdo • • • • • • • Evolução Histórica Motivação Conceitos Características Vantagens/desvantagens Desafios Exemplos Evolução histórica • Computadores iniciais: caros e grandes • execução por um operador: setup do job (carregar cartões), executar programa, imprimir resultado • Anos 50 e 60: batching, spooling, multiprogramação • batching: juntar jobs semelhantes para processamento • spooling: sobreposição de I/O e CPU • multiprogramação: diversos programas sendo executados concorrentemente pela CPU • Objetivo: otimizar a utilização da CPU Evolução histórica • Não existia a interação entre usuário e computador • alto custo para processos interativos: depuração • Início dos anos 60: sistemas de time sharing • utilização de diversos terminais “burros” conectados a um computador • impressão de um computador por usuário • tarefas principais/comuns são executadas pelo computador principal • desenvolvimento dos minicomputadores: menores e mais rápidos! • 1o. passo na direção dos sistemas distribuídos! • compartilhamento de recursos • acesso remoto • Terminais e computador muito próximos Evolução histórica • Final dos anos 60 e início dos anos 70: surgimento das redes de computadores e do sistema operacional UNIX • Ethernet – Xerox Palo Alto (1973): Local Area Network • permitiu interligar mais computadores a distâncias maiores usando uma velocidade maior (e.g. rede de computadores de um prédio) • ARPANet – DoD (1969): Wide Area Network • interligação entre computadores localizados dispersamente (cidades e/ou países diferentes) Evolução histórica • Final dos anos 70: protocolo TCP/IP • definição de padrão para comunicação entre computadores • Início dos anos 80: microprocessadores e estações de trabalho • redução do custo (em relação aos mainframes) • Final dos anos 80: estações de trabalho ligadas em rede • diversos serviços para comunicação entre pessoas/máquinas • FTP, TELNET, MAIL Motivação • Avanços em microeletrônica • processadores mais rápidos e baratos • Avanços em comunicações • redes mais eficientes e confiáveis • Popularidade das redes de computadores • redes de telefones celulares, redes corporativas, redes caseiras • redes de computadores de alta velocidade (Myrinet ~2Gb/s) Motivação • Compartilhamento de recursos • Componentes de HW (disco, impressora) • SW (arquivos, bases de dados, programas) • Outros (vídeo, áudio) • Relação custo/desempenho • melhor utilizar diversos processadores interconectados do que um único computador centralizado Conceitos • O que é um Sistema Distribuído? • Um sistema distribuído é uma coleção de computadores independentes que parecem um sistema único para o usuário [Tanenbaum]. • É um sistema onde os componentes de HW e SW, localizados em computadores interligados por uma rede, comunicam e coordenam suas ações somente através de troca de mensagens [Coulouris]. • Dois aspectos: • Hardware: autonomia • Software: sistema único Características • Processos são executados concorrentemente no sistema distribuído • não existe um controle global! • processos usam troca de mensagens para coordenar suas ações • Inexistência de relógio global • noção de tempo global é importante na coordenação de processos • sincronização de relógios possui um limite de precisão Características • Falhas independentes • a falha de um dos componentes (rede, máquinas, programas) do sistema distribuído não implica na falha do sistema como um todo Vantagens • Economia – melhor relação custo/desempenho • Grosh's Law: desempenho é proporcional ao quadrado do custo • 2*custo = 4*desempenho • somente válido para mainframes • Velocidade • 10.000 CPUs x 50 MIPS = 500.000 MIPS • Uma CPU para isto deveria executar uma instrução a cada 0,002 nanosegundos (2 picosegundos). Vantagens • Sistemas inerentemente distribuídos • Sistema de reservas • CSCW – computer supported cooperative work • CSCG – computer supported cooperative game Vantagens • Maior confiabilidade (reliability) e disponibilidade • grau de tolerância contra erros e falhas de componentes em um sistema • 5% fora do ar = 5% em perda de desempenho • Aplicações críticas - aviação, reatores nucleares • replicação de componentes • Facilidade de expansão • permite aumentar o poder de processamento/armazenamento sem se desfazer daquilo que já possui, isto é, de maneira gradativa Vantagens • Permite o compartilhamento de dados/informação • desenvolvimento de software distribuído (e.g. CVS) • Permite o compartilhamento de recursos • economia (Ex. impressora, software, bases de dados, disco, pool de processadores) Desvantagens • Maior dificuldade na garantia de segurança (crítico!) • Desevolvimento de sw distribuído é mais complexo • Gerência de recursos mais complexa • Alto custo para implementar aplicações colaborativas • Causas • recursos são fisicamente separados • mensagens podem atrasar • mensagens podem ser perdidas • ... Desafios • comunicação segura • Quem enviou? Os dados foram modificados durante a transmissão? Alguém não autorizado teve acesso aos dados? • confiabilidade em um ambiente não confiável • máquinas podem falhar, mas o SD deve falhar parcialmente Desafios • localização • colocar os recursos em um determinado local e permitir a localização destes recursos quando necessário • coordenação • acordo entre os componentes distribuídos sobre o que fazer e de que forma Exemplos de SDs • Internet: grande coleção de diferentes redes de computadores interconectadas. Comunicação através de troca de mensagens • Serviços: www, ftp, mail • Intranet: parte da Internet administrada separamente • Políticas de segurança locais (firewall) • Necessidades: serviço de compartilhamento de arquivos, firewalls para proteção, facilidade de instalação e suporte de software Exemplos de SDs • Computação móvel: avanços na miniaturização de dispositivos e redes sem fio • Integração de pequenos dispositivos computacionais portáteis • Laptops, PDAs, celulares, pagers, câmeras digitais, wearable devices, dispositivos integrados a utensílios • Problemas: descoberta de recursos no ambiente, reconfiguração de dispositivos, privacidade e segurança Exemplos de SDs • Caixas automáticos de Banco • Sistema de reserva de passagens • SETI@home • vCluster SETI@home -Search for Extraterrestrial Intelligence at Home • Universidade da Califórnia, Berkeley • Objetivo: utilizar a capacidade de processamento de centenas de milhares de computadores conectados à Internet na procura de inteligência extraterrestre • Utilização: • instalação de um programa (screensaver) • quando o computador esta ocioso o programa realiza o download de um pacote de dados (work unit - ~340KB) obtidos por rádio-telescópio (Observatório de Arecibo) e faz uma procura por sinais extraterrestres • Possui aproximadamente 3 milhões de usuários SETI@home vCluster • Desenvolvido pelo CPAD -http://www.cpad.pucrs.br • Motivação: • subutilização dos recursos computacionais em laboratórios acadêmicos • ~ 90% ociosidade • aplicações científicas com demanda por recursos computacionais • Objetivo: Exploração de ciclos ociosos • Aplicações BoT (Bag-of-Tasks) • Enfoque: usuário local possui prioridade sobre a execução de tarefas na máquina vCluster