Processos
•
Parte II Virtualização
• A maior parte destas notas de aula são baseadas nos slides do professor Dr. Ying Lu, da Disciplina de Sistemas Operacionais Distribuídos (CSCE455/855), do Departamento de Ciência da Computação e Engenharia, da Universidade de Nebraska Lincoln. • Os slides originais foram traduzidos do inglês para porguês, com algumas modificações e incrementos, em alguns casos.
Créditos:
Processos
Parte II
Virtualização
•
A multiprogramação de sistemas operacionais
prove a ilusão de execução simultânea através
da virtualização de recursos
– Utiliza software para parecer que processos concorrentes são executados simultaneamente•
Virtualização trabalha com a “extensão ou
substituição de interfaces existentes de modo a
imitar o comportamento de outro sistema”
O Papel da Virtualização em Sistemas
Distribuídos
Figura (a) Organização geral entre o programa, a interface e o sistema. (b) Organização geral da virtualização do sistema A no topo do
Por que Virtualização Agora?
•
Hardware e software de baixo nível mudam
rapidamente
•
Software de alto nível (middleware, aplicações)
mudam mais lentamente
•
Virtualização torna possível a execução de
middleware existente sobre novas plataformas
exportando uma interface comum
– O middleware exporta uma interface familiar às aplicações, permitindo que elas executem sobre a nova plataformaPor que Virtualização Agora?
•
Virtualização também torna possível o
encapsulamento de uma aplicação em sua
própria máquina virtual
•
Essa abordagem suporta portabilidade, no
sentido de que a aplicação ou servidor pode
rodar sobre plataformas heterogêneas desde
que hajam camadas de interface comuns,
como um MMV (Monitor de Máquinas
Virtuais máquinas virtuais através de
emulação)
Quatro Interfaces (1, 2)
•
Uma interface entre hardware e software
consistindo de instruções de máquina
– que podem ser invocadas por qualquer programa•
Uma interface entre o hardware e o software,
consistindo de instruções de máquina
– que pode ser invocada somente por programas privilegiados, como sistemas operacionaisQuatro Interfaces (3, 4)
•
Uma interface consistindo de chamadas de
sistema assim como as oferecidas por um
sistema operacional
•
Uma interface constituída de chamadas de
biblioteca
– Geralmente formando as APIs (Application Programming Interface) – Em muitos casos, as próprias chamadas de sistema são escondidas por uma APIArquiteturas de Máquinas Virtuais
Dois Tipos de Virtualização (1)
•
Máquina Virtual Processo: virtualização
através de interpretação ou emulação
– Essencialmente realizada para um processo apenas – Prove um conjunto abstrato de instruções de máquina; programas são compilados para código de “máquina”, que é então interpretado (ex.: Java) ou emulado (ex.: Windows)Arquiteturas de Máquinas Virtuais
Uma máquina virtual processo, com combinações de múltiplas instâncias de aplicação e sistemas runtime. Provides an abstract instruction set.Dois Tipos de Virtualização (2)
•
Monitor de Máquinas Virtuais: capaz de
prover uma máquina virtual para vários e
diferentes programas simultaneamente; como
se múltiplas CPUs estivessem em execução
em uma única plataforma
– Particularmente importante em sistemas distribuídos por que as aplicações são isoladas e os erros restritos a uma única máquina virtual – Exemplos: Vmware, Xen, KVM, Qemu e VirtualBoxArquiteturas de Máquinas Virtuais
Um monitor de máquinas virtuais, com combinação de múltiplas instâncias de aplicações e sistemas operacionais. O hardware é completamente escondido pleo MMVProcessos
Parte III
Clientes
•
Máquinas cliente devem suportar a
comunicação dos usuários com servidores
remotos.
•
Uma abordagem: aplicações possuem dois
componentes:
– Um roda na máquina cliente – Um roda na máquina servidora – Eles interagem diretamente•
Middleware suporta a comunicação; ex.: através
de RPCs (Remote Procedure Calls)
Interação Cliente Servidor
Clientes
•
Outra abordagem consiste em limitar o papel do
cliente provendo uma interface para aplicações
no servidor
– De fato, a máquina cliente tornase apenas um terminal conectado ao servidor•
Isso é típico da abordagem dos thin clients
•
Simplifica a administração do sistema
Interação Cliente Servidor
Software do lado do Cliente
•
Gerenciamento da interface de usuário
•
Partes do processamento e dos dados
•
Suporte para distribuição transparente
– Ideal: o cliente não deveria ter que saber que o servidor está remotamente localizado – Stubs do lado do cliente podem prover a mesma interface que o servidor prove – acesso transparenteSoftware do lado do Cliente para
Distribuição Transparente
• Replicação transparente de um servidor utilizando uma solução no lado do cliente. A aplicação cliente transforma uma simples requisição em múltiplas requisições; recebe múltiplas respostas e transforma elas e uma única resposta.Transparência Cliente
•
Clientes podem garantir transparência
de:
– Replicação; – Acesso; – Falha.•
E sobre:
– Transparência de concorrência • Através de servidores intermediários especiais (monitores de transações)Servidores
•
Um processo que implementa um serviço para
uma coleção de clientes
•
Passivo: aguarda até a chegada de uma
requisição
•
Servidores iterativos: trata uma requisição em
um determinado tempo e retorna uma resposta
para o cliente
•
Servidores concorrentes: trabalham como um
ponto central de recebimento
– Servidores multithread versus múltiplos processos (forking)Contactando o Servidor
•
As requisições do cliente são enviadas para
uma porta do servidor
•
Como as portas são localizadas?
– Pontos finais universais. Exemplo: a porta TCP 80 é a localização das requisições HTTP.•
Outros serviços possuem número de porta
designados pelo SO; Os pontos finais precisam
ser localizados da mesma forma – talvez
através de um daemon local
Aspectos Gerais de Projeto (1)
•
Amarração entre cliente e servidor através de um
Contactando o Servidor
•
As requisições do cliente são enviadas para
uma porta do servidor
•
Como as portas são localizadas?
– Pontos finais universais. Exemplo: a porta TCP 80 é a localização das requisições HTTP.•
Outros serviços possuem número de porta
designados pelo SO; Os pontos finais precisam
ser localizados da mesma forma – talvez
através de um daemon local
•
OU …“superservidores” podem escutar várias
portas, criando servidores de acordo com a
necessidade.
Aspectos Gerais de Projeto (2)
•
Amarração entre cliente e servidor utilizando um
Stateful versus Stateless
•
Alguns servidores não mantém informação
sobre os clientes (Stateless)
– Exemplo: um servidor Web que implementa a definição padrão de requisições HTTP não precisa memorizar quais clientes o contactaram – No caso da Web, cookies são armazenados pelo navegador cliente. Qual a finalidade?•
Servidores Stateful mantém informações sobre
os clientes e o estado destes (ex.: atualização
do arquivo X).
– A perda do estado pode implicar em perda permanente de informação.Clusters de Servidores
•
Um cluster de servidores é uma coleção de
máquinas, conectadas através de uma rede,
onde cada máquina roda um ou mais servidores
•
Frequentemente os clusters ocorrem em LANs
•
Estrutura de três camadas
– As requisições do cliente são roteadas para um dos servidores através de um switch intermediário (frontend)Cluster de servidores em três camadas
•
Camada 1: o switch
•
Camada 2: os servidores
– Alguns servidores do cluster podem necessitar de máquinas específicas para processamento de dados – Em outros casos, o maior gargalo pode ser o acesso aos dados•
Camada 3: servidores de processamento de
dados (ex.: servidores de arquivos e servidores
de banco de dados)
Clusters de Servidores (1)
•
Organização geral de um cluster de servidor em
Clusters de Servidores (2)
O princípio do handoff TCP. – A camada de transporte repassa as requisições para um dos servidores
Transparência: como esconder a arquitetura do servidor do cliente?