Prof. Luiz Fernando Bittencourt MO809L. Tópicos em Sistemas Distribuídos 1 semestre, 2013



Documentos relacionados
Prof. Luiz Fernando Bittencourt MO809L. Tópicos em Sistemas Distribuídos 1 semestre, 2015

A computação na nuvem é um novo modelo de computação que permite ao usuário final acessar uma grande quantidade de aplicações e serviços em qualquer

Virtualização Gerencia de Redes Redes de Computadores II

Planejamento Estratégico de TI. Felipe Pontes

SISTEMAS OPERACIONAIS. Maquinas Virtuais e Emuladores

Prof. Luiz Fernando Bittencourt MC714. Sistemas Distribuídos 2 semestre, 2013

Fernando Seabra Chirigati. Universidade Federal do Rio de Janeiro EEL879 - Redes de Computadores II Professores Luís Henrique Costa e Otto Duarte

Computação em Nuvem & OpenStack

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V

Classificação::Modelo de implantação

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Operacionais 1/66

Cloud Computing. Andrêza Leite.

Sistemas Operacionais. Roteiro. Sistemas de Computadores. Os sistemas de computadores são projetados com basicamente 3 componentes: Marcos Laureano

Profs. Deja e Andrei

Cloud Computing. Edy Hayashida

Introdução a Computação nas Nuvens

João Víctor Rocon Maia Engenharia de Computação - UFES

Introdução a Virtualização. Sergio Roberto Charpinel Junior Profa. Roberta Lima Gomes

Aplicações. Sistema Operacional Hardware. Os sistemas de computadores são projetados com basicamente 3 componentes: Máquinas Virtuais e Emuladores

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Benefícios e processos relacionados à migração e servidores dedicados para cloud servers. Juliano Simões. Diretor de Tecnologia

Gerenciamento e Interoperabilidade de Redes

Prof. José Maurício S. Pinheiro UniFOA

4 Estrutura do Sistema Operacional Kernel

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Faculdade Integrada do Ceará FIC Graduação em Redes de Computadores

SISTEMAS DISTRIBUÍDOS

Virtualização e Consolidação de Centro de Dados O Caso da UTAD António Costa - acosta@utad.pt

Sistemas Operacionais

DELL POWERVAULT SÉRIE MD ARMAZENAMENTO DE DADOS MODULAR ARMAZENAMENTO DE DADOS DELL POWERVAULT SÉRIE MD

Impactos do Envelhecimento de Software no Desempenho dos Sistemas. Jean Carlos Teixeira de Araujo

CLOUD COMPUTING. Andrêza Leite.

The Eucalyptus Open-source Cloud-computing System

Virtualização de Sistemas Operacionais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Garantindo a. Máquinas Virtuais do. alta disponibilidade nas. Microsoft Azure MDC305

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 2. Cursos de Computação

NanoDataCenters. Aline Kaori Takechi

Sistemas Operacionais

CONCEITOS E APLICAÇÕES DA COMPUTAÇÃO EM NUVEM

O que é Grid Computing

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V

Estratégia da VMware: O modelo corporativo definido por software e o desafio de simplificar a TI. Anderson Ferreira Bruno Amaral 22 Ago 2014

PROPOSTA COMERCIAL CLOUD SERVER

Sistemas Operacionais 2014 Introdução. Alexandre Augusto Giron

OpenStack. Cloud Software

Resumo até aqui. Gerenciamento Proteção Compartilhamento. Infra-estrutura de Software

Windows 2008 Server. Windows 2008 Server IFSP Boituva Prof. Sérgio Augusto Godoy.

EUCALYPTUS: UMA PLATAFORMA CLOUD COMPUTING PARA

Introdução ao Modelos de Duas Camadas Cliente Servidor

Sistema Operacional Correção - Exercício de Revisão

UNIVERSIDADE FEDERAL DE SANTA CATARINA UFSC DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA INE BACHARELADO EM CIÊNCIAS DA COMPUTAÇÃO.

CloudNet: dynamic pooling of cloud resources by live WAN migration of virtual machines

O que é Cloud Computing?

Arquitetura e Sistema de Monitoramento para

CLOUD COMPUTING PEDRO MORHY BORGES LEAL. MAC Organização de Computadores Prof. Alfredo Goldman 7 de dezembro de 2010

Sistemas Operacionais

Sistemas Distribuídos

Tópicos Especiais em Redes de Telecomunicações

ATIVIDADE 1 MÁQUINAS VIRTUAIS. 1.1 Arquiteturas não virtualizadas

