3

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

4

1 回答 1

2

您的问题似乎已在 2007 年Linux Kernel Mailing List 上的帖子中得到解答

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

菲利普·苏西问道:

问题是,当您在 tmpfs 上执行二进制文件时,它的代码段是直接映射到缓冲区缓存中的位置,还是被复制到另一个页面以供执行过程?至少,假设这是可能的,因为段的 vma 和文件偏移量正在对齐。

休·狄更斯回答说

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

您可能想要阅读完整的线程 - 需要注意的是,这取决于具有 MMU 的系统,然后讨论转向 tmpfs 的非持久性。

我相信 Linux 的写时复制行为意味着您写入的任何数据页都会在第一次写入时为您的进程创建一个唯一的副本。

于 2014-08-12T17:35:58.050 回答