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


我一直想知道这一点,并且从未完全理解32位机器如何处理超过4 GB的数据 内存。我的意思是,没有更多的地址线,对吗?

我甚至在我们的设施中也知道,我们的戴尔数据库服务器具有8 GB的RAM,可以通过机器和32位版本进行寻址 SQL服务器。是否使用旋转内存窗口实现类似于20地址线8086的EMS内存?


6
2018-05-02 23:28




什么操作系统和SQL? - Daniel A. White


答案:


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

此方法确实意味着每个进程仍限制为最多4 GB的内存。


16
2018-05-02 23:32



那么解释Windows Server Datacenter Edition x86如何支持128GB? - tsilb
它没有。 microsoft.com/windowsserver2008/en/us/compare-specs.aspx 正如Sam所说,它仅限于64 GB。 - Sören Kuklau
不只是Windows。所有支持的操作系统 处理器功能 PAE可以做到这一点。要确定您的处理器是否支持PAE,请检查“cat / proc / cpuinfo”的输出。不知道如何检查Windows。 - wzzrd
在正常的默认32位Windows操作系统配置中,2 GB的虚拟地址空间分配给进程的专用,另外2 GB分配给共享和操作系统使用。因此,实际上一个进程只能使用2 GB(可能是3个/ 3GB但是它们都不是来自精神RAM)只有进程或系统实际引用(使用)的那部分地址空间才是与实际内存或页面文件中的页面框架相关联。


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

然而,真正的魔力开始于使用AWE API,您可以使用一个特别为此编写的单个32位应用程序实际使用更多内存。这就是SQL Server正在做的事情。


3
2018-05-02 23:37





它被称为 PAE。它的工作原理是更改处理器上的页表布局,以支持最高64 GB的RAM。但是,任何一个应用程序仍然只能使用2-3 GB(取决于内核的设置方式,Windows通常为2 GB,Linux为3 GB)。此外,PAE倾向于使机器运行稍慢,因为页表查找有一个额外的级别要经过。

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


2
2018-05-02 23:35





那么,您的服务器操作系统可能是64位。 SQL可能只使用8个演出,或者一些32位程序产生更多进程(比如视频编码软件,根据我的经验)来利用ram。


1
2018-05-02 23:30





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

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

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


-3
2017-08-19 17:20