Sistemas Distribuídos Definições de SD • "Um sistema distribuído é uma coleção de computadores autônomos conectados por uma rede e equipados com um sistema de software distribuído." • Portanto, podemos definir um SD como uma coleção de computadores independentes que aparenta aos usuários do sistema como se fosse um único computador. Nesta definição devemos considerar dois aspectos: • 1. hardware: máquinas autônomas, independentes e heterogêneas. • 2. software: os usuários pensam no sistema como um único computador. Exemplos de SD • Uma rede de estações de trabalho em uma universidade ou companhia • Uma rede de computadores em uma fábrica • Um grande banco com muitas agências, cada qual com um computadores e caixas automáticas Vantagens de SD • compartilhamento de dados: base de dados comum; • compartilhamento de dispositivos: acesso compartilhado a periféricos; • comunicação: torna-se mais simples e mais rápida a comunicação entre pessoas. Além disso, é possível: transferência de arquivos entre nós, login remoto, etc; • flexibilidade: dividir a carga de trabalho entre os nós da rede; • performance a baixo custo: preço baixo dos PCs; • escalabilidade: aumentar o número de nós na medida da necessidade. Desvantagens de SD • Falta de software adequado • Falhas e saturação da rede de comunicação podem eliminar as vantagens de SD • Segurança pode ser comprometida: fácil acesso a dados e recursos reservados Características básicas de SD • • • • Compartilhamento de recursos Extensibilidade Concorrência Escalabilidade (crescimento gradativo suave) • Tolerância a falhas • Transparência Compartilhamento de Recursos • Componentes de hardware:impressoras, discos etc. • Componentes de software: arquivos, bancos de dados etc. Extensibilidade • Extensões de hardware: periféricos, memória, interfaces de comunicação, ... • Extensões de software: funções de SO, protocolos de comunicação etc. • Interfaces chaves são públicas. • Mecanismo uniforme de comunicação entre processos. Concorrência • Mais de um processo em execução a cada instante: – Atividades separadas de usuários – Independência de recursos – Localização de processos servidores em computadores distintos • Acesso concorrente a recursos compartilhados requer sincronização, disponibilidade e segurança. Escalabilidade • Suporta o aumento dos recursos e usuários mantendo um desempenho satisfatório. • Técnicas: replicação, caching, servidores múltiplos. Desafios: • Controlar o custo dos recursos físicos • Controlar a perda de performance (quantidade) • Prevenir esgotamento de recursos (ex: IP) Tolerância a falhas • Fornecer o serviço esperado mesmo na presença de falhas activas. Algumas técnicas empregadas: mascaramento de falhas detecção de erros diagnóstico de erros confinamento de erros recuperação de erros Transparência • Esconder do usuário e do programador de aplicações a separação de componentes em um sistema distribuído, tal que este seja visto como um sistema centralizado Transparência Descrição Acesso Esconde diferenças na representação de dados e como um recurso é acessado Localização Esconde onde um recurso está localizado Migração Esconde que um recurso pode mover-se para outra localização Relocação Esconde que um recurso pode ser movido para outra localização enquanto esta sendo usado Replicação Esconde que um recurso está distribuído por vários servidores.