Syn*_*ech 5 windows windows-7 memory-limit 32-bit windows-xp
我见过一些程序(尤其是 RAM 驱动软件)声称能够访问 32 位系统(包括 XP)上的“不可用 RAM”。我想知道他们是否真的可以,如果可以,他们是如何做到的。
有几种不同的方式可以限制安装在 32 位 Windows 系统中的 RAM 量(此处简化):
由于Windows 对地址空间进行分区的方式,程序最多只能分配大小为 2GB 的内存块。/3GB
通过将比率从 2:2 更改为 3:1 ,交换机可以在一定程度上缓解这种情况。
由于硬件地址映射 ( MMIO ),一些地址空间将被安装(或内置)系统的其他设备用完。在支持它的系统上,内存重新映射可能会对此有所帮助。
因为一个32位的指针最多只能指向2个32地址,所以最多只能指向4GB的数据。使用PAE 模式可以通过使用更大的指针和“页面”来帮助解决这个问题(很像旧的 16 位 DOS 段:偏移内存方案,具有讽刺意味的是,保护模式应该比实模式更好)。
除了硬件和软件的数学限制外,Microsoft 还对Windows(*包括 64 位版本)施加了人为限制,以便他们可以针对不同的目的和价格销售不同的版本。
我的问题不是关于 Windows 或常规程序(如记事本)如何受到这些影响。我已经熟悉这些限制及其典型的变通方法(包括使 Windows 7 内核更像 Windows Server 2003 内核的俄罗斯补丁),并且我对重新调整它们不感兴趣。
我的问题是关于声称能够克服这些限制中的一个或多个的程序。
我想我已经看到其他程序做出这样的声明,但我确信某些 RAM 驱动器软件确实如此。一些示例包括Raxco、DATARam和Gavotte。我之前尝试过几个 RAM 驱动程序,这些程序做出了这样的声明(我认为 Gavotte 是其中之一),但无法获得任何实际访问额外内存的程序。
Raxco 提出以下声明:
RamDisk Plus 不仅可以创建 4GB 以上的隐藏 RAM 的 RAM 磁盘;它还可以使用 3.2GB 和 4GB 之间无法访问的内存。
后来他们提到:
请记住,这只能在 Windows 报告超过 4GB 的隐藏 RAM 时完成。
第一个陈述是好的,因为与大多数这些程序不同,它克服了哪些限制并不含糊。
然而,像大多数这些程序一样,它对于访问额外内存需要什么(硬件和软件方面)是模糊的,并且没有说明它是如何工作的或它有什么样的副作用(例如,如果它只是添加/3GB
开关或启用 PAE 模式,那么它并没有“克服”问题,而是启用了一种特殊的 Windows 模式——这会影响操作系统和所有程序——并适应它)。
Jens 对 Gavotte RAM 驱动器的讨论似乎表明它们(至少是 Gavotte)实际上是通过使用 PAE 来工作的。它还提到了来自德国杂志c't的文章Geisterspeicher作为突破的来源。不幸的是,不仅这篇文章不是免费的,而且我的德语还不够流利,无法阅读技术文章,所以我不知道它是否提供了它的工作原理或其要求的详细信息。
有谁知道这些程序的说法是否属实?有没有人真正看到它起作用?如果是这样,需要什么才能使它们工作?此外,它们究竟是如何实现的(它们是否通过启用/3GB
、PAE 等影响整个系统和所有程序,或者它们是否在做一些特殊的事情,例如使用超大指针和直接访问硬件?
Syn*_*ech -1
当我重新编写问题以澄清我\xe2\x80\x99m 的要求并阻止人们尝试回答不同的问题时(尽管其他一些人提供了整个答案的一部分),我添加了一堆链接不同的页面解释了各种限制和解决方法。在这个过程中,我碰巧看到了几个不同的段落,它们以正确的顺序和正确的时机连接起来,这些段落放在一起,解释了程序如何访问额外的内存以及\xe2\x80\x99s需要什么这行得通。我\xe2\x80\x99将在这里列出我的发现。最有启发性的部分如下:
\n\n延斯·舍夫勒(Jens Scheffler)评价加沃特:
\n\n\n\n\n根据所使用的硬件和 BIOS 配置,3GB 到 4GB 之间的不可用内存(这是物理设备的保留地址区域)将重新映射到 4GB 以上的区域。\n Windows XP/Vista/7 32 位版本仅限于4GB RAM 地址,因此 4GB 以上的内存只是“未使用”。
\n\nGavotte RAMDisk 能够将 RAMDisk 设置在 4GB 内存地址以上的区域中,并可以将该区域用于其他目的。
\n
Microsoft 在知识库文章中解释了为什么 32 位 Vista 不显示 4GB 以及如何做到这一点:
\n\n\n\n\n要让 Windows Vista 在安装了 4 GB 内存的计算机上使用全部 4 GB 内存,该计算机必须满足以下要求:
\n\n\n
\n\n- 芯片组必须支持至少 8 GB 的地址空间。具有此功能的芯片组包括:\n \n
\n\n
- 英特尔975X
\n- 英特尔P965
\n- 插槽 775 上的英特尔 955X
\n- 支持使用插槽 F、插槽 940、插槽 939 或插槽 AM2 的 AMD 处理器的芯片组。这些芯片组包括任何 AMD 插槽和 CPU 组合,其中内存控制器驻留在 CPU 中。
\nCPU 必须支持 x64 指令集。AMD64 CPU 和 Intel EM64T CPU 支持此指令集。\n BIOS 必须支持内存重映射功能。内存重新映射功能允许将先前被外围组件互连 (PCI) 配置空间覆盖的系统内存段重新映射到 4 GB 地址线上方。必须在计算机上的 BIOS 配置实用程序中启用此功能。查看您的计算机产品文档,获取说明如何启用此功能的说明。许多面向消费者的计算机可能不支持内存重新映射功能。此功能的文档或 BIOS 配置实用程序中没有使用标准术语。因此,您可能必须阅读各种 BIOS 配置设置的说明,以确定这些设置是否启用内存重新映射功能。\n 必须使用 x64 (64 位) 版本的 Windows Vista。\n请联系计算机供应商以确定您的计算机是否满足这些要求。
\n
总结一下它是如何工作的:
\n\n要使其发挥作用,有两个要求:
\n\n硬件 (BIOS) 必须支持内存重新映射。在 BIOS 中查找标记为remap
或 的设置memory hole
。
Windows 必须设置为 PAE 模式,这意味着所有程序都会受到影响。
有一些重要因素和问题需要注意:
\n\n如果您的系统不支持内存重新映射,那么程序将无法访问额外的内存,并且所有内容(包括 Linux)都将限制为 3.xGB RAM,因为这是在硬件级别公开的全部内容。请参阅知识库文章中提到的列表,了解支持此功能的最低芯片组(我的是 865,所以我\xe2\x80\x99m 运气不好;嘘!这解释了为什么程序无法\xe2\x80\x99t 访问我的额外 RAM )。
\n\n使用 PAE 模式可能会影响系统稳定性,特别是对于某些驱动程序。
\n\nMicrosoft 知识库文章给出了这一令人不快的澄清:
\n\n\n\n\n注: 当计算机上安装的物理 RAM 等于芯片组支持的地址空间时,操作系统可用的总系统内存始终小于安装的物理 RAM。例如,考虑一台具有支持 8 GB 地址空间的 Intel 975X 芯片组的计算机。如果安装 8 GB RAM,操作系统可用的系统内存将根据 PCI 配置要求而减少。在这种情况下,PCI 配置要求将操作系统可用的内存减少了大约 200 MB 到大约 1 GB 之间的量。减少量取决于配置。
\n
这意味着您永远无法真正 \xe2\x80\x9cmax out\xe2\x80\x9d 32 位系统。最接近的方法是将 4GB 放入支持内存重新映射的主板中,并使用可以利用多余空间的 RAM 驱动程序。
在过去十年左右的时间里,计算机确实变得更加复杂,不幸的是,许多复杂性都是错综复杂、相互交织的,并且使用令人困惑的术语来混淆事物。不过,这一问题似乎已得到解决。如果您拥有合适的硬件并且可以将 Windows 置于 PAE 模式(因此没有带有异常或过时驱动程序的外来硬件),那么程序是否实际上可以使用 32 位系统中的多余内存的答案是肯定的。否则,答案(就像对我来说)是否定的,他们可以\xe2\x80\x99t。
\n 归档时间: |
|
查看次数: |
2848 次 |
最近记录: |