标签: unix
很明显,当一个程序被执行时,kernal基本上用exec替换当前的一个,并且它使用相同的地址空间来执行。如果较新的一个是小的,那么就没有问题。所以我的问题是当我们执行的程序大于旧程序的地址空间时会发生什么。
答案 0 :(得分:2)
在进程的Linux地址空间中,exec()被替换为一个足以执行二进制文件的新进程。我想其他操作系统也是如此。这是合理的。如果不替换地址空间,则执行的程序将继承所有内存映射(包括共享),映射到地址空间的库(新程序可能不需要它们),文件等。这有点奇怪。