Introdução Definição de um Sistema Distribuído (1) Um sistema distribuído é: Uma coleção de computadores independentes que se apresenta para os usuários como um único sistema coerente. Definição de um Sistema Distribuído (2) Transparência em um sistema distribuído Problemas de escalabilidade Problemas de escalabilidade Características de problemas descentralizados: • Nenhuma máquina tem a informação completa do estado do sistema • Máquinas tomam decisões baseadas nas informações locais • Falha em uma máquina não deve “afetar” o algoritmo • Não existe um relógio global Técnicas / Escala(1) 1.4 Técnicas / Escala(2) Conceitos de Hardware 1.6 Diferentes organizações para memórias em sistemas de computadores distribuídos Multiprocessadores (1) 1.7 Uma estrutura baseada em barramento. Multiprocessadores (2) 1.8 a) Switch barras cruzadas b) Rede de Switches Sistemas de multicomputadores homogêneos 1-9 a) Grade b) Hipercubo Conceitos de Software Sistema Descrição Objetivos DOS Fortemente acoplado / SO para multiprocessadores e multicomputadores homogêneos Abstração / gerência de recursos de HW NOS Fracamente acoplados / SO para multicoomputadores heterogêneos (LAN e WAN) Serviços locais para clientes remotos Middleware Camada adicional aos NOS implementando serviços de propósitos gerais Transparência de distribuição • DOS (Distributed Operating Systems) • NOS (Network Operating Systems) Sistemas Operacionais para um único processador 1.11 Separação do código de Aplicações / SO através do microkernel. Sistemas Operacionais / Multiprocessadores (1) monitor Counter { private: int count = 0; public: int value() { return count;} void incr () { count = count + 1;} void decr() { count = count – 1;} } Um monitor para proteger acessos concorrentes a variáveis inteiras Sistemas Operacionais / Multiprocessadores (2) monitor Counter { private: int count = 0; void decr() { if (count ==0) { int blocked_procs = 0; blocked_procs = blocked_procs + 1; condition unblocked; wait (unblocked); public: blocked_procs = blocked_procs – 1; int value () { return count;} } void incr () { else if (blocked_procs == 0) count = count + 1; else count = count – 1; } } signal (unblocked); } A Um monitor para proteger acessos concorrentes a variáveis inteiras com primitivas bloqueio/desbloqueio SO / multicomputadores-1 1.14 Estrutura Geral de um Sistema Operacional para um ambiente com multicomputadores SO / multicomputadores-2 1.15 Pontos possíveis para armazenamento/bloqueios na troca de mensagens. Ponto de sincronização Buffer Sender Comunicação confiável garantida? Block sender until buffer not full Sim Não necessariamente Block sender until message sent Não Não necessariamente Block sender until message received Não Necessário Block sender until message delivered Não Necessário Problemas com a concorrência Tipicamente, em programas concorrentes os processos não têm controle sobre o instante em que perderão o processador. Portanto, é preciso ter controle no uso de múltiplos processadores e recursos. Requisitos para dar suporte a: • cooperação entre os processos (comunicação e sincronização) • potencial para detectar e recuperar uma falha parcial do Sistema Conceito básico de processo Um processo é um programa em execução Abstração de Sistemas Operacionais Mantém as informações necessárias para o controle da execução de um programa: • código executável • dados • contador de programa • pilha de execução • registradores • etc. Sistema de Memória Compartilhada Distribuída (1) a) Páginas do espaço de endereçamento distribuídas entre quatro máquinas b) Situação após a CPU 1 referenciar a página 10 c) Situação com uso de réplicas caso a página 10 seja read only Sistema de Memória Compartilhada Distribuída (2) 1.18 Compartilhamento falso de uma página entre dois processos independentes Sistema Operacional de Rede(1) 1-19 Estrutura geral de um sistema operacional de rede. Sistema Operacional de Rede(2) 1-20 Dois clientes e um servidor em um sistema operacional de rede. Sistema Operacional de Rede(3) 1.21 Diferentes clientes podem montar servidores em diferentes locais. Papel do Middleware 1-22 Estrutura geral do papel da camada middleware em um sistema distribuído Middleware / Sistemas Abertos 1.23 Em sistemas distribuidos abertos baseados em tecnologias de middleware, os protocolos usados por cada camada do middleware devem ser os mesmos, assim como as interfaces oferecidas para as aplicações. Comparação entre as abordagens DOS Item Grau de transparência Mesmo SO nos nós Número de cópias do SO Base p/ comunicação Gerenciamento de Recursos Escalabilidade Nível de abertura SO redes SO baseados em Middleware Multiproc. Multicomp. Muito alto Alto Baixo Alto Sim Sim Não Não 1 N N N Shared memory Messages Files Específicas do modelo Global, Centralizado Global, distribuido Por nó Por nó Não Moderada Sim Variável Fechado Fechado Aberto Aberto