如果硬件是 64 位的,是否可以在 32 位操作系统上运行 64 位应用程序?

如果硬件是 64 位的,是否可以在 32 位操作系统上运行 64 位应用程序?

我有一台具有 64 位硬件的电脑。

我安装了 32 位 Ubuntu 发行版,我想知道是否可以在其上运行 64 位应用程序(有点像 Mac OS X Snow Leopard 的工作方式)。

答案1

32 位 Mac OS X 可以在 64 位硬件上运行 64 位应用程序。

其之所以有效是因为 OS X(Darwin)内核实际上在长模式的兼容子模式下运行。

Windows 和 Linux 不会这样做,而是强制在 x86 和 x64 之间进行更清晰的划分。使用 Windows 或 Linux,您可以运行 64 位内核和 64 位驱动程序(并同时运行 64 位和 32 位程序),也可以运行 32 位内核和 32 位驱动程序(并仅运行 32 位和 16 位程序)。

请注意,实模式 16 位代码在长模式下不起作用,因此如果 Mac OS X 中存在 16 位程序,并且 Mac OS X 在长模式下运行(包括兼容模式),Mac OS X 可能无法运行 16 位程序。Windows 也无法在 64 位模式下运行 16 位实模式代码。

在 64 位硬件上的 32 位 Mac OS X 上运行的 VMware Fusion 或 Parallels 可以运行 64 位客户机。

我认为,在 64 位硬件上的 32 位 Mac OS X 上运行的每个 32 位进程都会获得 4 GB 的用户虚拟地址空间和 4 GB 的内核虚拟地址空间。我假设 64 位进程会获得 8 TB 的用户虚拟地址空间和 4 GB 的内核虚拟地址空间(因为内核在 32 位模式下运行)。

Mac OS X 内核(与大多数 Mac OS X 程序一样)是通用二进制文件,包含 PowerPC、x86(32 位)和 x64(64 位)的二进制代码。从一个平台切换到另一个平台“只需”加载二进制文件的相应部分。x86 代码会检查长模式是否可用,如果可用则切换到长模式,并在兼容模式下运行以实现所需结果。

注意:虽然 Mac OS X Snow Leopard 无法在 PowerPC 上运行,但内核仍包含 PowerPC 代码,大概是因为 PowerPC 二进制文件可能会用到它。PowerPC 二进制文件仍可在 x86 和 x64 Mac 上运行。

答案2

如果您拥有支持硬件虚拟化的处理器(最新的 Intel 处理器支持)和支持硬件虚拟化的 VM 软件,则可以在主机操作系统为 32 位时在 VM 中安装 64 位操作系统。然后您可以在 VM 内运行 64 位应用程序。但据我所知,您得到的答案几乎就是如此。

答案3

正如其他人所说,一般来说,64 位应用程序无法在 32 位操作系统上运行。

这在 OS X 上之所以有效,是因为在 10.5 中,32 位内核获得了在 32 位和 64 位用户地址空间之间复制的能力,并且有一些 64 位处理程序用于 trap/syscall 等。它本质上是一个混合内核,不需要 64 位驱动程序,但具有某些 64 位功能。

相关内容