在 RAMDisk 上执行二进制文件是不是会将可执行文件重新加载到内存中?
Posted
技术标签:
【中文标题】在 RAMDisk 上执行二进制文件是不是会将可执行文件重新加载到内存中?【英文标题】:Does executing a binary on a RAMDisk reload the executable into memory?在 RAMDisk 上执行二进制文件是否会将可执行文件重新加载到内存中? 【发布时间】:2014-06-03 13:59:41 【问题描述】:假设我有两个相同的 10MB 二进制可执行文件,A
和 B
。
如果我有足够的可用内存并运行./A
,我的理解是A
将被加载到内存中并从那里运行。这将需要大约 10MB 的 RAM 才能完成。
如果我有足够的可用内存,创建一个 RAMDisk,将 B
复制到 RAMDisk,然后从 RAMDisk 运行 ./B
,我的理解是 B
将被(重新)加载到内存中并从那里。这将需要大约 10MB 的 RAM 用于可执行文件,加上 RAMDisk 正在使用的内存。
这是正确的吗? RAMDisk 是否足够聪明,可以说“哦,我已经在内存中有二进制可执行文件,让我们就地运行它?”即使是这样,加载程序不是必须施展魔法来运行它吗?
我正在使用 QNX 并运行 ELF without COFF 二进制文件,但我希望得到任何 *Nix 系统的答案。
【问题讨论】:
【参考方案1】:我真的希望它被加载,典型的 ELF 二进制文件真的不是“execute in place”格式。
您需要做一些事情,例如重新定位任何与位置无关的代码,当然还有动态库加载,RAM 磁盘上的文件系统对此一无所知。
【讨论】:
以上是关于在 RAMDisk 上执行二进制文件是不是会将可执行文件重新加载到内存中?的主要内容,如果未能解决你的问题,请参考以下文章