É possível inicializar dois sistemas operacionais ao mesmo tempo?
Por exemplo : No momento, estou inicializando o Ubuntu 11.04 e o Windows 7. com dupla inicialização. O Ubuntu está sendo executado em um único disco rígido de 500 gb, o Windows 7 está sendo executado no espelho RAID 1 de 1 TB. Para alternar entre os dois sistemas operacionais, é necessário reiniciar. É possível alternar entre os dois sistemas operacionais sem reiniciar?
NOTA : Estou ciente dos recursos do VirtualBox e VMWare Player - eu uso os dois. Por favor, não responda "Use Virtualization!"
EDIT: Se isso não for possível, você pode compartilhar por que 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 pelo conhecimento!
fonte
Respostas:
A maioria dos sistemas operacionais convencionais, se não todos, espera ter acesso exclusivo à funcionalidade de baixo nível do computador host (por exemplo: hardware, portas etc.) e não tem nenhum conceito de compartilhamento com mais nada - simplesmente não funciona - portanto, tentar executar dois sistemas operacionais simultaneamente no mesmo sistema requer alguma forma de árbitro transparente para proteger os sistemas operacionais um do outro - em outras palavras, um aplicativo de virtualização.
fonte
Você parece dispensar o Hyper-V e o Xen (os chamados hipervisores "bare-metal"), mesmo que eles estejam mais próximos do que você está pedindo. Sim, é virtualização, mas não da mesma maneira que o VirtualBox funciona.
Imagine que algo como o VirtualBox fosse seu próprio sistema operacional, para que você pudesse instalar um minúsculo sistema operacional VirtualBox e, em seguida, executar o Windows e o Ubuntu lado a lado como máquinas virtuais sobre o 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 próximo possível de executá-los diretamente lado a lado com o hardware e os sistemas operacionais existentes.
Você não precisa de um servidor separado para nenhum deles, basta instalar o hipervisor como se fosse o primeiro sistema operacional na máquina e, em seguida, adicionar o Windows e o Ubuntu como máquinas virtuais no hipervisor.
O Xen e o Hyper-V executam o Ubuntu e o Windows como sistemas operacionais convidados, embora possa não ser uma configuração suportada. O Xen é mais Linux e o Hyper-V é um produto MS, então eu sugiro escolher o hipervisor com base no sistema operacional com o qual você se sentir mais confortável.
fonte
A coisa mais próxima que você pode fazer ... é usar a hibernação. Infelizmente, os sistemas operacionais são estranhos o suficiente um para o outro e não há como os dois sistemas operacionais estarem executando ao mesmo tempo sem implementar a 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 e tal. Na verdade, configurei um sistema operacional convidado instalado diretamente em um SSD ... e ele foi executado mais rapidamente que o sistema operacional host.
fonte
Aqui está o simples e curto motivo pelo qual a resposta é 'não': que software controlaria seu hardware?
Se o OS 1 faz isso, você não está executando o OS 2. Se o OS 2 faz isso, então você não está executando o OS 1. Se ambos o fizerem, algum outro software teria que mediar o acesso compartilhado ao hardware físico , e isso é virtualização (que você descartou).
fonte
O que vem à mente são:
- Gerenciamento de memória (ram e cache)
- Gerenciamento de processos (threads de processo em execução)
Portanto, você provavelmente precisaria de um homem no meio do malabarismo com o uso e os processos de memória entre os dois sistemas operacionais.
Isso seria outro sistema operacional / firmware.
Portanto, se alguém implementou o SO, você pode acabar com 3 em vez de 2 OSs executando simultaneamente
EDIT-
Adicionando o que o linker3000 escreveu: gerenciamento de portas
Esse 'homem do meio' basicamente se tornará seu sistema operacional host e os outros sistemas operacionais virtualizados, levando você de volta ao que você já sabia que era uma solução
fonte
Todos os SOs que conheço exigem controle total do hardware do computador.
É teoricamente possível embora. Ambos os sistemas operacionais precisariam ser projetados para:
Se essas duas condições forem atendidas, seria possível executar dois sistemas operacionais simultaneamente, sem nenhum tipo de virtualização. Seria semelhante a dois sistemas operacionais usando multitarefa cooperativa . Obviamente, a multitarefa cooperativa foi praticamente abandonada devido ao problema de aplicativos mal escritos que se recusam a ceder o controle. Talvez dois SOs escritos corretamente tenham um bom desempenho. Então, novamente, qual seria o incentivo?
fonte
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ê deseja 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, 256 MB corrigidos por processo - limita você a 8 processos em um sistema de 2 GB. Você deseja que cada processo possa "pedir" memória e devolvê-la quando terminar.
Você também não deseja dividir dispositivos de E / S de maneira fixa entre dispositivos. Normalmente, você deseja que parte ou todo o hardware, como a memória, seja um recurso compartilhado ou, pelo menos, apenas temporariamente exclusivo para processos específicos em horários específicos. Isso requer que todos os processos não tentem fazer E / S por conta própria, mas "repitam" algo para agendar e coordenar a E / S. O agendamento é importante, pois a maioria das E / S é muito mais lenta que a CPU, portanto, você pode fazer com que a CPU funcione para outros processos enquanto aguarda E / S, mesmo em um sistema de núcleo único.
Para fazer o que foi dito acima, é preciso tirar proveito de vários recursos de hardware da CPU. Um deles é o MMU, o outro é o modo protegido. Dois sistemas operacionais poderiam compartilhar esses recursos de hardware de forma cooperativa para executar dois ou mais sistemas operacionais?
Claro, mas não há nada no hardware capaz de impedir que um sistema operacional atinja toda a memória dos outros sistemas operacionais. Se a CPU estiver no modo kernel (ela possui apenas um modo kernel), qualquer código poderá fazer qualquer coisa. É 100% possível que o código de um sistema operacional execute o código ou os dados do outro sistema operacional. E sabemos que os sistemas operacionais tiveram vulnerabilidades no passado e terão mais no futuro. Portanto, é muito ruim para segurança.
Agora, não seria legal se você pudesse colocar outra "camada" sobre isso e ter o suporte de hardware necessário para vários sistemas operacionais? É exatamente isso que os recursos de virtualização de hardware fazem, eles colocam uma barreira de hardware entre vários sistemas operacionais em execução e existe uma "interface" de nível superior chamada hypervisor. Você pode ter apenas um hypervisor. E sim, os processos em execução no sistema operacional devem passar por três camadas para executar a E / S (processo - kernel local - hypervisor)
fonte
Sei que você disse que não há virtualização, mas algo como o servidor MS Hyper V pode atender às suas necessidades
fonte
Não há outra maneira além da virtualização. Acho difícil obter informações definitivas sobre quais sistemas convidados funcionarão para os diferentes hipervisores. http://en.wikipedia.org/wiki/Hypervisor Deve ser um bom começo para obter algumas informações e o Xen pode valer a pena tentar, embora eu esperasse que alguém confirmasse ou negasse definitivamente se ele suporta os convidados do Windows 7.
fonte