新 Linux 用户。想知道通过 VMPlayer 在 Ubuntu/Linux Mint 中运行 Windows 7 是否与运行 Windows 7 作为主操作系统相同。
我所说的“相同”具体是指:
图形和视频渲染质量会一样好吗?
使用 HDMI 或 WiDi 等是否会出现硬件问题?
只要分配了足够的 RAM,应用程序是否就能顺利运行?
机器的功率需要多大才能没有明显差异?我的机器的具体规格是:http://www.gadgetspecs.info/2011/07/asus-u46e-bal5-review-of-specs-and.html。我也装了SSD。
背景:我目前在 Windows 7 中使用 Linux Mint 和 Ubuntu 进行了相反的设置,我发现视频质量不如 Windows 7 中的视频质量好。
答案1
我在下面补充了大量内容,但我保留了原来的答案以供参考。
TL:DR:虚拟机是一种工具,虽然它们提供了在一个操作系统中轻松使用另一个操作系统的能力,但您必须非常清楚您打算主要使用计算机做什么,才能充分利用该系统。
您的问题似乎严重倾向于使用虚拟机的图形和界面性能可能性,因此我将回答有关那里的可能性。
主要问题是为了安全地管理客户操作系统对设备的访问(从而防止客户操作系统践踏主机并破坏设备),您要使用的所有设备都必须是“模拟”的。
这意味着您的客户操作系统可以看到的显卡是不是您的主机操作系统可以看到的同一块显卡。您可能能够在客户机中启用 3D 渲染等功能,但这是由客户机中的中间驱动程序处理的,该驱动程序会以安全的方式将请求传递给主机,以便在那里渲染 3D。
非常值得怀疑的是,客户显卡驱动程序是否模拟了在受支持的 HDMI 显示器上安全播放蓝光光盘所需的功能,因此这很可能不起作用。
基本上,任何需要主机硬件支持的东西都不太可能在客户机上很好地工作,甚至根本无法工作。我不知道 WiDi 是如何工作的,但如果它需要直接访问你的显卡内存才能将其共享到电视上,那么除非你从主机 (Linux) 操作系统使用它,否则它将无法工作。
除此之外,就性能而言,虚拟机可以接近其作为主操作系统时的水平,但在硬盘设备访问或与主机正在使用的其他资源争用方面总会受到惩罚。
在一开始的时候...
最初我们有一台计算机,它只能运行一种操作系统。该操作系统往往只能在机器中的特定处理器和其他硬件上运行良好,而其他操作系统在本机硬件上运行不佳,甚至根本无法运行。
为了使人们能够在另一个平台上使用某个特定平台的软件(例如,在 Commodore Amiga 上使用 Pre-OSX MacOS 软件),需要的不仅仅是“安装软件”。这两台机器使用完全不同的处理器架构和辅助硬件。一个操作系统根本无法在另一台机器的硬件上运行。
仿真
仿真就像虚拟化的表亲,它们实际上是相关的,并且有相似的目标。可以说,一个催生了另一个。
这些不同的硬件平台意味着,如果你想在你的机器上使用另一个操作系统的一个软件,那么一切必须分析该机器的所有部件,找出其工作原理,然后编写一段代码,使其以与硬件部分相同的方式运行。必须对每个部件进行分析,包括处理器、图形控制器、内存控制器、一切。
然后把所有这些部分放在一起,由于每个部分都在模拟一个硬件,我们称之为模拟机.然后我们在这台模拟机器上运行一个操作系统。
问题是这种方法很慢。很简单,如果你能达到原始硬件速度的十分之一,那你就很幸运了。实际上,你需要一台比目标模拟机器快几倍的机器,才能以接近全速运行模拟计算机。
那么到底发生了什么变化?
嗯,这很酷。其实没什么大变化。唯一的大变化是硬件平台标准化了。我们不再为每个操作系统定制硬件,所有操作系统都转移到一个标准平台上,或者在标准平台上创建。
如今,Mac 的组件与 PC 的组件大体相同。Linux 一直在 PC 硬件上运行,因此并没有什么新意。
很长一段时间以来,如果你想要在一个操作系统上运行软件,模拟仍然是常态。或者你可以双启动并根据需要运行任一操作系统,但如果你想从在 Linux 上编码到在 Windows 上玩游戏,这会很痛苦和烦人。
进而..
有这样的想法:既然底层硬件相同,为什么两个操作系统不能共享它?
我们最终选择了 QEMU 和 WiNE 以及类似的软件解决方案。QEMU 长期以来一直是机器硬模拟的首选,而 WiNE 允许 Windows 应用程序在 Linux 上运行,方法是捕获和修补其 OS API 调用并让代码在处理器上本地运行。
QEMU 做了一些与 WiNE 类似的事情,但级别要低得多。它实际上仍然是一个模拟器,但对于每个硬件调用,它们都使用“修补和重定向”方法,以便任何调用都转到它们自己的模拟硬件平台。因为程序中的大多数工作代码实际上并不涉及硬件调用(大多数都是简单的计算流,最后有一个调用来显示结果)。
这导致现在几乎所有程序的速度都瞬间提升并非真正模拟机器。程序运行时的速度减慢更多取决于它们访问“虚拟”硬件的次数,而不是机器的模拟能力。它们的运行速度不再是十分之一,而是几乎与本机运行速度相同。
那么,如果我们现在使用该处理器,为什么我的显卡不工作?
这些新虚拟机的唯一问题是,操作系统本质上认为它直接控制全部计算机中的硬件,以便它们可以提供内存管理等功能并控制对硬件的访问。
但这意味着虚拟机至少在方法上不能完全摆脱模拟。它们仍然必须在软件中模拟某些功能,例如,必须将显卡或网卡呈现给虚拟机中运行的操作系统,以便“客户”操作系统认为它已经满的控制硬件。主操作系统(出于安全要求)必须防止程序直接访问硬件,这对客户操作系统施加了限制。
为了实现这一点,他们必须为计算机中的所有东西模拟“虚拟”硬件。现在所有代码都由处理器本地运行,因此速度并不慢,但每个虚拟硬件都必须用软件编写,这既会略微降低性能,又可能极大地影响功能。
这意味着你的虚拟显卡不能也不会拥有与你的真实的显卡。为了获得最佳性能,可以编写虚拟硬件来支持大多数常用功能,并且现在可以在虚拟机中进行 3D 渲染,但它仍然与真实硬件不同。
这意味着主机操作系统获得最佳硬件选项,而客户操作系统获得通用的硬件选项。
虚拟机并不像真实的硬件那么好,它只是一个工具,可以更容易地在另一个系统上使用一个系统的工具。
那我该怎么办?
您必须选择计算机的主要用途。
如果您想在高性能显卡上玩最新的游戏,并使用相同显卡的功能在 400 英寸 HDMI 电视上播放完整的 1080p 电影,但只是偶尔想进行一些 Linux 编程,那么以 Linux 作为客户机的 Windows 可能是您的最佳选择。
如果您想研究 Linux 内核,为计算机中的设备制作硬件驱动程序,并偶尔为 Windows 编写一些软件并在非常接近“标准”Windows 系统上对其进行测试,那么最好将 Linux 作为主机,将 Windows 作为客户机。
如果您喜欢 Mac 的易用性,但想要为 Windows 编程(或者您想要的软件包仅适用于 Windows),那么这也是一个选择。
我并不是说 Linux 不能玩游戏,或者 MacOS 不适合程序员,因为那只是一派胡言。只是唯一能说出哪种操作系统更适合你想做的事情的人是你。
你真的必须明白你想让你的机器做什么第一的只有这样,您才能明白虚拟机能为您做什么。
回答您的问题:
Will the graphics and video rendering quality will be just as good?
不可以。模拟显卡可能提供主机显卡的一些功能,但可能不支持硬件视频加速或 CUDA 编程功能等复杂功能。
Will there be any hardware issue such as using HDMI or WiDi?
同样,这些额外的功能可能不是任何可用的模拟/虚拟硬件的功能。
Will applications run just as smoothly as long as enough RAM is allocated?
大多数应用程序(只要它们不需要特定的硬件功能)都可以运行几乎只要主机和客户机的内存充足,其速度就会和在真实硬件上一样快。
答案2
虚拟机 (VM) 的运行速度总是比主机系统慢,因为客户系统必须请求主机与硬件(如显卡、硬盘、内存等)交互,因为它是在主机系统中运行的程序,无法直接控制硬件。但是,如果您的硬件可以处理它,速度缓慢可能不会太明显。
原因是处理器一次只能执行一条指令。程序通常由数千或数百万条机器指令组成。机器启动时,它会扫描主引导记录 (MBR) 以查找引导加载程序。然后,引导加载程序启动内核。内核是控制所有硬件的主要进程。多任务处理,即在多个任务之间切换,允许我们一次运行多个程序,即使在给定时刻只执行一个程序。大多数处理器只花费大约 20% 的时间执行数学计算。多核处理器允许在等待另一个核心进行数学运算时获取下一条指令,从而减少空闲时间并显著加快系统速度。除了内核之外,还有 shell(为用户提供界面)、服务/守护进程(在后台运行的进程,例如支持系统、安全性等)和应用程序。
虚拟化软件是一种应用程序,与任何其他应用程序一样,由内核管理。因此,虚拟机的内核必须等待主机内核的许可才能执行任何操作,并且会经常被中断。主机系统上运行的进程越多,分配给虚拟机的执行时间就越少,从而使其运行速度变慢。虚拟机的运行速度通常比物理机慢三到四倍。
如果您要运行游戏或类似的东西,我会分配足够的 RAM 和尽可能多的内核时间。多个处理器会有所帮助。但是,分配过多的 RAM 会降低系统速度,因为访问数据需要更长的时间,并且可能会导致主机系统上过多的硬盘缓存。但另一方面,分配太少的 RAM 会导致客户机上过多的硬盘缓存。由于 Windows 对资源的需求非常大,我会分配至少 2 到 4 GB 的 RAM,但不要将超过一半的 RAM 分配给 VM。
如果响应速度太慢,更好的选择可能是双启动。这样两个系统都可以充分利用系统资源,但不幸的是,您可能一次只能运行一个。如果这样做,您可能需要至少三个分区:一个用于 Linux,一个用于 Windows,一个(或多个)用于文件。
答案3
因此,VMWare Player 是 Type 2 虚拟机管理程序。这意味着客户机位于操作系统之上。在 Type 1 虚拟机管理程序上,虚拟化平台位于硬件之上。这是因为 VMWare Player 位于 Type 2 虚拟机管理程序上,所以它的运行速度会比 Type 1 上的运行速度慢。但是,VMWare Player 可以自定义虚拟机的硬件要求。因此,如果您的系统配备四核处理器和 4GB 内存,那么您可以提供 1 或 2 个内核,然后提供 2GB 内存(Windows x64 的最低要求),以使虚拟机高效运行。
例如,我有一台 XPS 14z,上面装有 Windows 7。我也运行 Windows 7 VM - 我为其分配了 2GB RAM 和 2 个处理器核心(我的有 4 个)。
因此,当我在其上运行程序(Notepad++、Transwiz、Outlook、Word、Excel 等)时,没有明显的减速。我从未尝试在其上运行密集型软件(Photoshop 等)。因此,取决于您使用它的目的 - 类型 2 虚拟机管理程序可能适合或不适合您的需求。如果您想将其用于游戏,则取决于游戏。我已经在其上运行了一些 Steam 游戏,没有遇到任何问题(我有时将 RDP 从我的 Fedora 机器传输到我的 VM),但这实际上取决于游戏的要求。对于任何意义上的游戏,我都不会使用 VM 来玩。我在我的 W7 机器上玩游戏,然后使用 VM(实际上是 Fedora)做其他事情。您希望最密集的应用程序首先访问硬件。
答案4
VM 技术的问题在于,如果您正在使用上述内存运行实际操作系统,它无法以相同的方式寻址您的物理内存。VM 映像使用逻辑内存寻址,如果它使用相同的物理寻址空间运行,您将无法同时运行两个操作系统。尽管现代 VM 已经取得了长足的进步,您甚至可以说 90%-95% 的游戏质量,但它们仍然缺乏全速运行游戏的能力。90%-95% 纯粹是针对计算机内存的逻辑寻址与物理寻址。现在只涵盖内存寻址/分配参数,另一个问题是 Windows 使用 DirectX,据我所知,包括 VMware 在内的任何 VM 软件都无法完全支持任何最新的 DX。因此,如果使用 DX 9 以外的任何东西,您就完蛋了。
Linux 上的 QEMU 可能是最适合游戏的!