Processos (Threads,Virtualização e Migração de Código)

Agenda CLOUD COMPUTING I

Virtualização: VMWare e Xen

Roteamento e Comutação

Segurança da Informação

Organização e Arquitetura de Computadores I. de Computadores

SISTEMAS OPERACIONAIS

MINICURSO WINDOWS SERVER 2008 UTILIZANDO O VMWARE PLAYER

Introdução aos Sistemas Operativos

SISTEMAS DISTRIBUÍDOS

Cláusula 1.º Objecto. Cláusula 2.º Especificação da prestação

Xen e a Arte da Virtualização

Sistemas Operacionais. Conceitos de um Sistema Operacional

1

Apresentação resumida

Sistemas Distribuídos

Tópicos Especiais em Redes de Telecomunicações

Soluções IBM SmartCloud IBM Corporation

Professor Esp.: Douglas Diego de Paiva

ESTUDO DE CASO WINDOWS VISTA

Minicurso Computação em Nuvem Prática: Openstack

SISTEMAS OPERACIONAIS

Tipos de Sistemas Distribuídos (Cluster e Grid)

SISTEMAS DISTRIBUIDOS

Unidade III FUNDAMENTOS DE SISTEMAS. Prof. Victor Halla

The Eucalyptus Open- source Cloud-computing System. Janaina Siqueira Lara Wilpert Marcelo Scheidt Renata Silva

Avaliação do Uso de Xen em Ambientes de Computação de Alto Desempenho

Naomi - GT8 HARDWARE & SISTEMAS DISTRIBUÍDOS

Plataforma na nuvem do CA AppLogic para aplicativos corporativos

Introdução. Definição de um Sistema Distribuído (1) Definição de um Sistema Distribuído(2) Metas de Sistemas Distribuídos (2)

A consolidação de servidores traz uma séria de vantagens, como por exemplo:

Otimização de recursos de TI

Gabriel Oliveira do Nascimento Rogério Libarino Aguilar. UFF - Universidade Federal Fluminense

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo

Tópicos Especiais em Redes de Telecomunicações

Transcrição:

MO809L Tópicos em Sistemas Distribuídos 1 semestre, 2013

Virtualização

Virtualização Threads e processos podem ser vistos como modo de fazer mais coisas ao mesmo tempo. Porções de programas que parecem ser executados simultaneamente. Computador monoprocessado: somente uma ilusão de paralelismo através de chaveamento rápido entre threads e processos. Capacidade de fingir que há mais CPUs pode ser estendida a outros tipos de recursos. Virtualização de recursos. Utilizada há muito tempo. Renovado interesso à medida que sistemas (distribuídos) tornaram-se mais comuns e complexos.

Virtualização Sistema de computadores: interface de programação para software de alto nível. Diferentes interfaces. Conjunto básico de instruções oferecido por uma CPU. Conjunto de interfaces de programação de middlewares. Virtualização: estender ou substituir uma interface de modo a imitar o comportamento de um outro sistema. Figura 45.

Virtualização Década de 70: permitir que softwares executassem em hardwares caros de mainframes. Software não incluía somente aplicações, mas também sistemas operacionais para os quais havia sido desenvolvido. Aplicada com sucesso em mainframes IBM 370 e sucessores. Ofereciam máquina virtual para diferentes SOs.

Virtualização Hardware mais barato. Computadores mais potentes. Menor quantidade de SOs. Virtualização deixava de ser importante. Final da década de 90, virtualização voltou a se tornar importante.

Virtualização Ajuda a reduzir a quantidade necessária de plataformas de hardware para atender softwares com necessidades diferentes. Virtualização deixa que cada aplicação execute em sua própria máquina virtual, possivelmente incluindo bibliotecas e o sistema operacional. Proporciona alto grau de portabilidade e flexibilidade. Por exemplo, gerenciamento mais fácil de replicação. Servidores podem ser copiados, incluindo ambiente, dinamicamente.

Virtualização - motivação Server Consolidation: consolidar cargas de trabalho de múltiplas máquinas subutilizadas em quantidade menor de máquinas para economizar hardware, gerência, administração. Application consolidation: aplicações legadas podem necessitar de máquinas virtualizadas para rodar em máquinas mais novas. Sandboxing: isolamento de ambientes para execução de aplicações não confiáveis. Múltiplos ambientes de execução: criar múltiplos ambientes independentes com garantia de recursos para prover QoS.

