Answers:
大多数(如果不是全部)主流操作系统都希望对主机的低级功能(例如:硬件,端口等)具有独占访问权限,并且不具有与其他任何设备共享的概念-它将无法正常工作-因此,要尝试在同一系统上同时运行两个操作系统,就需要某种形式的透明仲裁程序,以将操作系统彼此屏蔽,换句话说,就是虚拟化应用程序。
您似乎正在解雇Hyper-V和Xen(所谓的“裸机”虚拟机管理程序),即使它们最接近您的要求。是的,它是虚拟化,但与VirtualBox的工作方式不同。
想象一下像VirtualBox这样的东西是它自己的操作系统,因此您可以安装一个很小的VirtualBox OS,然后在VirtualBox OS之上同时运行Windows和Ubuntu作为虚拟机。好吧,这基本上就是Hyper-V或Xen所做的。它只是硬件和来宾操作系统之间的一个薄虚拟化层,与直接将它们与现有硬件和现有操作系统并排运行就近了。
您不需要任何一个单独的服务器,只需将虚拟机监控程序安装为该机器上的第一个操作系统,然后将Windows和Ubuntu作为虚拟机添加到虚拟机监控程序下即可。
Xen和Hyper-V都将作为来宾操作系统运行Ubuntu和Windows,尽管它可能不受支持。Xen更像是Linuxy,Hyper-V是MS产品,因此我建议根据您更喜欢的操作系统选择虚拟机监控程序。
您能做的最接近的事情就是利用休眠。不幸的是,操作系统彼此之间的差异是如此之大,以至于两个操作系统都无法在不实施虚拟化的情况下同时运行。老实说,虚拟化不再像您想的那样糟糕……尤其是当您使用支持“ VT”扩展的虚拟化平台时。来宾操作系统具有直接与硬件通信的能力,并且具有更好的内存映射等。实际上,我已经设置了直接安装在SSD上的来宾操作系统...它的运行速度比主机操作系统快。
这是一个简单的简短原因,答案为“否”:哪种软件可以控制您的硬件?
如果OS 1做到了,那么您就没有在运行OS2。如果OS 2做到了,那么您就没有在运行OS1。如果他们都这样做了,那么其他一些软件将不得不调解它们对物理硬件的共享访问。 ,那就是虚拟化(您已排除在外)。
我来谈谈“为什么”部分。
现代OS的原因之一是允许多个程序(进程)在系统上同时运行。如果要安全地执行此操作,则需要进行以下操作:
您可能(除非有特殊需要)不想以固定的方式分配系统中的RAM-例如,每个进程256MB固定-将您限制为2GB系统中的8个进程。您希望每个进程都可以“询问”内存,并在完成后将其返回。
您也不想以固定的方式在设备之间分配I / O设备。通常,您希望某些或所有硬件(例如内存)成为共享资源,或者至少仅在特定时间临时专有进程专用。这就要求所有进程不要试图自己做I / O,而要“经历”一些事情来安排和协调I / O。调度很重要,因为大多数I / O都比CPU慢得多,因此,即使在单核系统上,CPU在等待I / O时,也可以让CPU为其他进程工作。
要实现上述权利,需要利用多种CPU硬件功能。其中之一是MMU,另一种是保护模式。两个操作系统可以协同共享这些硬件功能以运行两个或多个OS吗?
可以,但是硬件中没有什么可以阻止一个操作系统踩踏其他操作系统内存的。如果CPU处于内核模式(它只有一个内核模式),则任何代码都可以执行任何操作。一个操作系统的代码可以100%地运行另一操作系统的代码或数据。我们知道,操作系统过去曾存在漏洞,将来还会更多。因此,这对安全性非常不利。
现在,如果您可以在上面放置另一个“层”并为多个操作系统提供所需的硬件支持,那会不会很酷?这正是硬件虚拟化功能所要做的,它们在多个运行的OS之间设置了硬件障碍,并且为它们提供了一个顶级的“接口”,称为虚拟机管理程序。您只能有一个管理程序。是的,在两种操作系统下运行的进程都必须经过三层才能进行I / O(进程-本地内核-虚拟机监控程序)
我知道您说过不进行虚拟化,但是MS Hyper V服务器之类的产品可能会满足您的需求
除了虚拟化,别无他法。我发现很难获得明确的信息,哪些来宾系统将适用于不同的管理程序。http://en.wikipedia.org/wiki/Hypervisor应该是获得一些信息的一个好的开始,Xen可能值得一试,尽管我会等待有人明确确认或拒绝它是否支持Windows 7 guest虚拟机。