在linux中,运行相同用户程序的两个进程之间是否共享可执行二进制文件?

时间:2016-11-05 01:41:08

标签: linux

我知道DLL,可执行文件在进程之间共享。但是对于用户定义的程序,当我在两个终端上运行“test”时,我们称之为“test”。是否可以为这两个进程共享程序可执行文件,还是每个进程都获得一个单独的副本?感谢。

2 个答案:

答案 0 :(得分:1)

首先将文件复制到内核的页面缓存中。当它已经存在,那么第二次运行将使用这个缓存的。每个文件一个缓存。

答案 1 :(得分:0)

文本部分是共享的(代码),堆不是共享的。

无论从磁盘加载什么,都将共享磁盘缓存。

@alvits是正确的说堆将在fork上重复,但它是通过Copy On Write(COW)完成的,这意味着它在需要时会重复,如果数据没有改变,它就不会占用新的内存。

这个答案类似:how is a shared library file called by two different processes in Linux?