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
Download

Sistemas Distribuidos