Sistemas Operacionais Distribuídos e/ou de Redes Engenharia da Computação – UCPEL Ritiele Moreira Aldeburg Sistemas Distribuídos • Definimos um sistema distribuído como sendo aquele no qual os componentes de hardware ou software, localizados em computadores interligados em rede, se comunicam e coordena suas ações apenas enviando mensagens entre si. Sistemas Distribuídos • O Sistema distribuído assim então formado, em sua usabilidade, da a impressão de ser uma única maquina com um único sistema. Sistemas Distribuídos Vantagens • Econômicas: aproveitar máquinas potencialmente ociosas; mais barato vários processadores interconectados do que um supercomputador; • Distribuição inerente: algumas aplicações são distribuídas por natureza; • Tolerância a falhas: em caso de falha de uma máquina, o sistema como um todo pode sobreviver, apresentando apenas uma degradação de desempenho; Sistemas Distribuídos Vantagens • Crescimento incremental: o poder computacional pode ser aumentado através da inclusão de novos equipamentos; • Flexibilidade: sistemas distribuídos são mais flexíveis do que máquinas isoladas, por isso muitas vezes são utilizados até mesmo que não se esteja buscando desempenho. É essa flexibilidade que permite que vários usuários compartilhem dados e periféricos. Sistemas Distribuídos Desvantagens • Pouco software de alto nível disponível para sistemas distribuídos; • Dificuldades para evitar acesso indevido (segurança); • A rede de interconexão pode causar problemas ou não dar vazão a demanda. Sistemas Distribuídos ..:: Questões envolvendo seu Projeto ::.. Sistemas Distribuídos Transparência • Localização: os usuários não sabem onde os recursos estão localizados; • Migração: os recursos podem se mover sem alterar seus nomes; • Replicação: os usuários não sabem quantas cópias de um recurso existem; • Concorrência: múltiplos usuários podem compartilhar um recurso automaticamente; • Paralelismo: atividades podem ocorrer em paralelo sem que o usuário saiba (falta muito • ainda para ser atingido). Sistemas Distribuídos Flexibilidade Para obter isso, hoje a tendência é construir S.O. baseados em um micro kernel (ao invés de um sistema monolítico com mais performance mas menos flexibilidade). Um microkernel implementa poucas funções, fornecendo em princípio quatro serviços básicos: • Mecanismo de comunicação entre processos • Algum tipo de gerência de memória • Uma pequena parte do escalonamento e gerência de baixo nível de processos • Estrada e saída de baixo nível Sistemas Distribuídos Confiabilidade • Na teoria, a ideia é que se alguma máquina parar de funcionar, alguma outra máquina pode pegar o trabalho dela. • Na prática, existem alguns servidores em diferentes máquinas que precisam estar no ar para que o sistema como um todo funcione. Sistemas Distribuídos Aspectos relacionados a confiabilidade • Disponibilidade (availability): se refere a fração de tempo que o sistema está funcionando/usável. Pode-se melhorar a disponibilidade através de um projeto que não exija o funcionamento simultâneo de um número substancial de componentes críticos; ou, ainda, através de redundância, isto é, componentes chaves de hardware e software devem ser replicados, de modo que se um deles falhar, os outros estarão aptos a tomar conta da tarefa. Sistemas Distribuídos Aspectos relacionados a confiabilidade • Tolerância a falhas: o que fazer em caso de falha de um servidor? Em geral, sistemas distribuídos podem ser projetados para mascarar falhas, isto é, escondêlas do usuário. Por exemplo, um serviço de arquivos (ou outros serviços quaisquer) pode ser construído com um grupo de servidores cooperantes de tal modo que o usuário não perceba a perda de um ou mais servidores (a não ser, talvez, por perda de desempenho). Sistemas Distribuídos Desempenho Todos os itens anteriores não devem ser atingidos sacrificando o desempenho. Quando rodar uma determinada aplicação em um sistema distribuído, ele não pode ser pior do que rodar a mesma aplicação em um único processador. Sistemas Distribuídos Desempenho Métricas para medir desempenho: • • • • Tempo de resposta Throughput (número de tarefas / tempo) Utilização do sistema Quantidade consumida da capacidade da rede Sistemas Distribuídos Desempenho Principal problema = Custo de Comunicação Para otimizar o desempenho, otimiza-se o número de mensagens. Porém, a melhor forma de obter desempenho é ter várias atividades rodando em paralelo em diferentes processadores, o que implica em enviar muitas mensagens. Sistemas Distribuídos Desempenho Solução: • considerar a granulosidade Tamanho do grão (grain size): tempo execução de uma tarefa (grão fino - fine-grain - e grão grosso -coarse grain); Executar tarefas pequenas remotamente não é válido porque o custo adicional (overhead) de comunicação não compensa o ganho de CPU; Executar tarefas que envolvam grandes computações (coarsegrained parallelism), baixas taxas de interações e poucos dados pode ser mais apropriado. Sistemas Distribuídos Escalabilidade (Scalability) Os sistemas distribuídos precisariam se adaptar a possibilidade de termos ambientes com centenas ou milhares de processadores. Para isso, deve-se evitar: • Componentes centralizados. Por exemplo, um único servidor de email para todos os usuários. Tabelas centralizadas. Por exemplo, uma única relação on-line de telefones. • Algoritmos centralizados. Por exemplo, roteamento de mensagens baseado em informações completas. Sistemas Distribuídos Escalabilidade (Scalability) Deve-se usar algoritmos descentralizados, que possuem as seguintes características: • Nenhuma máquina possui informações completas sobre o estado do sistema. • Máquinas tomam decisões baseadas apenas nas informações disponíveis localmente. • Falha de uma das máquinas não impede o funcionamento do algoritmo. • Não há suposições implícitas de que existe um relógio global. Sistemas Operacionais Distribuídos Sistemas distribuídos são como sistemas operacionais tradicionais mas possui determinadas características especificas: • Atuam como gerentes de recursos, permitindo que múltiplos usuários ou aplicações compartilhem CPUs, memórias, periféricos, rede e dados; • Tentam esconder a heterogeneidade e complexidade do hardware (remoto, principalmente) ao fornecer uma máquina virtual (software) onde aplicações podem ser executadas mais facilmente Sistemas Operacionais Distribuídos • Fortemente acoplados Tentam manter visão única e global dos recursos gerenciados • Fracamente acoplados Coleção de computadores, cada um executando seu próprio sistema operacional No entanto, estes sistemas operacionais trabalham juntos para tornar os serviços e recursos de uns disponíveis aos outros Sistemas Operacionais Distribuídos • Sistemas operacionais fortemente acoplados Para sistemas (computadores e programas) distribuídos, geralmente, são chamados de sistemas operacionais distribuídos (SODs) – visão única e global dos recursos • Sistemas operacionais fracamente acoplados São os sistemas operacionais de rede (SORs) – cada computador executando seu próprio SO, e viceversa, um SO completo para cada computador • Para melhor suporte à transparência de distribuição são necessários melhoramentos ou serviços adicionais aos serviços de SORs, principalmente; Estes adicionamentos levaram ao chamado middleware; Sistemas Operacionais Distribuídos Sistema Descrição Principal objetivo SOD SO fortemente acoplado para multiprocessadores e multicomputadores homogêneos Esconder e gerenciar recursos de hardware SOR SO fracamente acoplado para multicomputadores heterogêneos (LAN/WAN) Oferecer serviços locais para clientes remotos Middleware Camada adicional sobre um SOR Prover transparência de distribuição Sistemas Operacionais Distribuídos Tipos • Sistema operacional multi-processador ▫ Gerencia recursos de um multiprocessador • Sistema operacional multi-computador ▫ Para multicomputadores homogêneos Sistemas Operacionais Distribuídos Multi-processador • Objetivo: alto desempenho através de múltiplos processadores – o número de CPUs deve ser transparente para a aplicação • Suporte a múltiplos processadores com acesso a uma memória compartilhada • Proteção contra acesso concorrente para garantir consistência, através de primitivas de sincronização o Semáforo o Monitor Sistemas Operacionais Distribuídos Multi-computador • Não há compartilhamento de memória, mas sim comunicação – comunicação confiável é um aspecto importante e complexo Sistemas Operacionais de Rede • Em SORs, serviços estão disponíveis em máquinas distintas. Sistemas Operacionais de Rede • Login remoto (rlogin) • Cópia remota (rcp) o É preciso saber onde (máquinas) os arquivos se localizam... • Pouca transparência! Sistemas Operacionais Distribuídos K42 O que é o K42? • kernel de sistema operacional para sistemas de multiprocessadores de 64bits com cache coerente; • Open source; • Em constante evolução, incorporando mecanismos inovadores e técnicas de programação modernas Sistemas Operacionais Distribuídos K42 • K42 Terceira geração da pesquisa de sistemas operacionais multiprocessados; Primeira geração: Hurricane OS ; Segunda geração: Tornado OS ; Desenvolvidos do zero especialmente para os multiprocessadores de memória compartilhada de hoje (NUMA). Sistemas Operacionais Distribuídos Estrutura do K42 • Kernel ▫ ▫ ▫ ▫ Gerenciamento de memória Gerenciamento de processos Infraestrutura de IPC Escalonamento básico Sistemas Operacionais Distribuídos Estrutura do K42 • System Servers • Bibliotecas em nível de aplicação • Evitar overhead de IPC • Flexibilidade Sistemas Operacionais Distribuídos Estrutura do K42 • Orientada a objetos ▫ Toda comunicação entre processos é feita entre objetos • Suporte à API do Linux ▫ Através de uma camada de emulação que implementa chamadas ao sistema Linux chamando métodos em objetos K42. Sistemas Operacionais Distribuídos Tecnologias do K42 • Suporta as interfaces externas e internas e modelos de execução do Linux, para suportar suas aplicações e kernel • Design feito para que o K42 seja facilmente portado para novos hardwares e depois melhorado para explorar features específicas do hardware utilizado Sistemas Operacionais Distribuídos Tecnologias do K42 • K42 mantém boa performance através de um mecanismo IPC eficiente (com performance comparável a chamadas de sistema) memória compartilhada entre clientes, servers e kernel, diminuindo custos de comunicação • K42 é totalmente preemptivo e a maior parte dos dados do kernel pode ser paginada – libera mais memória para aplicações Sistemas Operacionais Distribuídos Tecnologias do K42 • K42 usa clocks sincronizados em diferentes processadores, permitindo que processos sejam executados simultaneamente por pequenos períodos; • Deleção de objetos K42 acontece somente após todas as threads que estejam rodando no momento terminaramos de tempo em múltiplos processadores Bibliografia • http://www.ic.unicamp.br/~islene/2s2007mo806/slides/distribuidos.pdf • https://pt.wikipedia.org/wiki/Computa%C3%A7%C3%A 3o_distribu%C3%ADda • http://www.lac.inpe.br/~becceneri/arquivos/sod.ppt • http://www.dcce.ibilce.unesp.br/~norian/cursos/pso/se minarios2002/so1.pdf • http://www.cin.ufpe.br/~dmrac/infras%20de%20softw are/resuminho[1].pdf • Sistemas Operacionais Distribuídos e de Redes, Notas de Aula - 2000/1, Profa. Patrícia Kayser Vargas