分叉如何影响进程的内存布局?

Der*_*unk 6 linux process

请参见下图显示了一个进程的内存布局:

当有人forks()和一个新task_struct被分配时,进程的地址会发生什么?或多或少换句话说:想象有一个过程,所以下图成立。现在假设我做了一个叉子。发生什么了?

Spl*_*aos 3

fork 后,您将拥有同一程序的两个副本。内核可以复制所有地址空间写入时复制。在后一种情况下,文本和数据部分可能始终由两个进程共享,并且如果子进程需要修改堆栈,则堆栈将被复制,依此类推。