Fork()执行相同的程序并复制相同的变量 - 操作系统如何将两者保存在内存中,保护每个进程只访问其变量?

时间:2016-07-17 17:16:01

标签: c linux

Fork()执行相同的程序并且在fork时复制了父的相同变量,操作系统如何将两个进程保留在内存中,保护每个进程只访问他的变量?

3 个答案:

答案 0 :(得分:4)

当内核创建新进程时,它还会创建一个新的内存映射。最初,新映射中的所有都与父进程共享,但是一旦子进程修改了映射中的页面,它们就会被复制到自己的页面中。

搜索的有用术语:虚拟内存,按需分页,内存映射,共享内存,写入时复制。

答案 1 :(得分:1)

操作系统会复制分叉过程的虚拟内存空间(可能会进行优化,例如写时复制)。

答案 2 :(得分:1)

Fork是一种通常为孩子创建单独地址空间的技术。子节点具有与父节点相同的内存,但它们具有不同的PID。所以你可以区分它们:特别是fork()在子进程中返回0,在父进程中返回非零值(子进程的PID)。