Virtualização - motivação Hardware virtual: drivers SCSI virtuais, adaptadores ethernet virtuais, switches e hubs virtuais... Executar múltiplos SOs simultaneamente. Depuração: pode permitir depuração de aplicações de usuário sem preocupação com problemas de interrupção de outras aplicações/serviços. Migração: facilita migração de software. Permite empacotar aplicações junto com ambiente de execução. Teste: facilita a produção de cenários de teste arbitrários que são difíceis de produzir na prática.

Abstração e virtualização

Abstração e virtualização Abstração com interfaces bem definidas ajuda no desenvolvimento e manutenção. Escondem detalhes de implementação de nível mais baixo. Ex.: SO abstrai sistema de arquivos e endereçamento. Disco aparece como um conjunto de arquivos de tamanhos variados, escondendo setores e trilhas. Programadores manipulam arquivos pelos nomes.

Abstração e virtualização Arquitetura do conjunto de instruções (ISA) é um bom exemplo das vantagens de interfaces bem definidas. Intel e AMD implementam em seus processadores um conjunto de instruções x86, enquanto softwares são desenvolvidos para compilar e executar nesse conjunto de instruções. Limitações no uso: por exemplo, binários compilados estão amarrados à arquitetura-alvo; impede interoperabilidade. Limitação importante em computadores heterogêneos conectado por rede. Mapeamento de interface e recursos visíveis para sistema real potencialmente diferente pode contornar esse problema. Sistema virtual apresentado como outro sistema, ou múltiplos sistemas.

Abstração e virtualização Ao contrário da abstração, a virtualização não necessariamente objetiva simplificar ou esconder detalhes. Ex.: virtualização de disco transforma um disco grande único em dois virtuais menores, cada um com seu conjunto de trilhas e setores. Software de virtualização utiliza a abstração de arquivos como um passo intermediário para o mapeamento entre disco real e virtual. Escrita no disco virtual é convertida em uma escrita de arquivo no disco real. Nível de detalhes fornecido na interface de disco virtual é o mesmo do disco real; não há abstração.

Abstração e virtualização James E. Smith, Ravi Nair. The Architecture of Virtual Machines. IEEE Computer.

Arquiteturas de máquinas virtuais

Arquiteturas de Máquinas Virtuais Para discutir VMs é preciso entender arquitetura de sistemas de forma geral. Arquitetura refere-se a uma especificação formal de interfaces do sistema, incluindo comportamento lógico dos recursos gerenciados através da interface.

Arquiteturas de Máquinas Virtuais Em geral, sistemas de computadores oferecem 4 tipos diferentes de interfaces em 4 níveis diferentes: Entre hardware e software: instruções de máquina que podem ser invocadas por qualquer pograma. Entre hardware e software: instruções de máquina que podem ser invocadas somente por programas privilegiados, como o sistema operacional. Chamadas de sistema: oferecidas por um sistema operacional. Chamadas de biblioteca: conjunto conhecido como interface de aplicação de programação (API). Em muitos casos, ocultam chamadas de sistema. Fig. 46.

Arquiteturas de Máquinas Virtuais

Arquiteturas de Máquinas Virtuais Instruction Set Architecture (ISA): Divisão entre hardware e software (3) e (4). ISA de usuário: aspectos visíveis às aplicações (4). ISA de sistema: visível pelo SO, gerenciar o hardware (3). ISA de sistema é um superconjunto da ISA do usuário.

Arquiteturas de Máquinas Virtuais Application Binary Interface (IBA): Fornece acesso aos recursos de hardware disponíveis através do ISA de usuário (4) e chamadas de sistema (2). Não inclui instruções do sistema; programas interagem com o hardware indiretamente invocando serviços do SO pela interface de chamadas de sistema. Chamadas de sistema: meio do SO realizar operações no hardware no lugar do programa de usuário, verificando autenticação / segurança.

Arquiteturas de Máquinas Virtuais Application Programming Interface (API): Fornece acesso aos recursos de hardware através do ISA de usuário (4) e chamadas de bibliotecas de alto nível (1). Chamadas de sistema geralmente são feitas através de bibliotecas. Usar uma API permite portabilidade através de recompilação em sistemas que suportem a mesma API.

Arquiteturas de Máquinas Virtuais Do ponto de vista do processo, uma máquina é um espaço lógico de memória atribuído ao processo em conjunto com instruções de nível de usuário e registradores que permitem a execução do código do processo. E/S é visível somente através do sistema operacional através de chamadas de sistema. ABI define uma máquina como vista pelos processos.

