0

假设我有两个相同的 10MB 二进制可执行文件副本,A并且B.

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

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

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

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

4

1 回答 1

1

我真的希望它被加载,典型的 ELF 二进制文件真的不是“就地执行”格式。

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

于 2014-06-03T14:01:26.620 回答