所以我是一名程序员,我并不是一个十足的白痴,所以我确切地知道为什么你无法访问没有指针的内存。但我从未尝试过,而且我认为我永远不会尝试,因为这似乎是对金钱/时间的巨大浪费。
我只是想知道是否有任何工具可以让我访问我的 himem(您认为我们现在已经解决了这个问题)。
答案1
如果你有一个处理器物理地址扩展(您可能这样做)和正确的操作系统(例如,不是 Windows 的消费者版本,它使用 PAE,但上限为 4GB),内存就可以正常映射和使用。否则内存将无法寻址,操作系统会告诉您,您有多少个芯片,无论它们有多大,但它们都不会被添加到您可以访问的内存量中。
答案2
一切都会顺利进行,因为 4GB 是 32 位处理器的极限。 以下是这篇文章更加深入,实际上表明您可以在 32 位操作系统上安装和使用超过 4GB 的空间。
答案3
从技术上讲,我认为如果操作系统设计得当,可以使用超过 4GB 的内存。我认为没有理由认为具有虚拟内存功能的操作系统不能使用 32 位虚拟地址和 64 位实际地址。
答案4
首先要明白的是,现代计算机系统使用虚拟内存。应用程序可以使用 32 位虚拟地址,但物理地址可以大于 32 位。
第二件要理解的事情是,物理地址空间用于各种用途,最重要的是主内存和内存映射外围设备。特别是显卡,通常具有较大的内存映射区域。结果是,如果您只有 4GB 的可用物理地址空间,那么您最终的可用内存可能会远远少于 4GB。通常大约有 3.5 GB 的可用空间,但我见过的系统低至 2.5 GB。
在 PC 上,为了支持超过 4GB 的物理地址空间,需要使用一种称为 PAE 的机制。要使该机制发挥作用,需要做几件事。
- CPU必须支持它。
- 芯片组必须支持它。
- BIOS 必须支持它。
- 操作系统必须支持它。
CPU 早已支持 PAE,这不是问题。
许多较旧的芯片组限制为 4GB 的物理地址空间。据我回忆,英特尔笔记本电脑芯片组在 2007 年的“Santa Rosa”一代中获得了对超过 4GB 地址空间的支持。我不确定台式机芯片组的情况,但我认为大概是在同一时间。工作站/服务器芯片组显然更早获得了支持。
如果芯片组支持的话,据我所知 BIOS 大多都支持它。不过如果有例外我也不会感到惊讶。
操作系统是个棘手的问题。Linux 和 Windows 都支持 PAE 多年。不幸的是,自 Windows XP Service Pack 2 以来,MS 人为地将物理地址空间限制为 4GB。他们声称这样做是因为驱动程序存在缺陷,愤世嫉俗者会怀疑他们这样做是为了强迫人们购买服务器版本。
在 Windows XP 中,这个功能嵌入到内核中,基本上无法撤销。但在更高版本中,可以通过对内核进行一些小改动来绕过它。请参阅https://wj32.org/wp/了解详情。