如果exec'd程序大于前一个程序,则内存问题



很明显,当一个程序被执行时,内核基本上将当前的程序替换为执行的程序,并且它使用相同的地址空间来执行。如果新的是小尺寸的,那么就没有问题了。所以我的问题是,当我们执行一个比旧程序的地址空间更大的程序时会发生什么。

在Linux中,执行exec()的进程的地址空间被替换为一个足够大的新地址空间,以执行二进制文件。我想其他操作系统也是如此。这是合理的。如果地址空间不会被替换,那么执行的程序将继承所有的内存映射(包括共享)、映射到地址空间的库(新程序可能不需要它们)、文件等等。这有点奇怪。

相关内容

最新更新