É possível inicializar dois sistemas operacionais ao mesmo tempo?

31

É possível inicializar dois sistemas operacionais ao mesmo tempo?

Por exemplo : estou atualmente reiniciando o Ubuntu 11.04 e o Windows 7. O Ubuntu está rodando em um único disco rígido de 500GB, o Windows 7 está rodando em um espelho de 1TB RAID 1. Para alternar entre os dois sistemas operacionais, uma reinicialização é necessária. É possível alternar entre os dois sistemas operacionais sem reiniciar?

OBSERVAÇÃO : Estou totalmente ciente dos recursos do VirtualBox e do VMWare Player - eu uso os dois. Por favor, não responda "Use Virtualization!"

EDITAR: Se isso não for possível, você pode compartilhar porque não é possível? Para mim, não parece que seria tão difícil. Tenha em mente que minha visão não está sobrecarregada de conhecimento!

    
por James Hill 08.09.2011 / 14:33

9 respostas

35

A maioria, senão todos, os sistemas operacionais tradicionais esperam ter acesso exclusivo à funcionalidade de baixo nível do computador host (por exemplo: hardware, portas etc.) e não têm nenhum conceito de compartilhamento com qualquer outra coisa - ele apenas ganhou ' t work - então, para tentar executar dois sistemas operacionais simultaneamente no mesmo sistema, é necessário algum tipo de arbitrador transparente para proteger os sistemas operacionais uns dos outros - em outras palavras, um aplicativo de virtualização.

    
por 08.09.2011 / 15:17
13

Você parece estar descartando Hyper-V e Xen (chamados hipervisores "bare-metal"), embora eles estejam mais próximos do que você parece estar pedindo. Sim, é virtualização, mas não da mesma forma que o VirtualBox funciona.

Imagine algo como o VirtualBox era o seu próprio sistema operacional, então você poderia instalar um pequeno sistema operacional VirtualBox, e então rodar o Windows e o Ubuntu lado a lado como máquinas virtuais no topo do sistema operacional VirtualBox. Bem, isso é essencialmente o que o Hyper-V ou o Xen fazem. É apenas uma fina camada de virtualização entre o hardware e os sistemas operacionais convidados, e é o mais perto possível de executá-los diretamente lado a lado com o hardware existente e os sistemas operacionais existentes.

Você não precisa de um servidor separado para qualquer um desses, basta instalar o hipervisor como se fosse o primeiro sistema operacional da máquina e depois adicionar o Windows e o Ubuntu como virtuais máquinas sob o hipervisor.

Tanto o Xen quanto o Hyper-V executarão o Ubuntu e o Windows como sistemas operacionais convidados, embora possa não ser uma configuração suportada. O Xen é mais Linuxy e o Hyper-V é um produto MS, então sugiro escolher o hipervisor baseado em qualquer sistema operacional com o qual você esteja mais confortável.

    
por 09.09.2011 / 02:09
8

A coisa mais próxima que você pode fazer é usar a hibernação. Infelizmente, os sistemas operacionais são alienígenas o suficiente para que não haja maneira de os dois sistemas estarem sendo executados ao mesmo tempo sem a implementação da virtualização. Honestamente, a virtualização não é tão ruim quanto você pensa ... especialmente quando você está usando uma plataforma de virtualização que suporta as extensões "VT". Os sistemas operacionais convidados têm a capacidade de se comunicar diretamente com o hardware e têm um mapeamento de memória muito melhor & tal. Na verdade, eu configurei um sistema operacional convidado instalado diretamente em um SSD ... e ele rodou mais rápido que o sistema operacional host.

    
por 08.09.2011 / 15:18
7

Aqui está a razão simples e curta, a resposta é 'não': qual software controlaria seu hardware?

Se o OS 1 fizer isso, você não estará executando o OS 2. Se o OS 2 fizer isso, você não estará executando o OS 1. Se os dois fizerem isso, algum outro software terá que mediar o acesso compartilhado o hardware físico, e isso é virtualização (que você descartou).

    
por 08.09.2011 / 18:47
2

As coisas que vêm à mente são:
    - Gerenciamento de memória (ram e cache)
   - Gerenciamento de processos (encadeamentos de processos em execução)

Então, você provavelmente precisaria de um homem no meio para manipular o uso de memória e os processos entre os dois sistemas operacionais.

