`

Linux写时拷贝技术(copy-on-write)

 
阅读更多

什么是Copy-On-Write

         简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。

 

什么是CopyOnWrite容器?

         CopyOnWrite容器即写时复制的容器。通俗的理解是当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个新的容器,然后新的容器里添加元素,添加完元素之后,再将原容器的引用指向新的容器。这样做的好处是我们可以对CopyOnWrite容器进行并发的读,而不需要加锁,因为当前容器不会添加任何元素。所以CopyOnWrite容器也是一种读写分离的思想,读和写不同的容器。

 

CopyOnWrite的缺点:

         CopyOnWrite容器有很多优点,但是同时也存在两个问题,即内存占用问题数据一致性问题

         内存占用问题。因为CopyOnWrite的写时复制机制,所以在进行写操作的时候,内存里会同时驻扎两个对象的内存,旧的对象和新写入的对象(注意:在复制的时候只是复制容器里的引用,只是在写的时候会创建新对象添加到新容器里,而旧容器的对象还在使用,所以有两份对象内存)。如果这些对象占用的内存比较大,比如说200M左右,那么再写入100M数据进去,内存就会占用300M,那么这个时候很有可能造成频繁的Yong GC和Full GC。之前我们系统中使用了一个服务由于每晚使用CopyOnWrite机制更新大对象,造成了每晚15秒的Full GC,应用响应时间也随之变长。

         数据一致性问题。CopyOnWrite容器只能保证数据的最终一致性,不能保证数据的实时一致性。所以如果你希望写入的的数据,马上能读到,请不要使用CopyOnWrite容器。

 

分享到:
评论

相关推荐

    详谈Linux写时拷贝技术(copy-on-write)必看篇

    Linux中的写时拷贝(Copy-On-Write, COW)技术是一种高效且节省资源的内存管理策略,尤其在处理进程创建如`fork()`时显得尤为重要。COW的基本思想是在数据未被修改前,多个进程可以共享同一份数据的物理副本,从而...

    具有快照功能的Linux文件系统.pdf

    快照技术可以分为两类:分割镜像(Split Mirror)和写时拷贝(Copy-On-Write)。分割镜像是在时钟点之前对数据作完全复制,而写时拷贝是在时钟点之后对数据做完全复制。写时拷贝机制可以实现热备份,提供基于EPOCH...

    行业分类-设备装置-写时拷贝快照方法及装置.zip

    在IT行业中,"写时拷贝快照"(Copy-on-Write Snapshot)是一种高效的数据备份和恢复技术,常用于文件系统、虚拟化环境以及数据库管理等领域。本资料包中的"行业分类-设备装置-写时拷贝快照方法及装置.zip"主要探讨了...

    Linux内核移植与编译

    Linux 内核是操作系统的心脏和大脑,它控制着基本的硬件,具有很多最基本的功能,如虚拟内存、多任务、共享库、需求加载、共享的写时拷贝 (copy-on-write) 可执行程序和 TCP/IP 网络功能。 Linux 内核的起源可以...

    Linux 进程 总结

    Linux使用clone系统调用实现fork,其名称源于其使用写时拷贝(Copy-On-Write, COW)技术来优化内存复制。在fork之后,子进程与父进程共享同一地址空间,只有在写入时才会真正复制页面,从而提高了效率。 exec系列...

    Research on Linux Network Device Driver.pdf

    通过修改Linux设备驱动3rd版本snul1.e并改进Copy-On-Write技术,实现了Linux内核2.6.11版本中的Zero-Copy技术。实验结果证明,对网络设备驱动的深入分析是许多应用的基础,也为实际应用,甚至是军事应用开发提供了...

    cow_user.rar_V2

    标题中的"COW_user.rar_V2"暗示我们正在处理一个与Linux系统有关的“Copy-On-Write”(写时复制)技术相关的文件集。这个V2版本可能指的是该技术的一个特定实现或更新。"rar"是常用的文件压缩格式,用于打包多个文件...

    linux kernel常见面试题及部分答案.pdf

    2. 写时拷贝(Copy-On-Write, COW) 当进程创建子进程时,Linux使用写时拷贝技术来优化内存的使用。子进程一开始并不复制父进程的整个地址空间,而是复制地址空间的引用。只有当父进程或子进程试图修改地址空间中的...

    liunx 操作系统

    - 为提高效率,Linux采用写时拷贝(Copy-on-Write)策略,子进程在创建时并不复制父进程的完整虚拟内存,只有当一方尝试修改时才会创建独立的副本。 6. **`fork()`系统调用**: - `fork()`调用创建一个与父进程几乎...

    android系统dirty cow(脏牛)漏洞的检查资料

    这个漏洞源于Linux内核中的一个内存管理错误,具体是由于在处理内存拷贝(copy-on-write)操作时的权限控制不当,导致普通用户可以获取到原本需要更高权限才能访问的系统资源,从而可能引发一系列的安全问题。...

    打通Linux脉络系列:进程、内存与IO111.pdf

    #### 写时拷贝技术(Copy-on-Write) 写时拷贝是一种优化技术,在Linux中被广泛应用于进程创建过程。当父进程通过`fork()`创建子进程时,并不会立即复制整个内存空间,而是共享同一段物理内存。只有当其中一个进程...

    Linux内核设计与实现_重点内容.pdf

    进程创建通常通过fork()系统调用进行,其基于写时拷贝(Copy-On-Write)机制。线程在Linux中被视为与其他进程共享资源的轻量级进程。调度器负责决定哪个进程获得处理器时间,调度策略包括I/O消耗型和处理器消耗型的...

    cpp-PoCforDirtyCOWCVE20165195

    Dirty COW 是一个存在于Linux内核中的缓冲区溢出漏洞,主要涉及到内存管理机制中的写时复制(Copy-On-Write, COW)功能。这个功能原本是为了优化内存使用,当多个进程共享同一块内存时,只有在其中一个进程尝试修改...

    Linux进程、线程和调度(2)

    新创建的子进程会得到父进程数据的一个副本,但这副本实际上是一开始时共享父进程的物理内存页的,这就是“写时拷贝”技术(Copy-On-Write, COW)的实现。当父进程或子进程中的任何一个试图修改这些共享的内存页时,...

    Linux内核mmap保护机制研究.pdf

    4. 缺页异常与写时复制(Copy-On-Write, COW) mmap保护机制中还有一个重要的概念是缺页异常和写时复制。当进程首次访问映射区域的某个页面时,会触发缺页异常。内核处理缺页异常时,会创建物理内存页与之关联,并...

    Btrfs ppt marc merlin

    Btrfs(发音为 butter FS)是一个高级的文件系统,专为Linux操作系统设计,目的是提供高级的存储功能,比如可拷贝-写(Copy-on-Write,COW)机制、快照、子卷、RAID、压缩和校验功能。它是作为Linux内核的一部分进行...

    DirtyCow提权漏洞复现(CVE-2016-5195)1

    脏牛(Dirty Cow)漏洞,全称为“竞争条件写入时复制”(Copy-on-Write Race Condition),在2016年被发现,其安全漏洞编号为CVE-2016-5195。这个漏洞主要影响的是Linux内核,特别是从2007年的2.6.22版本到修复前的...

    getting_the_most_out_of_the_btrfs_filesystem

    Btrfs文件系统是Linux系统中一个先进的文件系统,它支持Copy-on-Write(写时复制),子卷(subvolumes)和快照(snapshots)等多种高级特性。Btrfs的设计目标是提高文件系统的可扩展性、可靠性和易用性。 Copy-on-...

    cmd操作命令和linux命令大全收集

    43. write----------写字板 45. wiaacmgr-------扫描仪和照相机向导 46. winchat--------XP自带局域网聊天 49. mplayer2-------简易widnows media player 50. mspaint--------画图板 51. mstsc----------远程...

    Linux操作系统基础教程

    (Torvalds@kruuna.helsinki.fi)写了 Linux核心程序的 0.02 版开始的,但其后的发展却几乎都 是由互联网上的 Linux社团(Linux Community)互通交流而完成的。Linux 不属于任何一 家公司或个人,任何人都可以免费取得...

Global site tag (gtag.js) - Google Analytics