![]() |
1
106
我本来打算写自己的解释,但是 this Wikipedia article 差不多可以概括一下。 基本概念如下:
此外,这里还介绍了常用奶牛的应用:
|
![]() |
2
45
“写即拷”的意思差不多是:每个人都有一个相同数据的共享副本。 直到写下来 ,然后制作一份副本。通常,写时复制用于解决并发性问题。例如,在ZFS中,磁盘上的数据块是在写时分配的;只要没有更改,就保留原始块;更改只更改受影响的块。这意味着分配了最小数量的新块。 这些更改通常也被实现为 交易的 也就是说,它们具有酸性。这消除了一些并发性问题,因为这样就保证了所有更新都是原子的。 |
![]() |
3
8
我不会在书面副本上重复同样的回答。我想 Andrew's answer 和 Charlie's answer 已经很清楚了。我将给您举一个操作系统世界的例子,只是要说明这个概念的使用范围有多广。
我们可以使用
|
![]() |
4
6
再举一个例子, Mercurial uses copy-on-write 使克隆本地存储库成为真正的“廉价”操作。 原理与其他示例相同,只是您所说的是物理文件,而不是内存中的对象。最初,克隆不是重复的,而是 hard link 原版。当您更改克隆中的文件时,将写入副本以表示新版本。 |
![]() |
5
1
它在Ruby的“企业版”中也被用作一种节省内存的好方法。 |
![]() |
6
1
我发现 this 关于php中zval的好文章,也提到了cow:
|