如果先安装 3GB 内存,64 位 Win 8.1 是否会使用超过 4GB 内存?

如果先安装 3GB 内存,64 位 Win 8.1 是否会使用超过 4GB 内存?

我在 3 GB 内存上安装了 Windows 8.1 64 位。后来我升级到了 4 GB。

我想知道 Windows 8.1 是否会确实除了能够访问这个增加的内存之外,还能使用这 4 GB 来运行 x64 地址吗?

或者我需要重新安装以确保它使用 x64 指令?

我不得不提出这个问题,因为 Win 8.1 在升级前后都使用 32 位 wmplayer、explorer 等。我没有看到Windows\SysWow64文件夹中的任何程序。只有Windows\System32文件夹中的程序出现在任务管理器中。

答案1

你搞反了。这很令人困惑,但对于 64 位 Windows,\system32 有 64 位程序,而 \SysWOW64 有 32 位程序

自己查看的简单方法:两个目录都有一个 CMD.EXE,即“Windows 命令处理器”,又名“命令提示符”或“DOS shell”。运行其中一个并检查任务管理器(如果要显示更多详细信息,则在“进程”选项卡上)。关闭它并运行另一个。一个在名称末尾显示“(32 bit)”,另一个没有。

当我在“开始”菜单中搜索 Windows Media Player 时,它会运行“Program Files (x86)”中的 32 位版本。但如果我直接运行“Program Files”中的版本,它确实可以工作。这可能是为了兼容性,正如其他人提到的。当我通过右键单击“开始”图标来运行命令提示符时,它会运行 64 位版本。

当有两个版本时,您可以更改默认运行的版本。例如,对于 Windows Media Player,以下是针对 Windows 7 的一些说明。我不知道它们是否还适用于 Windows 8。当你读完整个内容时,它似乎有点复杂。

答案2

由于您有几个问题,我将逐一进行引用......

我想知道除了能够访问这个增加的内存之外,win 8.1 是否真的会使用这 4 Gb 来运行 x64 地址?

所有 64 位 Windows 都可以“运行 x64 地址”,无论 RAM 大小如何 - 即使您的内存远少于 4 GB(当然,假设您有足够的 RAM 供系统运行!)。应用程序的“64 位地址”和“64 位性”是关于虚拟的地址空间,而不是物理 (RAM)。通过向系统添加更多 RAM,您为更多已定义和正在使用的虚拟地址空间腾出了空间,这些空间可以同时驻留在 RAM 中。

(顺便说一句,反之亦然:您可以使用超过 4 GB 的 RAM 来运行 32 位操作系统 - 几乎所有 Windows 服务器版本都可以做到这一点。同样,“32 位”是指虚拟地址。您可以在 32 位 Windows 系统中同时定义超过 4 GB 的虚拟地址空间,因为每个进程都定义了自己的 2 或 3 GB 的 VAS。因此,任何一个 32 位进程只能看到 4 GB 的 VAS,但所有进程加上操作系统的总和可以远远超过 4 GB。拥有超过 4 GB 的 RAM 只是允许更多的总虚拟地址空间同时驻留在 RAM 中。我肯定读过至少 20 篇不同的文章,声称“32 位计算机或操作系统只能访问 4 GB 的 RAM” - 完全不正确。您可以使用的 RAM 数量受 CPU 的地址引脚数量的限制,几乎所有现代 CPU 都至少有 36 位,尽管不一定有那么多实际引脚。)

或者我需要重新安装以确保它使用 x64 指令?

绝对不。

我不得不提出这个问题,因为 win8.1 在升级前后都在使用 32 位 wmplayer、explorer 等。

我不这么认为。是什么让你这么认为?几乎所有 64 位 Windows 附带的可执行文件都是 64 位格式。其中一些还有 32 位版本。

我没有看到 windows\SysWow64 文件夹中的任何程序。只有 windows\system32 文件夹中的程序出现在任务管理器中。

哦,我明白了。这不是分辨的方法。虽然看起来很奇怪,但 Windows\system32 中的 exe 几乎都是 64 位 exe(当然是在 64 位 Windows 安装中)。令人困惑的是,...\SysWow64 主要是 Windows 提供的32 位 exelive,以及一些支持在 64 位操作系统上运行 32 位 exe 的 DLL。(WOW 是“Windows on Windows”的缩写 - 支持在 64 位 Windows 操作系统上运行 32 位应用程序。)

如果您想使用任务管理器查看哪些进程是 64 位的,请转到“详细信息”选项卡,右键单击列标题,单击“选择列”,然后启用“平台”列。您还可以查看“图像路径名”列,按此进行排序,然后查看文件路径与平台的对应关系。在我的系统中,运行的 Microsoft 操作系统附带的 32 位 exe 非常少。

在此处输入图片描述

如果您想进一步确认您的进程是否使用 64 位地址,请从 SysInternals 工具下载并运行 Process Explorer。务必以管理员身份运行它。在“查看”菜单中,启用“显示下方窗格”,然后将“下方窗格视图”设置为“DLL”。

