Loading AI tools
criação virtual de hardware, sistemas operacionais ou redes para simulação de ambientes computacionais Da Wikipédia, a enciclopédia livre
Em computação, virtualização é o ato de criar uma versão virtual (ao invés de real) de algo, incluindo a simulação de uma plataforma de hardware, sistema operacional, dispositivo de armazenamento ou recursos de rede.
Este artigo ou parte de seu texto pode não ser de natureza enciclopédica. (Julho de 2021) |
A virtualização começou na década de 1960, como um método de dividir logicamente os recursos do sistema fornecidos pelos computadores mainframe entre diferentes aplicações. Desde então, o significado do termo foi ampliado.[1]
É a tecnologia central de datacenters e essencialmente transforma, obedecidas certas condições, um servidor físico em vários servidores virtuais.[2] Os servidores virtuais criados com a virtualização oferecem um ambiente similar ao de um servidor físico e otimizam o uso de recursos, tornando as aplicações independentes do hardware. O principal motivo apontado pelas organizações para fazerem uso da virtualização tem sido a redução de custos de hardware, a melhoria da condição de recuperação a desastres e a economia de espaço para datacenters.[2]
Pode- se afirmar que o artigo “Time Sharing Processing in Large Fast Computers”, por Chrisopher Strachey, cientista da computação, na Conferência Internacional de Processamento de Informação realizada em Nova Iorque em 1959, deu início a ideia de virtualização, o qual tratou do uso de multiprocessamento em tempo compartilhado e estabeleceu um novo conceito de utilização de máquinas de grande porte.[2]
Posteriormente a IBM introduziu o multiprocessamento nos mainframes, o que permitiu que várias unidades de processamento trabalhassem como uma só, antecipando o conceito de virtualização. Seguindo, a IBM lança então seu Sistema Operacional VM (Virtual Machine), baseado no conceito de hipervisor, que é a camada que permite que vários sistemas operacionais rodem de forma isolada em um único hardware.
Até o final da década de 1990 existia uma dificuldade tecnológica para a implementação da virtualização em servidores x86.
Em 1998 a criação da VMware é tida como marco dessa nova era, criada por Diana Greene e Mendel Rosenblum, que desenvolveram o primeiro hipervisor que permitia a virtualização de servidores em plataformas baixas x86. Já existia a empresa Connectix que desde 1996 tratava a virtualização em ambientes Mac, a qual foi adquirida pela Microsoft em 2003 vindo a lançar em 2004 seu primeiro produto com foco em virtualização o “Microsoft Virtual Server 2005”. A empresa VMware foi adquirida pela ECM em 2004.[2]
Virtualização, basicamente, é a técnica de separar aplicação e sistema operacional dos componentes físicos. Por exemplo, uma máquina virtual possui aplicação e sistema operacional como um servidor físico, mas estes não estão vinculados ao software e pode ser disponibilizado onde for mais conveniente. Uma aplicação deve ser executada em um sistema operacional em um determinado software. Com virtualização de aplicação ou apresentação, estas aplicações podem rodar em um servidor ou ambiente centralizado e ser deportada para outros sistemas operacionais e hardwares.[3][4]
Workload ou carga de trabalho constitui-se dos dados a serem processados e das instruções a serem executadas sobre esses dados e define a qualidade de serviço percebida pelo usuário na ponta. Logicamente, a workload varia de acordo com a aplicação a ser processada. Assim ela é definida pela demanda da aplicação e SGBD, combinando as diversas solicitações tais como transações online, bath Jobs, consultas analíticas e comandos dirigidos a aplicação.[2]
O Throughput define a capacidade de hardware/software para processar os dados e é composto por velocidade I/O, velocidade de CPU, capacidade de paralelismo e eficiência do SO.[2]
Cada vez mais empresas estão buscando formas de reduzir os custos e complexidade com o ambiente de TI. A virtualização se tornou um componente chave para o desenvolvimento de uma estratégia eficiente na busca destes objetivos. Dentre os desafios enfrentados nos ambientes de data centers, e cuja solução pode ser encontrada na virtualização, podemos destacar:
Abaixo, as formas mais comuns de virtualização:
Um dos componentes críticos para a implantação de um projeto de virtualização, independente da tecnologia utilizada, são as ferramentas de gerenciamento. As ferramentas que gerenciam o ambiente virtual devem gerenciar tanto o ambiente físico como o virtual, assim como sistema operacional e aplicações.
As instruções de virtualização são processadas em variáveis locais utilizando um modelo principal modelo de computação, usualmente cada stack machine, register machine, ou Random access machine são chamadas de máquina memória. A utilização destas três técnicas é motivada por técnicas de otimização de máquinas virtuais e máquinas físicas, como a facilidade utilização do interpretador, compilação e verificação para a segurança.
O gerenciamento de memória nestes sistemas portáveis de virtualização inicia-se num nível superior de abstração que num caso típico de máquina física. Alguns programas de virtualização, como a popular JVM, gerem os endereços de memória numa determinada maneira, que requerem um seguro gerenciamento automático da memória permitindo à maquina virtual manter registos de referências indicativas, e não permitir que o código fonte possa construir novas referências indicativas na memória. Outros tipos de software de virtualização como os LLVM, são mais parecidos como uma computador tradicional, permitindo o uso e manipulação de indicadores de memória. A CIL oferece uma solução híbrida entre as soluções apresentadas, oferecendo os dois tipos de controle da memória (como o JVM, que permite gestão de memória automática), e também um modo "inseguro" que permite manipulação de indicadores num modo que pode violar os constrangimento dos tipo e suas permissões.
Segurança do programa refere-se habilidade do software portável da virtualização executar código enquanto subscreve determinado conjunto de capacidades. Por exemplo, uma máquina virtual pode somente deixar aceder a um conjunto de instruções ou dados. Os mesmos controles sobre indicadores que tornam a gestão automática da memória possível e segurança do programa, asseguram que um fragmento de código só têm acesso a um determinado conjunto de elementos da memória e não pode subverter a própria máquina virtual. Outros mecanismos de segurança são aplicados no seguimento de técnicas de verificação do código, verificação de pilhas, e outros processos.
Um Interpretador permite aos programas compostos de instruções de virtualização serem preparados e executados imediatamente sem sofrerem um atraso potencialmente caro de compilação em código de máquina. Qualquer sistema de virtualização que pode ser executado pode ser interpretado, por isso a designação da coluna aqui, refere-se a questão da implementação inclui provisões para uma interpretação eficiente. (para usos comuns).
Compilador just-in-time ou JIT, refere-se ao método de compilação do código nativo diferindo para o último momento possível, de preferência mesmo antes ou durante a execução do programa. A dificuldade do JIT tem a ver mais com a implementação que arquitetura da máquina de virtualização, mesmo assim, novas teorias e implementações começaram a ter em conta a eficiência. A técnicas mais simples de JIT, simplesmente executam a compilação para um fragmento-código de maneira similar a um compilador tradicional. As técnicas mais utilizadas, têm em conta o tipo de código especializado aos parâmetros que só são conhecidos na altura da execução. (ver en:Adaptive optimization).
Pre-compilação refere-se a uma técnica mais clássica de utilização de um compilador offline para gerar o código nativo que não se altera durante a execução. Pelas razões que uma compilação agressiva e otimização podem demorar tempo, um programa pré-compilado pode iniciar a execução mais rápido que outro que dependo somente da técnica JIT. As implementações JVM reduziram esta diferença do custo de carregamento do programa, inicialmente utilizando interpretação, até que alguns fragmentos de código nativo possam ser gerados através do JIT.
Biblioteca compartilhada é uma técnica para reutilizar os segmentos de código nativo entre vários programas que estão em execução. Nos sistemas operativos modernos, isso geralmente significa que a memória virtual partilha páginas de memória que contem bibliotecas partilhadas de diferentes processos que estão protegidos de outros processos através da proteção de memória. É interessante que técnicas agressivas de JIT como a optimização adaptativa, usualmente produz fragmentos de código não reutilizável ou compartilhar com outros processos ou mesmo novas execução do programa, requerendo um compromisso entre eficiência do código pré-compilado e código partilhável e as vantagens do código especializado e adaptativo. Por exemplo, algumas provisões no desenho e estrutura do CIL estão presentes para permitir a partilha eficiente das bibliotecas, possivelmente com o custo de código JIT mais especializado. A implementação JVM no Mac OS X utiliza o Java Shared Archive (apple docs) para dar algum benefício da técnica de compartilha de biblioteca.
Virtualização de hardware ou virtualização de plataforma refere-se à criação de uma máquina virtual que funciona como um computador real com um sistema operacional. O software executado nessas máquinas virtuais é separado dos recursos de hardware subjacentes. Por exemplo, um computador que esteja executando o Microsoft Windows pode hospedar uma máquina virtual, que se parece com um computador, com o sistema operacional Ubuntu Linux; Os softwares baseados no Ubuntu podem ser executados na máquina virtual de acordo com a lei n° 1034165/4154206416.
A virtualização aninhada torna-se mais necessária à medida que os sistemas operacionais difundidos ganham a funcionalidade integrada do hypervisor, que em um ambiente virtualizado pode ser usado somente se o hypervisor circundante oferecer suporte à virtualização aninhada. Por exemplo, o Windows 7 pode executar aplicativos do Windows XP dentro de uma máquina virtual integrada. Além disso, mover ambientes virtualizados existentes para uma nuvem, seguindo a abordagem de infraestrutura como serviço (IaaS), é muito mais complicado se a plataforma IaaS de destino não suportar virtualização aninhada.
A forma como a virtualização aninhada pode ser implementada em uma arquitetura de computador específica depende dos recursos de virtualização assistida por hardware suportados. Se uma arquitetura específica não fornecer suporte de hardware necessário para virtualização aninhada, várias técnicas de software são empregadas para ativá-la. Com o tempo, mais arquiteturas ganham suporte de hardware necessário. Por exemplo, desde a microarquitetura Haswell (anunciada em 2013), a Intel começou a incluir o VMCS shadowing como uma tecnologia que acelera a virtualização aninhada.
Máquinas virtuais que executam sistemas operacionais proprietários exigem licenciamento, independentemente do sistema operacional da máquina host. Por exemplo, a instalação do Microsoft Windows em uma instalação VM (guest) requer que seus requisitos de licenciamento sejam atendidos.
A virtualização de desktops é o conceito de separar o desktop lógico da máquina física.
Uma forma de virtualização de desktops, a infraestrutura de desktop virtual (VDI), pode ser considerada uma forma mais avançada de virtualização de hardware. Em vez de interagir diretamente com um computador host por meio de teclado, mouse e monitor, o usuário interage com o computador host usando outro computador ou dispositivo móvel por meio de uma conexão de rede, como LAN, LAN Wireless ou até mesmo a Internet. Além disso, o computador host nesse cenário se torna um computador servidor capaz de hospedar várias máquinas virtuais ao mesmo tempo para vários usuários.
À medida que as organizações continuam a virtualizar e a convergir seu ambiente para data centers, as arquiteturas de clientes também continuam a evoluir para aproveitar a previsibilidade, a continuidade e a qualidade do serviço oferecido por sua infraestrutura convergente. Por exemplo, empresas como a HP e a IBM fornecem um modelo VDI híbrido com uma variedade de modelos de software e entrega de virtualização para melhorar as limitações da computação distribuída do cliente.
Ambientes de clientes selecionados movem cargas de trabalho de PCs e outros dispositivos para servidores de data center, criando clientes virtuais bem gerenciados, com aplicativos e ambientes operacionais de clientes hospedados em servidores de armazenamento no data center. Para os usuários, isso significa que eles podem acessar sua área de trabalho de qualquer local, sem estarem vinculados a um único dispositivo cliente. Como os recursos são centralizados, os usuários que se deslocam entre locais de trabalho ainda podem acessar o mesmo ambiente de cliente com seus aplicativos e dados. Para os administradores de TI, isso significa um ambiente de cliente mais centralizado e eficiente, mais fácil de manter e capaz de responder mais rapidamente às novas necessidades do usuário e da empresa.
Outra forma, a virtualização de sessão, permite múltiplos usuários se conectarem e acessarem, pela rede, a um computador compartilhado, mas poderoso, e o usem simultaneamente. Cada um recebe uma área de trabalho e uma pasta pessoal na qual armazenam seus arquivos. Com a configuração multi-terminal, a virtualização de sessão pode ser realizada usando um único PC com vários monitores, teclados e mouses conectados.
Cliente Thin, que são vistos na virtualização de desktops, são computadores simples e/ou baratos, projetados principalmente para conectar-se à rede. Elas podem não ter espaço de armazenamento em disco rígido, RAM ou até mesmo poder de processamento, mas muitas organizações estão começando a considerar os benefícios de eliminar desktops robustos que estão cheios de software (e exigem taxas de licenciamento) e fazer investimentos mais estratégicos. A virtualização de desktops simplifica o controle de versão de software e o gerenciamento de patches, onde a nova imagem é simplesmente atualizada no servidor e a área de trabalho obtém a versão atualizada quando é reinicializada. Ele também permite o controle centralizado sobre quais aplicativos o usuário pode acessar na estação de trabalho. A migração de desktops virtualizados para a nuvem cria HVDs (Hosted Virtual Desktops), nos quais as imagens da área de trabalho são gerenciadas e mantidas centralmente por uma empresa especializada em hospedagem. Os benefícios incluem a escalabilidade e a redução do gasto de capital, que é substituído por um custo operacional mensal.
Em soma aos métodos de virtualização portável descritas acima, as máquinas virtuais são usualmente utilizadas como modelo de execução para linguagens individuais de script. Esta tabela descreve as implementações de máquinas virtuais, ambos da categoria de máquinas virtuais portáveis e máquinas virtuais de linguagens de script.
Máquina virtual | Linguagens | Comentários | Interpretador | Compilação Just in Time | Linguagem de implementação | Linhas de código fonte |
---|---|---|---|---|---|---|
Adobe Flash Player (aka Tamarin) | ActionScript, SWF (formato ficheiro) | Ferramenta de autoria web interativa. bytecode é chamado de "ActionScript Byte Code (.abc)" | Sim | Sim | C++ | 135k (lançado inicialmente) |
BEAM | Erlang, Reia, Lisp Flavoured Erlang, Elixir | Existe um compilador de código nativo, HiPE. | Sim | Não | C | 247k |
Clipper p-code | Clipper, Harbour | plankton, HVM | Sim | Não | C | |
Dis (Inferno) | Limbo | Dis Virtual Machine Specification | Sim | Sim | C | 15k + 2850 por JIT arch + 500 por host OS |
DotGNU/Portable.NET | Linguagens de programação CLI incluindo: C# | Clone do Common Language Runtime | Não | Sim | C, C# | |
Forth | Forth | Funções estão simplificadas, normalmente contêm assembler, compilador, interpretadores de nível-textos e nível-binários, algumas vezes com editor, depurador e sistema operacional. Velocidade de compilação é >20 SKLOC/S e comporta-se como JIT. | Sim | Não | Forth, Forth Assembler | 2.8K to 5.6K; avançado, implementações profisionais são menores. |
Icon | Icon | |||||
JVM | Java, Jython, Groovy, JRuby, C, C++, Clojure, Scala e outros | Implementação de Referência por Sun; OpenJDK: código sob GPL; IcedTea: código e ferramentas sob GPL | Sim | Sim | JDK, OpenJDK & IcedTea com JIT regular: Java, C, ASM; IcedTea com o "Zero" JIT: Java, C | JVM contêm cerca de 6500k linhas; TCK é 80k de testes e têm cerca de 1000k linhas |
LLVM | C, C++, Objective-C, Ada, e Fortran | MSIL, C and C++ output are supported. ActionScript Byte Code output is supported by Adobe Alchemy. bytecode is named "LLVM Bytecode (.bc)". assembly is named "LLVM Assembly Language (*.ll)". | Sim | Sim | C++ | 811k[8] |
MMIX | MMIXAL | |||||
Mono | Linguagens CLI incluindo: C#, VB.NET, IronPython, IronRuby e outros | Clone do Common Language Runtime. | Sim | Sim | C#, C | 2332k |
Oz | Oz, Alice | |||||
NekoVM | Atualmente Neko e haXe | Sim | x86 apenas | C | 46k | |
O-code machine | BCPL | |||||
UCSD p-System | Pascal | UCSD Pascal, muito utilizado no final da década de 1970 incluindo o Apple II | ||||
Parrot | Perl (6 & 5), PASM, PBC, BASIC, bc, C, ECMAScript, Lisp, m4, Tcl, WMLScript, XML, e outros | Sim | Sim | C, Perl | 111k C, 240k Perl | |
Perl virtual machine | Perl | andador de ávore de op-code | Sim | Não | C, Perl | 175k C, 9k Perl |
CPython | Python | |||||
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.