Arquiteturas de Máquinas Virtuais Do ponto de vista do SO e das aplicações, o sistema é um ambiente que roda sobre uma máquina subjacente e é capaz de suportar múltiplos processos simultaneamente. Processos compartilham sistema de arquivos e outros dispositivos de E/S. Sistema sobrevive às idas e vindas dos processos. Aloca memória real e recursos de E/S aos processos e controla acesso. Da perspectiva do sistema, o hardware define a máquina; o ISA fornece interface entre sistema e a máquina.

Arquiteturas de Máquinas Virtuais Da mesma forma que há pontos de vista de máquina para processos e para sistemas, também os há para máquinas virtuais. Uma máquina virtual de processo é uma plataforma que executa apenas um processo. Existe somente para suportar o processo. Criado quando o processo é criado. Termina quando processo termina. Uma máquina virtual de sistema fornece um ambiente de sistema completo e persistente que suporta um sistema operacional com seu conjunto de processos de usuário. Fornece ao sistema operacional convidado acesso a recursos de hardware virtuais (rede, E/S etc.)

Arquiteturas de Máquinas Virtuais Processo ou sistema rodando numa VM é o convidado, enquanto a plataforma que suporta a VM é o hospedeiro. Virtualização pode ocorrer de dois modos. Virtualização de processo, através de runtime software. Virtualiação de máquina, através de virtual machine monitor.

Arquiteturas de Máquinas Virtuais Virtualização pode ocorrer de dois modos. Sistema de execução com conjunto de instruções abstrato para executar aplicações. Instruções interpretadas (p. ex. Java). Emulação (Wine) necessário imitar comportamento de chamadas de sistema (não trivial). Chamada de máquina virtual de processo (Smith e Nair) / runtime software. Fornecer um sistema que seja uma camada que protege completamente o hardware original, mas que oferece como interface o conjunto de instruções completo do mesmo (ou de outro) hardware. Pode ser oferecida simultaneamente a programas diferentes. Vários sistemas operacionais executando independente e concorrentemente na mesma plataforma. Camada chamada de Virtual Machine Monitor VMM (VMWare, Xen). Fig. 47

Arquiteturas de Máquinas Virtuais

Arquiteturas de Máquinas Virtuais VM de processo: software de virtualização está no nível de ABI ou API. Emula instruções de nível de usuário e chamadas de sistema.

Arquiteturas de Máquinas Virtuais VM de sistema: software de virtualização está entre o hardware e o software convidado. Se mostra como ISA potencialmente diferente do hospedeiro. VMM muitas vezes tem o papel de fornecer recursos de hardware virtualizados ao invés de tradução de ISA

Arquiteturas de Máquinas Virtuais Importante para confiabilidade e segurança. Isolamento de uma aplicação completa e seu ambiente. Falha não afeta outras VMs. Melhor portabilidade. Desacopla hardware e software. Permite mover ambiente completo. Máquinas paralelas Permite consolidação de servidores. Maximizar utilização.

Alguns conceitos em máquinas virtuais

Máquinas Virtuais

Máquinas virtuais Simulação completa de um sistema em outra, instrução por instrução, é técnica conhecida há décadas. Por exemplo, aplicação de propósito específico para um computador X cujo hardware ainda está em desenvolvimento. Simulador para X (processador, memória, periféricos) que rode em máquina de propósito geral G. Programas que rodam em G poderão rodar em X com mesmos resultados (exceto para questões de tempo). Programas podem usar espaço de memória simulado, dispositivos simulados, executar instruções na máquina simulada. Simulador provê uma camada de software que filtra e protege os recursos da máquina G, evitando que sejam utilizados de forma indevida pelos programas da máquina X.

Máquinas virtuais Múltiplos programas: Múltiplas cópias do simulador. Simulador capaz de dividir o tempo entre aplicações. Ambos os casos resultam numa ilusão de múltiplas cópias da interface de hardware-software da máquina X em G.

Máquinas virtuais X e G arbitrários Software de simulação pode ser muito complexo e piorar desempenho de forma impraticável. Inicialmente mais utilizado para desenvolvimento de software. X e G idênticos Muitas cópias da interface hardware-software de G em G. Cada usuário com sua cópia privada da máquina G. Escolha do SO para rodar em sua máquina privada. Desenvolver/depurar seu próprio SO. Simuladores não interferem um no outro. Slowdown menor que para X diferente de G.

Máquinas virtuais Desenvolvimento de simuladores mais eficientes de múltiplas cópias de uma máquina sobre seu próprio hardware. Parte do software para máquinas simuladas roda sobre o hardware, sem interpretação de software. Chamados de Virtual Machine Systems. Máquinas simuladas chamadas de máquinas virtuais (VMs). Software simulador: virtual machine monitor (VMM).

