当前位置:  开发笔记 > 数据库 > 正文

如何在32位支持PAE的Linux应用程序中使用3 GB以上的进程?

如何解决《如何在32位支持PAE的Linux应用程序中使用3GB以上的进程?》经验,为你挑选了2个好方法。

PAE(物理地址扩展)于1994年在CPU中引入.这允许32位处理器访问64 GB内存而不是4 GB.从2.3.23开始,Linux内核为此提供支持.假设我正在启动其中一个内核,并希望在C中编写一个可以访问超过3 GB内存的应用程序(为什么3 GB? 请参阅此内容).

我如何访问超过3 GB的内存?当然,我可以分叉多个过程; 每个人都可以访问3 GB,并可以相互通信.但对于大多数用例而言,这不是一个现实的解决方案.还有哪些其他选择?

显然,在大多数情况下,最好的解决方案是简单地以64位模式启动,但我的问题是严格关于如何在启用PAE的32位内核上运行的应用程序中使用4 GB以上的物理内存.



1> hobbs..:

你不直接 - 只要你在32位上运行,每个进程都将受到内核构建的VM拆分(2GB,3GB,或者如果你有4GB的补丁内核)/4GB分割,4GB).

使进程处理更多数据并将其保留在RAM中的最简单方法之一是创建a shmfs然后将数据放在fs上的文件中,使用普通的seek/read/write原语访问它们,或将它们映射到一次一个内存mmap(基本上相当于做你自己的分页).但无论你做什么,它都需要比使用前3GB更多的工作.



2> Prof. Falken..:

或者,您可以根据需要启动尽可能多的memcached实例,直到映射完所有物理内存.每个memcached实例可以在32位机器上提供3GiB.

然后通过API和 memcached的语言绑定以块的形式访问内存.根据应用程序的不同,它可能几乎与直接在64位平台上工作一样快.对于某些应用程序,您可以获得创建可伸缩程序的额外好处.没有多少主板可以处理超过64GiB的RAM,但是使用memcached,您可以轻松访问尽可能多的RAM.

编辑注意,这种方法当然也适用于Windows,或任何可以运行memcached的平台.

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有