É possível ter um computador executando dois SO's na memória ao mesmo tempo? [duplicado]

2

Estou farto de precisar reiniciar o computador toda vez que quiser usar outro sistema operacional ou executar uma máquina virtual que economize energia. Com o início de grandes quantidades de memória para computadores hoje em dia, comecei a pensar que deve haver alguma maneira de executar dois sistemas operacionais na memória, com uma maneira de alternar entre os dois. Na minha opinião, não parece muito difícil;

  • uma camada de compatibilidade é inicializada após o BIOS, que por sua vez inicializa no OS1. Enquanto no OS1, o software é executado, o que dispara um salvamento para o RAM inicializar de volta para a camada de compatibilidade e, em seguida, inicializa no OS2. Dessa forma, os sistemas operacionais podem ser usados lado a lado e os tempos de inicialização são drasticamente reduzidos, pois os dois sistemas operacionais já estão em memória RAM.

Ambos os sistemas operacionais têm sua própria memória designada e protegida, portanto não há nenhum problema ... Quero dizer, parece bom, mas ninguém fez isso, então deve haver alguma razão para o porquê. Eu adoraria alguma ideia sobre isso, por favor.

    
por Hebon 05.11.2013 / 03:43

2 respostas

3

O que você diz é totalmente possível, exceto que a troca inesperada dos estados dos dispositivos periféricos não será tolerada pela maioria dos sistemas operacionais.

Exemplo - o OS1 está em execução, você o suspende para a RAM e, em seguida, inicializa o OS2. Todos os dispositivos, como PCI, USB, etc., estão em um estado específico, mas o OS2 mudará esse estado. Quando você retornar ao OS1, todos os drivers de dispositivo estarão trabalhando com dispositivos em estados inesperados do ponto de vista do OS1. O OS1 provavelmente falhará, pois seus drivers de dispositivo farão coisas que os dispositivos não gostam, já que os dispositivos não estão nos estados adequados.

Nem sempre é possível salvar e restaurar estados de dispositivos da mesma maneira que você usaria RAM. Dispositivos podem ser peculiares. Normalmente, para que um SO interaja com um dispositivo, seu driver terá que ser usado. Drivers podem ter bugs, etc.

Agora, você pode pensar que poderia atribuir dispositivos exclusivos a um sistema operacional ou outro. O problema é que, para chegar a um dispositivo, você precisará atravessar um barramento e, em um hardware de PC padrão, você só terá 1 ou 2 barramentos PCI-E, por exemplo, conectados a todas as placas PCI-E. Então, pelo menos, o ônibus terá que ser compartilhado entre suas instâncias do sistema operacional. Um sistema operacional pode "pisar" em outros dispositivos do sistema operacional, a menos que haja alguma camada ativa (como um hipervisor) no meio. É muito difícil separar completamente o hardware entre dois sistemas operacionais.

A virtualização é realmente o melhor que você pode fazer.

    
por 05.11.2013 / 04:00
1

soa como kexec .Mas só está disponível em SOs baseados em * nix.

Kexec is a system call that enables you to load and boot into another kernel from the currently running kernel. This is useful for kernel developers or other people who need to reboot very quickly without waiting for the whole BIOS boot process to finish.

    
por 05.11.2013 / 07:54