【发布时间】:2010-06-29 11:16:39
【问题描述】:
当创建一个新进程时,地址空间是使用 fork() 创建的,即为新进程创建与父进程完全相同的新页表条目。 在 fork() 之后调用 exec()。 exec() 系统调用期间会发生什么?
我在《操作系统概念》一书中读到,当执行一个新程序时,该进程会被赋予一个新的空 VAS。这是否意味着在 fork() 期间创建的页表条目将被删除/修改?空的VAS是什么意思?
二进制到VAS的内存映射是如何进行的? loader如何知道VAS的哪些地址应该映射到对应的二进制文件?
我真的很困惑。
【问题讨论】:
-
这完全依赖于操作系统,与 C 无关。
-
@Paul 是的,但几乎所有现代操作系统都做类似的事情