所以我是一名程序员,但我不是一个完全白痴,所以我确切地知道了为什么您不能在没有指针的地方访问内存。但是我从来没有尝试过,我也从来没有尝试过,因为这似乎在浪费金钱/时间。
我只是想知道是否有任何工具可以让我访问我的himem(您认为现在我们已经解决了这个问题)。
所以我是一名程序员,但我不是一个完全白痴,所以我确切地知道了为什么您不能在没有指针的地方访问内存。但是我从来没有尝试过,我也从来没有尝试过,因为这似乎在浪费金钱/时间。
我只是想知道是否有任何工具可以让我访问我的himem(您认为现在我们已经解决了这个问题)。
Answers:
如果您的处理器具有“ 物理地址扩展名”(您可能已这样做)和正确的操作系统(例如,不是Windows的消费者版本,则使用PAE,但上限为4GB),则可以正常映射和使用内存。否则,内存将不会被寻址,操作系统会告诉您,您有很多芯片,无论它们有多大,但它们不会被添加到您可以访问的内存量中。
取决于您的意思是32位操作系统!
当然,在现代操作系统上,您可以插入尽可能多的主板而不会出现问题(尽管您可能无法全部使用),但并非总是如此,至少对于Windows而言:
如果您安装的内存超过512MB,则会出现Windows 95、98,SE和ME中的错误。
首先要了解的是,现代计算机系统使用虚拟内存。您可以为应用程序使用32位虚拟地址,同时具有大于32位的物理地址。
要了解的第二件事是物理地址空间用于各种用途,最主要的是主内存和内存映射的特性。特别是图形卡通常具有较大的内存映射区域。结果是,如果只有4GB的可用物理地址空间,则最终可能会得到少于4GB的可用内存。通常大约有3.5 GB的可用空间,但我看到的系统的可用空间低至2.5 GB。
在支持超过4GB物理地址空间的PC上,使用一种称为PAE的机制。为此,需要做几件事。
CPU支持PAE已有很长时间了,这不是问题。
许多较旧的芯片组仅限于4GB的物理地址空间。IIRC英特尔笔记本电脑芯片组在2007年的“ Santa Rosa”世代中获得了超过4GB的地址空间支持。我不确定台式机芯片组,但我希望它是在同一时间。工作站/服务器芯片组显然早就获得了支持。
如果芯片组支持,则Afaict BIOS大多支持它。尽管有一些例外,也不会令我感到惊讶。
操作系统是一个棘手的问题。Linux和Windows都支持PAE已有很长时间了。不幸的是,由于Windows XP Service Pack 2 MS已人为地将物理地址空间限制为4GB。他们声称这样做是由于驱动程序错误,愤世嫉俗的人怀疑他们这样做是为了强迫人们购买服务器版本。
在Windows XP中,它已植入内核,并且基本上无法撤消。但是,在更高版本中,可以通过对内核的一些小技巧来绕过它。有关详细信息,请参见https://wj32.org/wp/。