10 条回复  ·  372 次点击
ho121 小成 2024-9-2 07:20:22

Linux 写时复制问题

写时复制是在比进程这个层级更底层中做的,对进程这一层是透明的。
你想想系统怎么可能随时改变进程内的状态(比如某变量的地址),那不就乱套了。
况且程序中拿到的地址是虚地址,不是物理内存的地址。写时复制是在物理内存级别做的。

同样的可以参考一下文件系统的写时复制,写时复制是在文件系统层面做的,对文件本身是透明不可见的。不管何时写时复制,对于文件来说,文件还是那个文件,内容不会因为写时复制而改变,只是磁盘上的分布变了。
yanqiyu 小成 2024-9-2 07:43:11

Linux 写时复制问题

@wxf666 是,除非是 mmap 的 shared 这种情况,之外父子进程都会看到 ro 的页面,等写入的时候中断介入复制
r46mht 小成 2024-9-2 08:32:52

Linux 写时复制问题

@wxf666 概念上是这样的,实际的操作不需要 100w 页一个一个设置。x86 的页表是一个类似于字典树的结构,在父节点上标不可写相当于一次性设置了很多连续的页不可写
12
返回顶部