写时拷贝讲解
- 写时拷贝(COPY On Write,COW)是一种优化技术,主要用于延迟或避免数据的复制操作。他的核心是在需要数据复制时,先不实际进行物理复制,而是让多个使用者共用一份数据,只有当某个使用者尝试修改数据时,才真正分配内存来进行复制。
- 工作原理:
- 初始共享:当需要复制一个对象时,系统并不立即分配新的内存空间,而是让多个引用指向同一个物理数据,此时,所以引用共享一个数据
- 检测写操作:系统会监控对共享数据的访问,如果某个引用只是读取数据,则不会触发任何额外的操作。如果某个引用尝试修改数据,系统会检测这一写操作
- 触发复制:检测到写操作时,系统会为该引用分配新的内存空间,并将原始数据复制到新分配的内存中,修改操作仅作用于新分配的副本,其他引用仍然指向原数据。
- 独立修改:一旦完成复制,修改操作只会对副本生效,而不会影响原始数据以及引用。
- 优点:
- 节省内存:
- 提高性能
- 简化实现:逻辑上实现了深拷贝的效果,但实际操作中避免了频繁的深拷贝。
- 应用场景:
- 操作系统:进程fork(),
- 文件系统中的快照
- 数据库和虚拟化:
- 缺点:
- 写操作额外开销
- 复杂性增加
- 并发问题