请注意,您可以在顶部窗格中添加“图像类型”列 - 它与任务管理器中的“平台”相同。(您不希望人们就这些东西的名称达成一致吗?!)

现在,在上方窗格中,单击要查看的进程。由于您可能已经运行了任务管理器,因此这将是一个不错的选择(Taskmgr.exe)。

在下方窗格中,启用“Base”和“Size”列(如果它们尚未存在)。“Base”列显示每个代码文件(exe、dll 等)或映射数据文件在进程地址空间中的起始虚拟地址。向下滚动下方窗格,您会发现许多 dll(在本例中是 exe 本身),其“Base”地址大于 0xFFFFFFFF(十进制 4,294,967,295),这是 32 位系统中的最高虚拟地址。

在此处输入图片描述

使用 Process Explorer 时,还有一件事需要注意:上部窗格中可用的列是“公司名称”。如果您启用该列和“图像类型”列,然后按“公司名称”排序(以便所有“Microsoft Corporation”都归为一组),我想您会发现几乎每个 Windows 附带的带有“公司名称”Microsoft 的进程都是 64 位进程。我说“Windows 附带的”,是因为许多 MS 的“分层产品”(如 Office 和 Visual Studio)都是 32 位的……或者至少在我安装的版本中是这样的。)

SysInternals“VmMap”工具可以向您显示所选进程的地址空间的更多详细信息。同样,它会向您显示 x64 系统中 0xFFFFFFFF 以上的大量地址。甚至在您添加 RAM 之前它就已经这样做了。

如果有任何不清楚的地方,或者有其他疑问,请随时询问。

答案3

运行资源监视器,在这里您可以看到 Windows 是否使用了完整的 4GB RAM(灰色表示不可用):

在此处输入图片描述

答案4

我认为您混淆了操作系统的位数和程序的位数。32 位程序在 64 位操作系统中可以正常运行。这并不罕见,而且仍有一些理由这样做。

32 位和 64 位操作系统都可以支持超过 4 GB 的 RAM(正如 Jamie 在他的回答)。64 位操作系统原生支持,32 位操作系统可以使用聚丙烯酰胺凝胶电泳或其他 CPU 架构上的等效版本。因此操作系统的位数并不决定其可使用的 RAM 数量 [1]

64 位操作系统将始终使用 64 位寻址,即使 32 位将覆盖其整个物理内存,即即使您安装了 3 GB 的 RAM。这意味着添加更多 RAM 不需要任何其他操作。在 32 位操作系统上,您可以必须手动启用它。

在 64 位 Windows 中,对 32 位程序的支持由WOW64兼容层(西Windows 32位on西窗口64-少量)。本文解释了它是如何工作的。它还解释了微软使用令人困惑的目录名称:System32存储 64 位文件,SysWOW64用于 32 位文件。他们这样做有一定的理由,但仍然令人困惑。

我希望这能解释你除了增加 RAM 之外不需要做任何其他事情。那么使用 64 位程序有什么好处,为什么 Windows 仍然使用 32 位程序,即使 64 位程序也可用?

32 位程序不能使用超过 4 GB 的 RAM,即使它们在 64 位操作系统中运行,因为它们是在考虑 32 位寻址的情况下编译的。64 位程序的理论限制为 16 EiB(艾字节,1 EiB = 2 60)。它们还可以使用 32 位架构中不可用的 CPU 指令,因此某些 CPU 操作可能会更快一些。

但也存在一些技术上和实际上的缺点。

64 位寻址意味着程序使用 64 位指针,因此仅因为它们是 64 位的,所以会比 32 位程序使用更多的 RAM。现代系统通常拥有大量 RAM,因此这不会造成太大影响,但如果您的系统经常消耗几乎全部 RAM,那么您可以考虑切换到 32 位进程。这就是技术缺点。

现在说说实际问题。当微软发布 64 位 Windows 时,每个人都在使用 32 位软件,没有人发布 64 位程序(因为让您的软件兼容 64 位需要额外的工作,而且在没有 64 位操作系统用户的情况下这是毫无意义的)。当然,微软希望无缝支持所有旧程序,而 WOW64 基本上解决了这个问题。

但是,有些问题无法通过这种方式解决:所有第三方插件都必须针对 64 位进行编译,这样您才能将它们加载到 64 位程序中。

这就是为什么 Windows 仍然默认使用 32 位 Internet Explorer(以及其他一些程序也是如此)。直到几年前,大多数插件/ActiveX 组件才支持 64 位浏览器。64 位 IE 没有 Flash、PDF 查看等功能。同时,IE 不是一款使用超过 3 GB RAM 的应用程序,因此坚持使用 32 位版本,同时将 64 位版本作为可选版本提供,完全没问题。


[1] 至少不是直接的。例如,非服务器版 32 位 Windows 不支持替代寻址,因此无法使用超过 4 GB 的 RAM - 这是商业决策,而非技术限制。

相关内容