Isso seria outro os / firmware.
Então, se alguém implementou o os implementará, você pode acabar com 3 em vez de 2 OSs rodando simultaneamente

EDIT-
Adicionando o que o linker3000 escreveu: gerenciamento de portas

Esse 'homem no meio' essencialmente se tornará seu SO host e os outros SOs virtualizados, levando você de volta ao que você já sabia que era uma solução

    
por 08.09.2011 / 15:20
2

Todos os SOs estão cientes do controle total da demanda do hardware do computador.

É teoricamente possível, no entanto. Ambos os sistemas operacionais precisariam ser projetados para:

  • Executar como mestre (controle total de hardware) e escravo (solicita recursos do sistema operacional mestre)
  • Renunciar ao controle do hardware mediante solicitação de outro sistema operacional

Se ambas as condições forem atendidas, seria possível executar dois sistemas operacionais simultaneamente sem qualquer tipo de virtualização. Seria semelhante a dois sistemas operacionais usando multitarefa cooperativa . É claro que a multitarefa cooperativa foi praticamente abandonada por causa da questão de aplicativos mal escritos que se recusam a ceder o controle. Talvez dois SOs escritos adequadamente fossem bons. Então, novamente, qual seria o incentivo?

    
por 08.09.2011 / 21:53
1

Deixe-me abordar a parte "por que".

Uma das razões para um sistema operacional moderno é permitir que vários programas (processos) sejam executados ao mesmo tempo em um sistema. Se você quiser fazer isso com segurança, o seguinte precisa acontecer:

  • Você provavelmente (a menos que tenha necessidades especiais) não deseja dividir a RAM no sistema de maneira fixa - por exemplo, 256MB fixos por processo - limita a 8 processos em um sistema de 2GB. Você gostaria que cada processo pudesse "pedir" memória e devolvê-lo quando estivesse pronto.

  • Você também não deseja dividir os dispositivos de E / S de forma fixa entre os dispositivos. Normalmente, você deseja algum ou todo o hardware, como a memória para ser um recurso compartilhado ou, pelo menos, apenas temporariamente exclusivo para processos específicos em momentos específicos. Isso requer que todos os processos não tentem fazer a E / S sozinhos, mas "passar por" algo para programar e coordenar a E / S. O escalonamento é importante, pois a maioria das E / S é muito mais lenta do que a CPU, então você pode fazer com que a CPU trabalhe para outros processos enquanto aguarda a E / S, mesmo em um sistema single-core.

Para fazer o direito acima, é necessário tirar proveito de vários recursos de hardware da CPU. Uma delas é a MMU, a outra é o modo protegido. Poderiam dois sistemas operacionais compartilhar esses recursos de hardware cooperativamente para executar dois ou mais sistemas operacionais?

Claro, mas não há nada no hardware capaz de impedir que um sistema operacional pise em toda a memória dos outros sistemas operacionais. Se a CPU estiver no modo kernel (só tem o um modo kernel), qualquer código pode fazer qualquer coisa. É 100% possível para o código de um sistema operacional rodar sobre o código ou dados do outro sistema operacional. E sabemos que os sistemas operacionais tiveram vulnerabilidades no passado e terão mais no futuro. Então é muito ruim para segurança.

Agora, não seria legal se você pudesse colocar outra "camada" sobre isso e ter esse suporte de hardware necessário para vários sistemas operacionais? Isso é exatamente o que os recursos de virtualização de hardware fazem, eles colocam uma barreira de hardware entre vários sistemas operacionais em execução e há uma "interface" de nível superior para eles chamada de hypervisor. Você só pode ter um hipervisor. E sim, processos rodando sob qualquer SO devem passar por três camadas para fazer I / O (process - local kernel - hypervisor)

    
por 10.06.2015 / 03:01
0

Eu sei que você disse que não há virtualização, mas algo como o servidor MS Hyper V pode atender às suas necessidades

    
por 08.09.2011 / 14:39
0

Não há outro caminho além da virtualização. Acho difícil obter informações definitivas sobre quais sistemas convidados funcionarão para os diferentes hipervisores. link Deve ser um bom começo para obter alguma informação e Xen pode valer a pena tentar, embora eu espere alguém definitivamente confirme ou negue se ele suporta convidados do Windows 7.

    
por 08.09.2011 / 15:32