是否有可能让计算机同时在内存中运行两个操作系统?[重复]


2

这个问题在这里已有答案:

每次我想使用另一个操作系统,或者运行一个功能匮乏的虚拟机时,我都厌倦了需要重新启动计算机。随着计算机大量内存的开始,我开始认为必须有一些方法在内存中运行两个操作系统,并在两者之间切换。在我看来,它似乎并不太难;

  • 兼容层在bios之后启动,然后启动到OS1。在OS1中,运行软件会触发保存到ram引导回到兼容层,然后引导到OS2。这样,OS可以并排使用,并且启动时间大大缩短,因为两个操作系统已经处于ram状态。

两个操作系统都有自己的指定和受保护的内存,所以没有问题...我的意思是,它似乎很好,但没有人做过,所以必须有一些原因,为什么。我很想知道这一点。


Hypervisors就像HyperV和VMWare一样工作。除了Hypervisor处理两个运行的操作系统。我不能代表VMWare,但HyperV允许您暂停操作系统并根据需要恢复它。基本上按照你的描述做。
MikeAWood

我没有尝试过这样的设置,但你正在寻找一个裸机管理程序
gronostaj 2013年

1
在我看来,除了为ram设置人为限制之外,几乎没有虚拟化。直接访问硬件可以提高兼容性。HyperV主要用于服务器,对吗?我正在考虑为任何硬件上的任何操作系统提供更实用的解决方案。此外,我认为VMWare是一个美化的虚拟机。
Hebon 2013年

1
HyperV和VMWare都像你所描述的那样为“桌面”使用制作版本,但实际上HyperV的实现是在运行Windows时运行第二个VM。否则,您需要运行HyperV Server。VMWare基本相同,VMWare Workstation的工作方式相同。
MikeAWood

1
superuser.com/questions/303869/software-to-switch-between-os/...我之前回答了一个非常类似的问题,可能会引起人们的兴趣。
Journeyman Geek

Answers:


4

您所说的完全可能,除了大多数操作系统都不会容忍意外切换外围设备的状态。

示例 - OS1正在运行,您将其挂起到RAM,然后启动OS2。所有设备(如PCI,USB等)都处于特定状态,但OS2将更改此状态。当您返回OS1时,从OS1的角度来看,所有设备驱动程序都将处于处于意外状态的设备。OS1可能会崩溃,因为它的设备驱动程序将执行设备不喜欢的操作,因为设备未处于正确的状态。

以与RAM相同的方式保存和恢复设备状态并不总是可能的。设备可能很古怪。通常,对于OS与设备交互,必须使用其驱动程序。司机可能有错误等。

现在,您可能认为可以为一个OS或另一个OS分配独有的设备。问题是,要到达设备,您需要遍历总线,而在标准PC硬件上,您将只有1或2个PCI-E总线,例如,所有PCI-E卡都连接到。因此,至少必须在您的操作系统实例之间共享总线。一个操作系统可以“踩”另一个操作系统设备,除非中间有一些活动层(如虚拟机管理程序)。在两个操作系统之间完全分离硬件非常困难。

虚拟化确实是您能做的最好的事情。


是不是可以在兼容层“清除并重启”所述设备?这样,他们在开机时会“新鲜”。也许操作系统上处理切换的软件也可以处理任何奇怪的设备问题,使其更稳定(例如不通知用户发现新硬件)。
Hebon 2013年

@Hebon,添加“兼容层”只会减慢速度。让虚拟机管理程序处理虚拟机可让您的虚拟机在需要内存和硬件等时直接与硬件通信。英特尔VT-d的解释可能有助于为您揭示它。 software.intel.com/en-us/blogs/2009/06/25 / ...
MikeAWood 2013年

@MikeAWood我在一个非常无知的意义上使用“兼容层”,因为我不知道用什么来形容我的想法。
Hebon 2013年

1

听起来像kexec。但它仅适用于基于* nix的操作系统。

Kexec是一个系统调用,使您可以从当前运行的内核加载并启动到另一个内核。这对于内核开发人员或其他需要快速重启而无需等待整个BIOS启动过程完成的人员非常有用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.