Sistema virtual machinesEdit
Uma “máquina virtual” foi originalmente definido por Popek e Goldberg como “uma forma eficiente, isolado duplicados de uma verdadeira máquina do computador.”O uso atual inclui máquinas virtuais que não têm correspondência direta com qualquer hardware real.O hardware físico,” real-world ” rodando o VM é geralmente referido como o ‘host’, e a máquina virtual emulada naquela máquina é geralmente referido como o ‘convidado’., Um host pode emular vários convidados, cada um dos quais pode emular diferentes sistemas operacionais e plataformas de hardware.
o desejo de executar vários sistemas operacionais foi o motivo inicial para máquinas virtuais, de modo a permitir a partilha de tempo entre vários sistemas operacionais de tarefa única. Em alguns aspectos, uma máquina virtual de sistema pode ser considerada uma generalização do conceito de memória virtual que historicamente o precedeu., O CP/CMS da IBM, os primeiros sistemas a permitir a virtualização completa, implementou o compartilhamento de tempo, fornecendo a cada usuário um único sistema operacional, o sistema de Monitor de Conversação (CMS). Ao contrário da memória virtual, uma máquina virtual do sistema intitulou o Usuário para escrever instruções privilegiadas em seu código. Esta abordagem tinha certas vantagens, tais como adicionar dispositivos de entrada/saída não permitidos pelo sistema padrão.,à medida que a tecnologia evolui para a memória virtual para fins de virtualização, novos sistemas de sobreposição de memória podem ser aplicados para gerenciar a partilha de memória entre várias máquinas virtuais em um sistema operacional de computador. Pode ser possível compartilhar páginas de memória que têm conteúdo idêntico entre várias máquinas virtuais que executam na mesma máquina física, o que pode resultar em mapeamento para a mesma página física através de uma técnica denominada kernel mesma página de fusão (KSM)., Isto é especialmente útil para páginas apenas de leitura, tais como aqueles segurando segmentos de código, o que é o caso de várias máquinas virtuais executando o mesmo ou similar software, bibliotecas de software, servidores web, componentes middleware, etc. Os sistemas operacionais convidados não precisam ser compatíveis com o hardware host, tornando assim possível executar diferentes sistemas operacionais no mesmo computador (por exemplo, Windows, Linux, ou versões anteriores de um sistema operacional) para suportar software futuro.,
a utilização de máquinas virtuais para suportar sistemas operacionais distintos é popular no que diz respeito aos sistemas embarcados. Um uso típico seria executar um sistema operacional em tempo real simultaneamente com um sistema operacional complexo preferido, como Linux ou Windows. Outro uso seria para software novo e não comprovado ainda na fase de desenvolvimento, então ele corre dentro de uma caixa de areia. As máquinas virtuais têm outras vantagens para o desenvolvimento do sistema operacional e podem incluir melhor acesso à depuração e reinicialização mais rápida.,
vários VMs executando seu próprio sistema operacional guest são frequentemente envolvidos para a consolidação de servidores.
processe machinesEdit virtual
um VM de processo, às vezes chamado de uma máquina virtual de aplicação, ou gerenciado ambiente de tempo de execução (MRE), funciona como uma aplicação normal dentro de um SO host e suporta um único processo. Ele é criado quando esse processo é iniciado e destruído quando ele sai., Seu objetivo é fornecer um ambiente de programação independente de plataforma que abstrai detalhes do hardware ou sistema operacional subjacente e permite que um programa seja executado da mesma forma em qualquer plataforma.
A process VM provides a high-level abstraction-that of a high-level programming language (compared to the low-level ISA abstraction of the system VM). Os VMs de processo são implementados usando um interpretador; o desempenho comparável às linguagens de programação compiladas pode ser alcançado através do uso de compilação just-in-time.,
Este tipo de VM tornou-se popular com a linguagem de programação Java, que é implementada usando a máquina virtual Java. Outros exemplos incluem a máquina virtual Parrot e o Framework. NET, que funciona em um VM chamado o tempo de execução da linguagem comum. Todos eles podem servir como uma camada de abstração para qualquer linguagem de computador.
um caso especial de processo VMs são sistemas que abstêm sobre os mecanismos de comunicação de um cluster (potencialmente heterogêneo) de computador. Tal VM não consiste em um único processo, mas um processo por máquina física no aglomerado., Eles são projetados para facilitar a tarefa de programação de aplicações simultâneas, permitindo que o programador se concentre em algoritmos e não nos mecanismos de comunicação fornecidos pela interconect e o SO. Eles não escondem o fato de que a comunicação ocorre, e como tal não tentam apresentar o aglomerado como uma única máquina.
Ao contrário de outros processos VMs, estes sistemas não fornecem uma linguagem de programação específica, mas são incorporados em uma linguagem existente; tipicamente, tal sistema fornece ligações para várias linguagens (e.g., C e Fortran)., Exemplos são máquina virtual paralela (PVM) e interface de passagem de mensagens (MPI). Eles não são máquinas estritamente virtuais porque as aplicações que funcionam no topo ainda têm acesso a todos os Serviços de SO e, portanto, não se limitam ao modelo de Sistema.