Máquinas virtuais VMM transforma interface única da máquina na ilusão de muitas máquinas. Cada interface (máquina virtual) é uma réplica eficiente do sistema de computação original. Com todas as instruções de processador (privilegiadas e não privilegiadas). Com todos os recursos dos sistema (memória e E/S). Diversas máquinas virtuais em paralelo permitem diversos SOs (núcleos privilegiados) concorrentemente. Máquinas virtuais fornecem réplicas isoladas de um ambiente em um sistema de computação.

Máquinas virtuais Recursos extras (CPU, memória) são usados pelo VMM. Potencial queda na vazão do sistema. Manter estado do processador virtual. Integridade de todos os registradores visíveis, bits de estado e memória reservada (controle de interrupção) devem ser preservados. Captura e simulação de instruções privilegiadas. Suporte a paginação em máquinas virtuais. Faltas de página.

Máquinas virtuais Podem ser utilizadas para manter sistemas antigos enquanto novos sistemas são testados e programas são convertidos. Adicionar novos dispositivos sem alterar SO da máquina virtual, que já suporta o dispositivo virtualizado. Teste de softwares de rede. Confiabilidade de software através de isolamento. VMM é provavelmente correta: pequena e verificável. Segurança de dados.

Máquinas virtuais Uma variedade de mecanismos e técnicas para desacoplar a arquitetura e o comportamento de hardware e software percebido pelo usuário de sua implementação física. VMM: camada entre ambientes de software e o hardware físico que é programável, transparente ao software acima dela, e usa eficientemente o hardware abaixo dela. De forma similar, virtualização de rede e armazenamento também fornecem capacidade de multiplexar, em um único recurso físico, vários sistemas virtuais isolados uns dos outros.

Máquinas virtuais Contraste com a abordagem comum de incluir camadas mais abstratas sobre a camada de abstração mais alta existente. Na última década máquinas virtuais voltaram a receber atenção. Anteriormente aplicadas a plataformas de grande porte, agora atingem plataformas pessoais. Advento do VMWare (1998) e Virtual PC (1997).

Máquinas virtuais Atualmente servidores são muito mais baratos e poderosos que no passado. Mas: custo total da posse inclui manutenção, suporte e administração, assim como custos associados a brechas de segurança e falhas. Consolidação de servidores ainda é um motivador importante para uso de máquinas virtuais.

Máquinas virtuais Uma máquina virtual pode suportar processos individuais ou sistemas completos, dependendo do nível de abstração onde a virtualização ocorre. Algumas VMs suportam uso flexível de hardware e isolamento de software, outras traduzem conjuntos de instruções. Variedade de arquiteturas de máquinas virtuais. Máquinas virtuais de processo e de sistema.

Máquinas virtuais de processo

Máquinas virtuais de processo Fornecem ambiente virtual ABI ou API para aplicações de usuário. Sistemas multiprogramados: VM de processo mais comum (muitas vezes desconsiderada como VM). Muitos sistemas operacionais suportam múltiplos processos de usuário simultâneamente através de multiprogramação. Processo tem ilusão de ter uma máquina completa para si. Cada processo tem seu próprio espaço de endereçamento, registradores e estrutura de arquivos. SO divide hardware por tempo, gerenciando os recursos disponíveis. Consequentemente, SO fornece uma VM de processo replicada para cada aplicação executada concorrentemente.

Máquinas virtuais de processo Emuladores e tradutores binários dinâmicos: Suportar binários de programas compilados para outra arquitetura. Modo direto: interpretação (fetch, decode, emulate) das instruções do convidado. Pode ser relativamente lento, necessitando muitas instruções do hospedeiro para cada instrução interpretada. Melhoria de desempenho: tradutor binário dinâmico. Traduz instruções em blocos ao invés de uma a uma e salva em cache para reuso. Utilização repetida de conjunto de instruções amortiza overhead maior na tradução.

Máquinas virtuais de processo Same-ISA binary optimizer Mesmo conjunto de instruções do hospedeiro e convidado. Propósito: realizar otimização de código durante tradução. Utiliza informações coletadas durante a interpretação para otimizar o binário on-the-fly.

Máquinas virtuais de processo High-level-language VMs Portabilidade entre plataformas é desejável em VMs de processo. Esforço de desenvolvimento caso a caso. Portabilidade total entre plataformas pode ser alcançada desenvolvendo-se uma VM de processo como parte de um ambiente de desenvolvimento de aplicações em linguagem de alto nível. HLL VM resultante não corresponde diretamente a nenhuma plataforma, mas é desenhada para facilitar portabilidade.

