Linux储备存储器以稍后分配C

LInux reserve memory for later allocation c++

本文关键字:分配 存储器 Linux      更新时间:2023-10-16

是否有可能保留内存以在C 程序中分配?

背景:我正在使用Preement RT补丁工作Debian。我的程序大约使用100MB内存。所有页面均应与Mlockall()交换。主要有2个跑步线程,一个实时运行,不分配内存。另一线程以较低的优先级运行,并分配/自由存储器。在某些罕见情况下,背景过程分配了所有免费内存,并且系统正在开始交换。现在,我的"快速"线需要一小块RAM。现在,内核给了我那个新的小件,但是掉了。因此,我的程序被巨大的延迟打断了,可以说3sec。

问题:是否有一种保留记忆的方法,可以说200MB。如果我的程序会分配,那么绝对可以不交换?

即使您在程序开始时分配了所需的所有内存,您担心的情况是另一个过程将使用内存。除非您是该计算机上唯一的过程,否则总会有另一个运行过程。因此,您想要的解决方案是一个"保留"的RAM空间,除了您的流程可以访问,没有人。这意味着内核永远不会将此空间换成高清(因此内核不会执行任何物理访问)。

幸运的是,除非您更改内核并重新编译它,否则不可能。想一想您有多个过程"保留"记忆的可能性。如果您有4GB RAM,则陷入困境:(