Fork()执行相同的程序并且在fork时复制了父的相同变量,操作系统如何将两个进程保留在内存中,保护每个进程只访问他的变量?
答案 0 :(得分:4)
当内核创建新进程时,它还会创建一个新的内存映射。最初,新映射中的所有页都与父进程共享,但是一旦子进程修改了映射中的页面,它们就会被复制到自己的页面中。
搜索的有用术语:虚拟内存,按需分页,内存映射,共享内存,写入时复制。
答案 1 :(得分:1)
操作系统会复制分叉过程的虚拟内存空间(可能会进行优化,例如写时复制)。
答案 2 :(得分:1)
Fork是一种通常为孩子创建单独地址空间的技术。子节点具有与父节点相同的内存,但它们具有不同的PID。所以你可以区分它们:特别是fork()在子进程中返回0,在父进程中返回非零值(子进程的PID)。