Máquinas virtuais de processo High-level-language VMs Portabilidade entre plataformas é desejável em VMs de processo. Esforço de desenvolvimento caso a caso. Portabilidade total entre plataformas pode ser alcançada desenvolvendo-se uma VM de processo como parte de um ambiente de desenvolvimento de aplicações em linguagem de alto nível. HLL VM resultante não corresponde diretamente a nenhuma plataforma, mas é desenhada para facilitar portabilidade.

Máquinas virtuais de processo

Máquinas virtuais de processo Sistema convencional: Compilador gera código intermediário, parecido com código de máquina mas mais abstrato. Gerador de código utiliza código intermediário para gerar binário contendo código de máquina para ISA e SO específicos. Binário é distribuído e pode ser executado em plataformas que suportam tal combinação ISA/SO.

Máquinas virtuais de processo HLL VM: Compilador gera código de máquina abstrato em ISA virtual que especifica a interface da VM. Código virtual ISA, com informações de estruturas de dados associadas (metadados) é distribuído para execução em diferentes plataformas. Cada plataforma implementa uma VM capaz de carregar e executar o ISA virtual.

Máquinas virtuais de processo HLL VM: Java MS CLI Vantagem: fácil portar aplicação uma vez que a VM e bibliotecas estejam implementadas no hospedeiro. Implementação da VM demanda esforço, mas é mais simples que desenvolver compilador completo para cada plataforma e portar todas as aplicações através de recompilação.

Máquinas virtuais de sistema

Máquinas virtuais de sistema Fornece ambiente completo onde mais um sistema operacional e seus muitos processos podem existir. Utilização de VMM permite que única plataforma de hardware suporte múltiplos ambientes de sistema operacional simultaneamente. Característica importante: isolamento entre sistemas concorrentes no mesmo hardware. Sem interferência em caso de falha.

Máquinas virtuais de sistema VMM fornece, primordialmente, replicação de plataforma. Problema central: dividir recursos de hardware limitados entre múltiplos sistemas operacionais convidados. VMM tem acesso e gerencia todos os recursos de hardware. SO convidado e suas aplicações são gerenciadas sob controle (escondido) do VMM. SO realiza instrução privilegiada ou acesso a recurso: VMM intercepta a operação, realiza verificações, e a realiza em nome do SO convidado. SO convidado não é ciente dessa camada.

Máquinas virtuais de sistema Do ponto de vista do usuário, maioria dos sistemas de VM fornecem essencialmente a mesma funcionalidade mas diferem na forma de implementação. Sistema de VMs clássico VMM diretamente sobre o hardware. VMM roda no modo de privilégio mais alto. Sistemas convidados rodam com privilégios reduzidos de forma a permitir a interceptação pela VMM. Ações de SO convidado que normalmente seriam interação direta com o hardware são tratadas pela VMM.

Máquinas virtuais de sistema Hosted VMs: Software de virtualização roda sobre um sistema operacional hospedeiro. Vantagem: usuário instala VMM como um software típico. Software de virtualização pode se apoiar no sistema operacional hospedeiro para utilizar drivers de dispositivos e outros serviços de nível mais baixo. VMWare GSX Server

Máquinas virtuais de sistema Whole-system VMs: Hospedeiro e sistema convidado podem não utilizar mesmo ISA (Ex. Windows / Power-PC). Whole-system VMs virtualizam todo o software, incluindo SO e aplicações. ISA diferentes: necessário emular códigos das aplicações e do SO. Virtual PC.

Máquinas virtuais de sistema Multiprocessor virtualization Hospedeiro é máquina grande e multiprocessada. Particionar sistema em sistemas menores multiprocessados distribuindo os recursos de hardware Particionamento físico: recursos físicos separados para cada sistema virtualizado. Alto grau de isolamento. Particionamento lógico: hardware são multiplexados no tempo entre as diferentes partições. Melhorando utilização dos recursos. Perde-se alguns benefícios de isolamento de hardware.

Máquinas virtuais de sistema Codesigned VMs Implementam ISA novo e proprietário focado em melhoria de desempenho e eficiência energética. ISA do hospedeiro pode ser completamente novo ou extensão de ISA existente. Não possui aplicações nativas. VMM como parte da implementação de hardware com propósito único de emular ISA do software convidado. VMM reside em região de memória oculta dos softwares convencionais. Inclui tradutor binário que converte instruções do convidado em seqüências otimizadas de instruções do ISA do hospedeiro, usando um cache na região de memória oculta para reutilização. Transmeta Crusoe

