Sistemas Operacionais Distribuídos e/ou de Redes

Propaganda
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
Download