【问题标题】:Does executing a binary on a RAMDisk reload the executable into memory?在 RAMDisk 上执行二进制文件是否会将可执行文件重新加载到内存中?
【发布时间】:2014-06-03 13:59:41
【问题描述】:

假设我有两个相同的 10MB 二进制可执行文件,AB

如果我有足够的可用内存并运行./A,我的理解是A 将被加载到内存中并从那里运行。这将需要大约 10MB 的 RAM 才能完成。

如果我有足够的可用内存,创建一个 RAMDisk,将 B 复制到 RAMDisk,然后从 RAMDisk 运行 ./B,我的理解是 B 将被(重新)加载到内存中并从那里。这将需要大约 10MB 的 RAM 用于可执行文件,加上 RAMDisk 正在使用的内存。

这是正确的吗? RAMDisk 是否足够聪明,可以说“哦,我已经在内存中有二进制可执行文件,让我们就地运行它?”即使是这样,加载程序不是必须施展魔法来运行它吗?

我正在使用 QNX 并运行 ELF without COFF 二进制文件,但我希望得到任何 *Nix 系统的答案。

【问题讨论】:

    标签: linux memory qnx ramdisk


    【解决方案1】:

    我真的希望它被加载,典型的 ELF 二进制文件真的不是“execute in place”格式。

    您需要做一些事情,例如重新定位任何与位置无关的代码,当然还有动态库加载,RAM 磁盘上的文件系统对此一无所知。

    【讨论】:

      猜你喜欢
      • 2015-10-16
      • 2018-04-17
      • 1970-01-01
      • 2021-07-25
      • 1970-01-01
      • 2021-05-09
      • 2016-03-09
      • 2011-09-27
      • 2013-12-02
      相关资源
      最近更新 更多