Máquinas virtuais de sistema Transmeta Crusoe Hardware: VLIW. Convidado: Intel IA-32 Economia de energia.

Taxonomia

Computação em nuvem

Evolução Cluster Computing Um cluster (ou aglomerado) é um tipo de sistema de processamento paralelo ou distribuído, consistindo de uma coleção de computadores independentes interconectados e trabalhando cooperativamente como um único e integrado recurso computacional. Grid Computing Originalmente para colaborações científicas. Necessidade de compartilhamento de recursos coordenado e resolução de problemas em organizações virtuais dinâmicas e multi-institucionais. Computadores (PCs, estações de trabalho, clusters, supercomputadores, laptops, pdas, smartphones,...) Agrega: Software (por exemplo, uso sob demanda de aplicações caras). Bancos de dados (por exemplo, acesso transparente a bancos de dados de genomas/proteínas). Instrumentos especiais (microscópios, lasers, telescópios,...).

Evolução P2P Não necessita de um servidor sempre ligado. Sistemas finais comunicam-se diretamente. Peers intermitentemente conectados e mudam de endereço. Paradigma que pode ser utilizado para conectar e gerenciar, por exemplo, uma grade computacional. Processos que constituem o sistema são todos iguais. Funções necessárias são executadas por todos. Interação simétrica: cliente e servidor ao mesmo tempo. Organização em rede de sobreposição.

Evolução Utility Computing Computação como mercadoria / serviço. Pagamento e/ou troca. Associado a grades computacionais (utility grids). Diversos modelos de negócio / comercialização. Cloud Computing Traz uma combinação de utility computing com virtualização. Avanço das redes e conexão à internet mais barata e mais rápida permitiu que se tornasse muito mais popular que as grades computacionais pagas.

Evolução GridEcon (2007). Grades tiveram sucesso em alguns pontos, mas não tanto quanto esperado. Usada para consolidar recursos computacionais e economizar. Por exemplo, combinar poder computacional distribuído para otimizar cálculos e diminuir tempo de desenvolvimento de produtos.

Evolução Faltava acesso a poder computacional sob demanda, facilidade de acesso, modelo de pagamento pelo uso. Poder computacional sob demanda: permite que empresas atendam demanda inesperada ou planejada de forma economicamente eficiente. Simplicidade de acesso permite usuários utilizar recursos sem muito esforço ou conhecimento técnico. Pagamento pelo uso permite minimização de investimento, permitindo empresas menores competirem com maiores.

Evolução Necessário: Service oriented computing encapsulamento e facilidade de uso. Virtualização compartilhamento transparente e consolidação de servidores. Network computing acesso uniforme à Internet. Faltavam: serviços economicamente habilitados Permitiriam avaliação de risco e

Evolução

Evolução Provedor: fornece ferramentas para a comercialização de recursos. Ajuda a contornar problemas da grade, como risco na utilização de recursos externos, falta de confiança, risco de compromisso de compra, incerteza no planejamento de capacidade. Garantias contra perda financeira na indisponibilidade ou falha de recursos.

Evolução

Cloud Computing Acesso a computadores e suas funcionalidades via Internet ou rede local. Requisição de serviço via conjunto de serviços que gerenciam um conjunto de recursos computacionais. Usuário não precisa saber onde os recursos estão, ter conhecimento sobre a tecnologia, ou ter controle sobre a infra-estrutura de computação. Tipicamente envolve a provisão de recursos dinamicamente escaláveis e frequentemente virtualizados como serviço sobre a Internet.

Cloud Computing - características Recursos sob-demanda, self-service. Acesso ubíquo pela rede. Independente de localização. Elasticidade rápida (escalabilidade). Pagamento pelo uso.

Cloud Computing motivação 1.8 zettabytes (10^21 bytes giga, tera, peta, exa, zetta) de dados criados e replicados em 2011. Se cada um fosse armazenar seus dados em dispositivos pessoais: 57.5 bilhões de ipads de 32 GB ~ $34.4 trilhões PIB dos EUA, Japão, China, Alemanha, França, Reino Unido e Itália somados. Compartilhamento dependeria fortemente de uma rede P2P. 48 horas de vídeo enviados ao youtube por minuto. 80.5 exabytes por mês de tráfego de dados na internet (~28 milhões de DVDs por hora). Relatório de usuários (AFCOM): economia de 21% ao mover aplicações para a nuvem.

