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

Dor*_*ron 4 64-bit 32-bit

我有一台支持 64 位硬件的 PC。

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

And*_*ehm 11

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 可能无法运行。Windows 也无法在 64 位模式下运行 16 位实模式代码。

在 32 位 Mac OS X 上运行的 VMware Fusion 或 Parallels 在 64 位硬件上运行 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 上运行。


BBl*_*ake 6

如果您有一个支持硬件虚拟化的处理器(最新的 Intel 支持)和支持它的 VM 软件,则当主机操作系统为 32 位时,可以在 VM 中安装 64 位操作系统。然后,您可以在 VM 内运行 64 位应用程序。但这与我所看到的差不多。