【发布时间】:2012-05-25 22:42:22
【问题描述】:
在 Linux 中是否可以启动一个进程(例如使用execve)并使其使用特定的内存区域作为堆栈空间?
背景:
我有一个 C++ 程序和一个快速分配器,它给了我“快速内存”。我可以将它用于使用堆并在快速内存中创建它们的对象。美好的。但我也有很多变量存在于堆栈中。我怎样才能让他们也使用快速内存?
想法:实现一个“程序包装器”,分配快速内存,然后启动实际的主程序,传递一个指向快速内存的指针,程序将其用作堆栈。这可能吗?
[更新]
pthread 设置似乎有效。
【问题讨论】:
-
我真的不认为您的 fast 分配器可以比堆栈分配更快。通常,堆栈分配每个函数需要几条指令。或者你的意思是内存比系统中其他任何地方的内存快?
-
@DavidRodríguez-dribeas 后者!它是快速的内存,而不是分配器
-
你使用什么平台,有两种不同类型的 RAM?
-
您希望多久将堆栈对象(而不是它们引用的内存)传输到 GPU?使用该分配器可加快向 GPU 的传输速度,但会将页面锁定在内存中,这将对系统的其余部分产生影响(例如,您的对象堆栈不能再被换出)你确定你想将它用于所有局部变量吗?
-
我知道。它只是一个想法。问题是我有很多本地变量要转移。速度不是唯一的好处。您也可以获得异步传输。 (这就是我所追求的。)在我最终将它们复制到一个连续的缓冲区之前,我发现这个想法很整洁