在 Linux 上,如果你 fork() 和分叉的(子)进程退出,所有虚拟内存页面在父进程中是否仍标记为写时复制?
我认为这些页面将保持标记为 COW,因为其他任何东西实施起来可能会非常昂贵,可能需要每页的引用计数和其他昂贵的簿记。但是前几天我想知道,如果我分叉一个进程以在当前进程的“稳定快照”中执行一些代码。当子进程退出时会发生什么?父级中的所有内存页是否都标记为写时复制?这意味着在具有大量虚拟内存(例如 128GB+)的进程中分叉仅执行一些代码几分钟会导致父进程在数小时甚至数天后挥之不去的性能下降(更不用说 fork 调用本身)这不会便宜。)
我只是好奇 Linux 上的实际行为是什么(我不知道如何测试它。)