Copy-on-write(写时复制)是一种资源管理技术,用于实现可修改资源的“复制”或“拷贝”操作。当父进程创建子进程时,这两个进程最初将共享内存中的相同页面,并将这些共享页面标记为写时复制。这意味着如果任何一个进程尝试修改共享页面,则只会创建这些页面的副本,并且该进程将在副本上进行修改,而不会影响其他进程。²
在UNIX类操作系统中,fork()系统调用创建父进程的副本,称为子进程。子进程和父进程共享相同的虚拟地址空间,直到其中一个尝试修改它们之一。在这种情况下,内核会复制页面并将其分配给修改它们的进程。¹
传统拷贝是指在内存中复制一份数据,然后将其写入新的内存地址。这意味着如果您有一个大型数据结构,例如一个数组或一个字符串,那么每次复制时都会占用大量内存。这可能会导致性能问题和内存不足错误。
写时复制是一种优化技术,它允许多个进程共享相同的内存页面,直到其中一个进程尝试修改它们之一。在这种情况下,内核会复制页面并将其分配给修改它们的进程。这样可以减少内存使用量,并提高性能。