Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Metas de projeto [C2,C3,T1.5] Propriedades críticas de um SD Desafios na construção de um SD Heterogeneidade Transparência Flexibilidade Confiabilidade Desempenho Escalabilidade Mobildade Heterogeneidade Diferentes formas de representação de mesmo dado em diferentes computadores Ex. Estrutura com bit mais significativos em um e bit menos significativos em outro Necessidade de usar mesma representação de tipos primitivos e de estruturas de dados na troca de mensagens Solução uso de middleware Migração de código ou código móvel Ex.: Máquinas virtuais / Applets Java Transparência a paralelismo Lembrando do conceito de 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 Paralelismo: divisão de uma tarefa em sub-tarefas coordenadas e que são executadas simultaneamente em processadores distintos Compilador, ambiente de execução e sistema operacional devem saber tirar vantagem do potencial paralelismo de um sistema distribuído sem mesmo que o programador saiba disso Flexibilidade Modelos de estrutura de SD: Núcleo monolítico: inclui gerenciamento de arquivos, diretórios e processos Micro-núcleo: mecanismo para comunicação entre processos gerenciamento básico de memória gerenciamento de processos a baixo nível operações de entrada/saído a baixo nível Vantagens do micro-núcleo Modularidade => Flexibilidade serviços estão disponíveis a todos os clientes, independentemente de localização serviços podem ser reparados sem causar parada total do sistema os próprios usuários podem adicionar novos serviços Confiabilidade Em teoria, como medir? Aspectos: disponibilidade: fração do tempo em que o sistema pode ser usado exatidão: replicação versus consistência segurança: Como um servidor pode verificar a origem de uma mensagem? tolerância a falhas: replicação versus desempenho Desempenho Métodos de medição: tempo de resposta número de tarefas por hora taxa de utilização do sistema taxa de utilização da rede Fator crítico em SD: troca de mensagens Granularidade de computação paralela Escalabilidade Sistema é dito escalável se permanece eficiente quando há um aumento significativo do número de recursos e de usuários Evitar: componentes centralizados (ex: um único servidor de correio eletrônico para todos os usuários) tabelas centralizadas (ex: uma única lista telefônica on-line) algoritmos centralizados (ex: roteamento baseado em informação completa) Mobilidade Diferentes dispositivos móveis como smartphones, laptops, tablets Conectividade fornecida por protocolos Internet Protocolos Internet desenvolvido para ambientes fixos Problemas de intermitência e mobilidade Endereçamento Roteamento Algoritmos Distribuídos Nenhuma máquina conhece o estado global Decisões são baseadas somente em informação local A parada de uma máquina não arruína o algoritmo Não há qualquer suposição quanto a existência de tempo (relógio) global Elementos básicos de um SD Sistema de nomes Comunicação Estrutura de software Alocação de carga de trabalho Manutenção de consistência Sistema de nomes Nomes permitem que recursos sejam compartilhados Nomes de recursos devem ser independentes de sua localização O esquema de nomes deve escalar bem Um sistema de interpretação de nomes deve ser acessível por programa Comunicação O sucesso de um SD depende muito do desempenho/confiabilidade das técnicas de comunicação usadas em sua implementação Dilema: otimizar implementação da comunicação e prover alto nível do modelo de programação dessa comunicação Estrutura de software Extensibilidade requer componentes de software com interfaces bem definidas Um serviço é um gerenciador de objetos de um certo tipo e sua interface é um conjunto de operações Novos serviços devem interoperar com serviços existentes e não duplicar suas funções Alocação de carga de trabalho Otimização do uso de: capacidade de processamento capacidade de comunicação recursos da rede em geral Objetivo: bom desempenho Manutenção de consistência Consistência de atualização: atomicidade como meio de atualização instantânea de muitos elementos Consistência de replicação: cópias de um mesmo recurso devem ser “idênticas” Consistência de cache: modificações em um cliente devem ser propagadas ao gerenciador e aos demais clientes Manutenção de consistência (continuação) Consistência de falha: deve-se evitar falhas múltiplas (em cascata); isolamento de falhas Consistência de relógio: relógios físicos (sincronização aproximada) e relógios lógicos (timestampings em mensagens) Consistência de interface de usuário: atrasos devido a comunicação podem causar visão inconsistente de aplicações gráficas Requisitos no nível do usuário Funcionalidade: Que serviços esperar de um SD? Como migrar aplicações de um SC para um SD ? adaptar SO ? adaptar applicação? emulação de SO antigo? Reconfigurabilidade: substituição de máquinas que falham, rearranjo de carga, transferência de atividades e dados para minimizar comunicação Requisitos no nível do usuário (continuação) Qualidade de serviço: desempenho confiabilidade e disponibilidade segurança