当父级使用fork()创建子级,然后使用子级exec()时,子级的地址空间将是什么。 它会成为新的地址空间还是父地址的一部分? 其次我还读到,这取决于孩子可以从操作系统或父母那里获得资源,这取决于操作系统还是其他任何东西?
...谢谢: - )
答案 0 :(得分:3)
子进程获取父对象地址空间的精确副本,在许多情况下可能以与父地址空间相同的格式进行布局。每个人都有自己的虚拟地址空间用于存储器,这样每个人可以在同一地址拥有相同的数据,但是在不同的地址空间中。此外,linux
在创建子进程时使用copy on write。这意味着父和子将共享父地址空间,直到其中一个进行写入,此时内存将物理复制到子进程。这样可以在执行新进程时消除不需要的副本。由于您只是要用新的可执行文件覆盖内存,为什么还要复制呢?您可以查看有关它的更多信息Here
答案 1 :(得分:0)
它将有一个单独的地址空间,由它自己的虚拟内存备份,该虚拟内存是通过写时复制策略创建的。