32位机器如何支持超过4 GB的RAM?

我一直想知道这一点,从来没有完全理解32位机器如何寻址超过4 GB的RAM 。 我的意思是,没有更多的地址线了,对吗?

即使在我们的设施中,我们也知道,我们有戴尔数据库服务器,可以使用8 GB的内存和32位版本的SQL Server 。 是否使用旋转存储器的窗口来实现类似于20地址线8086的EMS存储器?

要支持4 GB以上的内存,Windows使用物理地址扩展 (PAE)。 它使用分页表来映射大于4 GB的内存。 通过这样做,物理地址大小增加到36位或64 GB。 PAE也用于64位操作系统。 在这种情况下,最大大小加倍到128 GB。

这个方法确实意味着每个进程仍然限制在最大4GB的内存。

有一个名为PAE的英特尔function,实际上可以使操作系统使用超过4GB的内存。 每个应用程序只能使用2(或3)GB的内存空间,但由于操作系统现在有更多的内存来分散内存,进程之间的共享将会减less,因此可能带来一些性能上的好处。

然而真正的魔法却是在使用AWE API开始的时候,你可以使用一个专门为此写的32位应用程序来使用更多的内存。 这就是SQL Server正在做的事情。

这就是所谓的PAE 。 它通过更改处理器上的页面表格布局来工作,以支持高达64 GB的RAM。 但是,任何一个应用程序仍然只能使用2-3 GB(取决于内核的设置方式,通常为Windows 2 GB和Linux 3 GB)。 此外,PAE往往会使机器运行速度稍慢,因为页表查找需要额外的级别。

它应该在任何相对较新的处理器上得到支持。

那么,你的服务器操作系统可能是64位的。 SQL可能只能使用8个或者32位程序中的4个,或者根据我的经验,一些32位程序会产生更多的进程(比如video编码软件)来利用内存。

在32位操作系统上的应用程序可以访问4GB的地址空间。 但这是虚拟地址空间,与物理RAM的大小完全没有关系。 大多数现代的32位处理器都有足够的地址线来寻址64GB的RAM。 4K字节的块根据需要映射到进程的地址空间。

PAE允许访问超过4GB的RAM。 这不是经常声称的破解,而是非常有效。 PAE没有做任何根本的改变,只是细节上的不同而已。 事实上,大多数现代系统默认使用PAE。 DEP依赖于PAE内核。

不幸的是,访问超过4GB的RAM仅限于服务器。 桌面可能正在使用PAE,但会忽略超过4GB的任何RAM。 有很多技术和市场营销的原因。