可执行代码是否在tmpfs中唯一存储,在运行时复制到RAM的另一部分?

时间:2014-08-12 17:07:46

标签: memory linux-kernel tmpfs

磁盘上的可执行文件需要首先将其代码和数据部分加载到RAM中才能执行。当一个可执行文件存储在tmpfs中时,它已经存在于RAM中,那么内核是否通过将tmpfs页面映射到进程地址空间来绕过将可执行文件加载到RAM中的步骤?答案是否适用于可执行文件和加载的库?

1 个答案:

答案 0 :(得分:2)

您的问题似乎已在2007年post on the Linux Kernel Mailing List

中得到解答

(由于tmps是一种存储在文件系统缓存代码中的方案,没有后备存储,我认为所提到的缓冲区缓存应该是"原始")

菲利普苏西问道:

  

问题是,当你在tmpfs上执行二进制文件时,它的代码段是否得到   直接映射到缓冲区缓存中的位置,或者将其复制到   执行过程的另一页?至少,假设这是可能的   由于对齐的段的vma和文件偏移量。

休·狄更斯回答说。

  

其页面直接映射到正在执行的进程中,无需复制。

您可能希望阅读完整的主题 - 请注意这取决于系统是否具有MMU,然后讨论转向tmpfs的非持久性。

Linux的写时复制行为我相信这意味着你写的任何数据页都会在第一次写作时获得为你的过程创建的唯一副本。