如何在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更多的工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |