Linux内核学习---写时复制(COW)技术

Linux内核学习—写时复制(COW)技术

写时复制技术(copy-on-write)

传统的Unix系统以一种比较统一的方式对待所有的进程:子进程复制父进程所有的资源。这种方法有一些很明显弊端:

  • 将使用大量内存
  • 复制操作耗费大量时间
  • 通常情况下子进程不需要读或者写父进程拥有的所有资源,故该方法效率也是非常低的(复制的大量资源都没有使用)

并且,如果应用程序在进程复制后使用exec立即加载新程序,这意味着之前的复制基本是完全多余的,因为进程地址空间需要重新初始化,之前复制的数据不再需要,这导致之前做的都是无用功。

因此,现代Unix内核采用了写时复制(copy-on-write)机制避免fork时将父进程所有资源都复制到子进程。

该技术的核心思想是:只有在不得不复制内容时才去复制内容(tips:感觉操作系统中很多技术都是用到了该思想,如果一个操作的消耗比较大,那么就应该尽可能晚一点少一点该操作。例如:识别dirty bit的 extended clock页替换算法,还有很多操作系统在换页机制上均采用的是lazy换页,也就是不得不换页才换)

具体操作:当fork时只复制页表,因此fork之后父子进程的地址空间指向的是相同的物理内存页。如果父子进程都不需要修改彼此的页(也就是只读),则共享即可满足,因此将对应的页都标记为只读访问。只有两者中有一个进程要进行修改相应的物理页(也就是写操作),则会引发页错误。内核检测该页错误是否是因为对只读页面进行写操作引发的,如果是的话则处理该异常:拷贝该页面的内容到一个新的物理页&#

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值