Redes de computadores II Sistemas operacionais distribuídos Prof. Diovani Milhorim Sistemas operacionais distribuídos Sistemas operacionais Distribuídos Sistemas operacionais distribuídos Sistemas operacionais Distribuídos “Um sistema distribuído é uma coleção de computadores independentes que parecem ao usuário um único computador.” Tanembaum Isto implica em hardware formado por várias máquinas autônomas e um software que fornece a abstração de uma máquina única. Sistemas operacionais distribuídos Sistemas Distribuídos Sistemas distribuídos são formados por um conjunto de componentes de hardware e software unidos por uma estrutura de comunicação. Sistemas operacionais distribuídos Sistemas Distribuídos Avanços tecnológicos que propiciaram o desenvolvimento de sistemas distribuídos Invenção de redes de computadores de alta velocidade (anos 70): Rede local (Local Area Network - LAN) Rede global (Wide Area Network - WAN) Desenvolvimento de microprocessadores potentes (anos 80). Sistemas operacionais distribuídos Sistemas Distribuídos Exemplos de Sistemas distribuídos: 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 Sistemas operacionais distribuídos Sistemas Distribuídos Exemplos de Sistemas distribuídos: Sistema de reserva de passagens aéreas Sistema de controle de estoque, vendas e entregas numa cadeia de lojas Serviços da Internet: Netnews, WWW Sistemas de acesso a recursos de multimídia e de conferência Sistemas operacionais distribuídos Sistemas operacionais Distribuídos Vantagens de Sistemas Distribuídos em relação a Sistemas Centralizados: Preço: Hardware de baixo valor agregados. Velocidade: é possível construir sistemas com valor agregado muito maior Distribuição física: algumas aplicações são essencialmente distribuídas (e.g., correio eletrônico) Confiabilidade: se uma máquina quebra, outras podem guardar backup Disponibilidade: se uma máquina sai do ar, pode-se usar outra Crescimento incremental: podemos acrescentar (ou retirar) recursos aos poucos Sistemas operacionais distribuídos Sistemas operacionais Distribuídos Desvantagens de Sistemas Distribuídos em relação a Sistemas Centralizados: Software: ainda não está tão maduro quanto o software para sistemas centralizados Rede: ela pode cair, pode ficar saturada, congestionar Segurança: roubo de dados, ataques de negação de serviço Sistemas operacionais distribuídos Sistemas operacionais Distribuídos Questões de projeto: Desempenho Normalmente é sinônimo de velocidade tempo de resposta velocidade de processamento (throughput) utilização dos processadores parcela da rede utilizada Sistemas operacionais distribuídos Sistemas Distribuídos Os componentes cooperam e coordenam-se com um objetivo comum: Sistemas operacional distribuído Aplicação distribuída. Sistemas operacionais distribuídos Sistemas operacionais Distribuídos Requisitos necessários aos sistemas distribuídos: Transparência de localização : os usuários não sabem onde está o recurso. de migração : os recursos podem se movimentar. de replicação : os usuários não sabem quantas copias de um recurso existe. de concorrência (compartilhamento simultâneo de recursos) de paralelismo (atividades executadas em paralelo) Sistemas operacionais distribuídos Sistemas operacionais Distribuídos Confiabilidade / Tolerância a Falhas: Disponibilidade Evita perda de dados em caso de falha de uma máquina Mecanismo mais comum: replicação Sistemas operacionais distribuídos Sistemas Distribuídos Dificuldades: Sistemas operacionais muito heterogêneos Hardwares muito distintintos Redes e protocolos de comunicação diferentes. Linguagens de programação diferentes Etc.. Sistemas operacionais distribuídos Sistemas Distribuídos Solução: Middleware Máquina virtuais. Sistemas operacionais distribuídos Sistemas Distribuídos Middleware: Camada intermediária de software que fornece um conjunto de serviços e esconde as disparidades dos sistemas existentes. Sistemas operacionais distribuídos Sistemas Distribuídos Middleware: Sistemas operacionais distribuídos Sistemas Distribuídos Middleware: A camada de middleware é introduzida entre a aplicação e o sistemas operacional. Abstrai as interfaces de sistemas diferentes. Fornece uma interface de programação homogênea. Fornece interoperabilidade de aplicações distribuídas independente das plataformas Sistemas operacionais distribuídos Sistemas Distribuídos Middleware: Exemplo: Java Corba Vmware infraestructure Sistemas operacionais distribuídos Sistemas Distribuídos Máquina virtuais. Cria um ambiente de execução simulado, onde um sistema operacional pode trabalhar utilizando as funcionalidades de outro sistema operacional hospedeiro. Sistemas operacionais distribuídos Sistemas Distribuídos Máquina virtuais. Sistemas operacionais distribuídos Sistemas Distribuídos Máquina virtuais. Cria interface idênticas em sistemas diferentes. Estas interfaces podem ser usadas para hospedar um único programa ou um sistema operacional inteiro. Sistemas operacionais distribuídos Sistemas Distribuídos Máquina virtuais. Exemplos: Vmware player Java virtual machine Sistemas operacionais distribuídos Sistemas Distribuídos Sistemas distribuídos podem ser independentes dos sistemas operacionais. Sistemas distribuídos x internet Ex. sistemas de e-mail servidores de páginas servidores de banco de dados. Sistemas operacionais distribuídos Exemplo de sistema distribuído Cluster é um conjunto de máquinas (no caso de cluster Linux, especificamente, PC's) interligadas via rede que trabalham em conjunto trocando informações entre si. Sistemas operacionais distribuídos Cluster: A tecnologia de cluster é mais antiga do que se pensa. Ela começou nas máquinas de alto desempenho (supercomputadores). O desenvolvimento dessa tecnologia em PC's foi motivada devido ao alto preço dos supercomputadores, começando em 1994 com o desenvolvimento do cluster Beowulf pela NASA. Sistemas operacionais distribuídos Cluster: Uma característica chave de um cluster Beowulf é o uso do Linux e de bibliotecas para troca de mensagens de livre distribuição, permitindo assim alterações no sistema operacional. Sistemas operacionais distribuídos Cluster: Um cluster pode possuir vários tipos de configurações diferentes, tanto na montagem do hardware quanto na configuração do sistema. Os tipos mais comuns de Clusters linux são: Cluster de processamento paralelo Cluster de disponibilidade Sistemas operacionais distribuídos Cluster de processamento paralelo: Cada vez que o cluster recebe uma tarefa para executar (por exemplo, a renderização de um filme), já previamente preparada para rodar em processamento paralelo, o cluster divide os pedaços da tarefa para cada uma das máquinas realizar. Um cluster paralelo é ideal para executar poucas tarefas, mas que exigem grande quantidade de processamento. Sistemas operacionais distribuídos Cluster de disponibilidade: Esse tipo de cluster funciona como um gerenciador de tarefas, ou seja, cada máquina trabalha sozinha, porém a distribuição de tarefas é feita de tal forma que os processadores estão sempre trabalhando na capacidade total. Nesse tipo de cluster é vital a implementação de um sistema de filas com vários níveis de prioridades diferentes. Esse tipo de cluster é ideal para trabalhar com grandes quantidades de tarefas que exigem pequenas ou médias capacidades de processamento.