copy on write 简单来说,所有的读操作都是指向一份内存地址,共享这些数据,节省内存空间。
如果有进程要对数据进行写操作,系统会检测到这个行为,将数据复制一份出来,给这个进程进行写操作。其他进程继续共享原来的没有修改的。写操作的进程指针指向新的副本。
COW 的基本原理可以概括为以下几个步骤:
-
共享资源:初始状态下,多个进程或线程共享同一份资源(例如内存页面)。这些进程或线程都指向相同的内存区域,内容是相同的。
-
写操作触发:当其中一个进程尝试修改共享资源时,系统检测到这个写操作,并采取措施防止修改影响到其他进程。
-
复制资源:系统将需要修改的部分复制到一个新的内存区域,并将修改进程指向这个新的副本。这样,原始资源保持不变,其他进程仍然可以访问未被修改的原始资源。
-
更新引用:修改进程现在指向新的副本,而其他进程仍然指向原始资源。