Cloud Computing motivos para adoção 61% Escalabilidade 54% Economia 53% Facilidade de gerência 49% Redundância 49% Maior flexibilidade 48% Elasticidade 34% Melhoria na utilização de hardware. 32% Segurança 6% Outros Cloud Computing Outlook 2011 http://www.cloud.com/cloud-computing-outlook/survey.pdf

Cloud Computing - implementação Datacenters ocupam até 100 mil metros quadrados (17 campos de futebol). 5.75 milhões de novos servidores instalados por ano para atender aumento da demanda de serviços online. Refrigeração consome até 30% da energia em um datacenter. 1 datacenter ~ energia usada por 25.000 casas. IT: responsável por 2% das emissões globais de carbono. EUA: 14%, Datacenters, 37% Telecom, 50% dispositivos de usuário. Datacenters: 0.28% do total de energia consumida.

Cloud Computing - utilização 74% das companhias utilizam alguma serviço de nuvem (março-abril 2011). 84% dos gerentes de TI dizem que a empresa usa pelo menos uma aplicação de nuvem (maio 2011). 79% dos diretores de TI citaram que executam alguma aplicação em produção na nuvem.

Cloud Computing - utilização 64% dos diretores de TI antecipam que precisarão de novas ferramentas de gerência ao mover mais sistemas para a nuvem. Estratégia de uso hoje: Nuvem privada: 24% Nuvem pública: 37% Nuvem híbrida: 39% Estratégia de uso no futuro: 19%, 24%, 57%.

Cloud Computing prós e contras http://www.mariaspinola.com/whitepapers/an_essential_guide_to_possibilities_and_risks_of_cloud_computing- A_Pragmatic_Effective_and_Hype_Free_Approach_For_Strategic_Enterprise_Decision_Making.pdf

Cloud Computing - atributos Substrato / infra-estrutura são abstraídos e oferecidos como serviço. Construída sobre infra-estrutura escalável e flexível. Oferece provisão de serviço sob demanda e garantias (?) de qualidade de serviço. Pagamento pelo uso de recursos computacionais sem a necessidade de compromisso prévio por parte dos usuários. Compartilhada e multi-tenant (1 software vários usuários).

Cloud Computing Coleção de computadores virtualizados interconectados e dinamicamente provisionados que se apresentam como um ou mais recursos unificados. Usa-se qualquer dispositivo computacional para acessar a nuvem. Em geral, acordos de nível de serviço (SLA service level agreements) são utilizados para estabelecer os termos de serviço.

Cloud Computing Cloud computing is a model for enabling convenient, ondemand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction. This cloud model promotes availability. (NIST)

Cloud Computing Diferente de outros termos, não é uma nova tecnologia. Novo modelo de operação conjunta de tecnologias existentes. Tecnologias existentes aplicadas à negócio. Virtualização. Grid computing. Utility computing. Preço baseado em utilidade. Computação autonômica / auto-gerência. Elasticidade. Cloud computing alavanca tecnologias para promover o encontro de requisitos tecnológicos econômicos da atual demanda por tecnologia da informação.

Cloud Computing Modelos de camadas Qi Zhang; Lu Cheng; Raouf Boutaba. Cloud computing: state of the art and research challenges, JISA, 2010.

Cloud Computing Camadas Camada de hardware Gerência dos recursos físicos da nuvem. Servidores, roteadores, switches, energia, refrigeração. Tipicamente implementada em um datacenter, com milhares de servidores organizados em racks e interconectados por roteadores e switches. Problemas: Configuração de hardware, tolerância a falhas, gerência de tráfego, energia, gerência de refrigeração.

Cloud Computing Camadas Camada de infra-estrutura (ou camada de virtualização) Cria um conjunto de recursos computacionais e de armazenamento através do particionamento dos recursos físicos utilizando tecnologias de virtualização (Xen, KVM, VMWare...). Características, como atribuição dinâmica de recursos, podem ser realizadas graças à virtualização.

Cloud Computing Camadas Camada de plataforma: Construída sobre a camada de infra-estrutura. Sistema operacional e frameworks de aplicação. Minimizar o ônus de disponibilizar aplicações diretamente sobre VMs. Google App Engine opera no nível de plataforma para prover APIs que suportam implementação de armazenamento / bancos de dados e lógica de aplicações web típicas.

Cloud Computing Camadas Camada de aplicação: Nível mais alto da hierarquia. Aplicações em nuvem. Mais modular que aplicações tradicionais, permitindo que camadas evoluam independentemente (similar ao modelo ISO/OSI em redes).