我们说我有两份相同的10MB二进制可执行文件,A
和B
。
如果我有足够的可用内存并运行./A
,我的理解是A
将被加载到内存中并从那里运行。这将需要大约10MB的RAM来完成。
如果我有足够的可用内存,请创建一个RAMDisk,将B
复制到RAMDisk,然后从RAMDisk运行./B
,我的理解是B
将是(重新)加载到内存并从那里运行。这将为可执行文件带来大约10MB的RAM,以及RAMDisk使用的内存。
这是对的吗? RAMDisk是否足够聪明,可以说"哦,我已经在内存中有二进制可执行文件,让我们只运行它?"即使是这样,装载机也不必为了运行它而发挥其魔力吗?
我正在使用QNX并运行ELF without COFF二进制文件,但我很感激任何* Nix系统的答案。
答案 0 :(得分:1)
我真的希望它被加载,典型的ELF二进制文件实际上不是" execute in place"格式。
您需要做的事情,例如重新定位任何与位置无关的代码,当然还有动态库加载,RAM磁盘上的文件系统一无所知。