加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-13 23:18:32 所属栏目:Linux 来源:网络整理
导读:PAE( Physical Address Extension)于1994年在CPU中引入.这允许32位处理器访问64 GB内存而不是4 GB.从2.3.23开始,Linux内核为此提供支持.假设我正在启动其中一个内核,并希望在C中编写一个可以访问超过3 GB内存的应用程序(为什么3 GB? See this). 我如何访问
PAE( Physical Address Extension)于1994年在CPU中引入.这允许32位处理器访问64 GB内存而不是4 GB.从2.3.23开始,Linux内核为此提供支持.假设我正在启动其中一个内核,并希望在C中编写一个可以访问超过3 GB内存的应用程序(为什么3 GB? See this).

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

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

解决方法

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读