使用COW fork后当前堆栈页是否共享?

问题描述 投票:0回答:1

我了解 COW 机制会导致所有父页面和子页面指向相同的框架,并且它还包括堆栈。不过我不确定fork后当前栈页的情况如何。是否仍然在两个进程之间共享,并且第一次写入堆栈会导致页面错误?

if(fork () == 0){
char tmp = 'a';
}
else{
char temp2 ='a';
wait();
}

假设父进程先运行,会出现以下行:“char temp2 ='a';”导致页面错误? 或者可能因为 fork 本身写入堆栈会导致页面错误?

linux fork virtual-memory copy-on-write
1个回答
0
投票

但是,我不确定fork之后当前栈页是什么情况。是否仍然在两个进程之间共享,并且第一次写入堆栈会导致页面错误?

堆栈页框也是由

fork
共享的写时复制,在堆栈上分配的对象保留其原始地址。第一次存储到写时复制页面中会创建原始页面框架的进程私有副本。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.