我知道DLL,可执行文件在进程之间共享。但是对于用户定义的程序,当我在两个终端上运行“test”时,我们称之为“test”。是否可以为这两个进程共享程序可执行文件,还是每个进程都获得一个单独的副本?感谢。
答案 0 :(得分:1)
首先将文件复制到内核的页面缓存中。当它已经存在,那么第二次运行将使用这个缓存的。每个文件一个缓存。
答案 1 :(得分:0)
文本部分是共享的(代码),堆不是共享的。
无论从磁盘加载什么,都将共享磁盘缓存。
@alvits是正确的说堆将在fork上重复,但它是通过Copy On Write(COW)完成的,这意味着它在需要时会重复,如果数据没有改变,它就不会占用新的内存。
这个答案类似:how is a shared library file called by two different processes in Linux?