Sistemas distribuídos Metas de Projeto Prof. Diovani Milhorim Propriedades críticas de um SD Transparência Flexibilidade Confiabilidade Desempenho Escalabilidade Transparência a paralelismo 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 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) 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 independendentes 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 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 segurança e disponibilidade