Sistema Distribuído Sistema Distribuído Conjunto de máquinas (CPU + memória) interligadas em rede. Sistema operacional distribuído trata este conjunto como um único sistema computacional. Processador 1 Memória 1 Processador 1 Memória 1 Processador 2 Memória 2 Processador 3 Memória 3 Processador 2 Memória 2 Disco Disco Estação 1 Estação 2 Rede Aplicações Distribuídas Aplicações que “se espalham” por várias máquinas. aplicações concorrentes onde cada processo que compõe a aplicação pode ser executado em uma máquina arbitrária Em sistemas distribuídos: qualquer aplicação pode ser executada de forma distribuída. Em sistemas operacionais convencionais: aplicação deve ser programada de forma explicitamente distribuída. Processador 3 Memória 3 Disco Estação 3 rede Conceitos Básicos Paralelismo: vários processos executando simultaneamente em vários computadores compartilhando ou não memória Só é possível em Sistemas multiprocessadores. Pseudo-Paralelismo (Paralelismo Abstrato): vários processos compartilhando um mesmo processador ou outros recursos de um computador. Ilusão de que vários programas estão rodando ao mesmo tempo 1 Sistema Distribuído X Sistema Paralelo Sistemas Paralelos Sistema Distribuído: Sistema todo age como um sistema clássico de processador único Memória Processador 1 Memória 1 E (pronto) D (pronto) C (executando) Processador 2 Memória 2 Processador 3 Memória 3 B (executando) A (executando) Processo A Cache Processo B Cache Processo C Cache Fila Execução: D, E Red Disco Sistema Paralelo ou Memória Compartilhada: Sistema Operacional Processador 1 Processador 2 Processador 3 Barramento Memória Paralelização de Problemas Diminuição do tempo necessário para obter o resultado de uma computação; Um programa paralelo poderia igualmente ser executado em um sistema distribuído ou em uma máquina paralela; Execução em sistema distribuído permite que o recurso de processamento tenha várias funções; Viabilidade depende da quantidade de comunicação necessária. Sistemas Operacionais de Rede Conjunto de máquinas interligadas em rede. Sistema operacional comunicação remota inclui funções para Executar processo X na estação 2 Processador 1 Memória 1 Processador 3 Memória 3 Processador 2 Memória 2 Disco Disco Estação 1 Estação 2 Disco Estação 3 rede 2 Sistemas Operacionais de Rede Login Remoto SO de Rede X SO Distribuído TELNET Transferência de Arquivos Sistema Distribuído FTP Sistema em Rede Concorrência Coleção de computadores independentes Exemplos de Concorrência Programa Concorrente: Conjunto de Computadores que age como uma única máquina (Sistema Coeso) Requisito Fundamental: Transparência Concorrência = várias tarefas em progresso ao mesmo tempo programas executados em paralelismo ou pseudoparalelismo Tipicamente, em pseudo-paralelismo o processo não tem controle sobre o instante em que perderá o controle da CPU Sistema Operacional gerenciamento de arquivos gerenciamento de memória suporte a comunicação aplicação: acesso a base de dados usuário interativo consultando base administrador consultando log programa batch atualizando dados 3 Sistemas Distribuídos Conceitos Básicos Finalidade Compartilhamento de Dados Sistema Distribuído: Processador 1 Memória 1 Processador 2 Memória 2 Processador 3 Memória 3 Sistema Paralelo ou Memória Compartilhada: Processador 1 Processador 2 Compartilhamento de Recursos (Periféricos, CPU) Comunicação entre Pessoas Flexibilidade Processador 3 Memória Sistemas Distribuídos Características Mecanismo de Comunicação entre Processos Kernels idênticos em cada máquina do Sistema Sistemas Distribuídos Problemas Pouco Software Dependência da Rede Mesmo Gerenciamento de Processos em todas as máquinas Saturação e Falhas na rede afetam o sistema Segurança Mesmo Sistema de Arquivos O fácil acesso aos dados também se aplica aos dados secretos 4 Sistemas Distribuídos Transparência Requisitos de Software Transparência Flexibilidade Confiabilidade Desempenho Escalabilidade Transparência Localização Migração Replicação A Nível de Usuário A Nível do Programador Transparência de Localização Usuário não precisa saber onde se encontra o recurso Nome do Recurso não incorpora a sua localização arq1.c arq1.c arq1.c Concorrência Paralelismo oxum oxalá obaluaê logum-ede 5 Transparência de Migração Transparência de Replicação Liberdade de Migração Usuário não precisa saber da replicação Sem mudança de nome Sem conhecimento do usuário arq1.c arq1.c arq1.c arq1.c arq1.c arq1.c arq1.c oxum oxum oxalá obaluaê Transparência de Concorrência oxalá obaluaê logum-ede logum-ede Sistema se encarrega da Exclusão Mútua ao recurso compartilhado Transparência de Paralelismo Sistema Operacional + Compilador efetivem o paralelismo 6 Flexibilidade Kernel Monolítico x Microkernel Kernel Monolítico Vantagens do MicroKernel Usuário kernel Monolítico Inclui Arquivos, Diretórios e Gerenciamento de Processos Micro Kernel Usuário Servidor de Arquivos Servidor de Diretório Servidor de Processos Microkernel Microkernel Microkernel Microkernel Interface modular para cada serviço simplicidade no adicionamento ou mudança de um serviço Flexibilidade Vantagem do Kernel Monolítico Desempenho Rede Confiabilidade Disponibilidade Segurança Tolerância a Falhas Classes de Aplicações Distribuídas Aplicações Inerentemente Distribuídas Aumento de Desempenho Aplicações Tolerantes a Falha Aplicações usando especialização funcional 7 Aplicações de Natureza Distribuída sistemas para comunicação: correio eletrônico, teleconferência, www, etc; programas para manutenção da própria rede: algoritmos de roteamento, gerenciamento da rede, etc; sistemas operacionais distribuídos; ambientes de trabalho em grupo: desenvolvimento de software e de documentos; jogos... Requisitos para Suporte a Programação Distribuída controle do uso de múltiplos processadores Distribuição Funcional cooperação entre os processadores (comunicação e sincronização) potencial para detectar e recuperar uma falha parcial do Sistema sistemas de arquivos processamento numérico capacidade de memória Processo Determinadas máquinas podem ter configurações de hardware ou software mais apropriadas para execução de dadas tarefas: Programa em execução Conceito central de Sistemas Operacionais Possui todas as informações necessárias para executar um programa: um programa executável seus dados seu contador de programa sua pilha de execução registradores etc. 8 Processo Processo Em um Sistema de Tempo Comparilhado (Timesharing) periodimente o SO pára de executar um processo e começa a executar outro processo (realiza preempção) Todas as informações sobre cada processo são armazenadas na Tabela de Processos Processos Daemon: (UNIX) é um processo que executa em “background” esperando que algum evento ocorra para que ele possa realizar alguma tarefa Exemplo: Daemon de Impressão Processos D C B A Tempo 9