写入时复制

✍ dations ◷ 2025-10-08 09:50:30 #计算机编程

写入时复制(英语:Copy-on-write,简称COW)是一种计算机程序设计领域的优化策略。其核心思想是,如果有多个调用者(callers)同时请求相同资源(如内存或磁盘上的数据存储),他们会共同获取相同的指针指向相同的资源,直到某个调用者试图修改资源的内容时,系统才会真正复制一份专用副本(private copy)给该调用者,而其他调用者所见到的最初的资源仍然保持不变。这过程对其他的调用者都是透明的(transparently)。此作法主要的优点是如果调用者没有修改该资源,就不会有副本(private copy)被创建,因此多个调用者只是读取操作时可以共享同一份资源。

一般把这种被共享访问的页面标记为只读。当一个task试图向内存中写入数据时,内存管理单元(MMU)抛出一个异常,内核处理该异常时为该task分配一份物理内存并复制数据到此内存,重新向MMU发出执行该task的写操作。

Linux等的文件管理系统使用了写时复制策略。

数据库服务器也一般采用了写时复制策略,为用户提供一份snapshot。

C++标准程序库中的std::string类,在C++98/C++03标准中是允许写时复制策略。但在C++11标准中为了提高并行性取消了这一策略。 GCC从版本5开始,std::string不再采用COW策略。

相关

  • 活性维生素D3胆钙化醇(英语:Cholecalciferol,又称为维生素D3或胆钙化固醇)是维生素D的一种,胆固醇脱氢后生成的7-脱氢胆固醇经紫外线照射即可形成胆钙化醇,因此也就是说胆钙化醇的维生素D原是7
  • 大同盟战争大同盟战争(War of the Grand Alliance),又称九年战争,是一场发生于1688年至1697年法王路易十四在位时的第三场重要战争(前两场分别为遗产战争与法荷战争),这场战争是因为路易十四
  • 岛礁岛礁(英语:Islet),是指一些非常小的岛屿。在英语中岛礁(islet)来自于古法语词缀,意即“岛屿”, 同时也有许多不同术语指代岛礁,如下列:根据联合国海洋法公约公约第121条,一个岛礁被判
  • 组装代工代工生产(英语:Original Equipment Manufacturer,OEM)简称:委托制造 ,又译原始设备制造商,指由采购方提供设备和技术,由制造方负责生产、提供人力和场地,采购方负责销售的一种现代流
  • 西瓜Citrullus vulgaris西瓜(学名:Citrullus lanatus),古称寒瓜,是葫芦科西瓜属的一种植物或其果实。原产于非洲,是一种双子叶开花植物,形状像蔓藤,叶子呈羽毛状。它所结出的果实是假果,
  • 罗马皇帝列表这是罗马帝国历代皇帝一览表。奥古斯都于前27年创元首制,开始了罗马帝国时期。罗马皇位的承继方式一般为养子承继制,但也有亲子承继的。罗马多次出现两帝共治,甚至四帝共治。戴
  • 张默张默(1982年7月28日-),中华人民共和国男演员,出生于四川成都,曾就读中央戏剧学院2002级表演系。父亲为中国知名艺人张国立,继母邓婕。生母罗秀春,目前为张默经纪人。
  • 贾克·希维特贾克·希维特(法语:Jacques Rivette;1928年3月1日-2016年1月29日)是法国电影导演与影评,与法兰索瓦·楚浮、尚卢·高达、艾力·侯麦与克劳德·夏布洛一样都曾担任《电影笔记》的影
  • 东京国际论坛东京国际论坛(日语:東京国際フォーラム)是位于日本东京都千代田区丸之内三丁目的会议展览中心,由株式会社东京国际论坛(完成当时为财团法人东京国际交流财团)营运,是公共综合文化设
  • 绿鞋绿鞋(Greenshoe),也称绿鞋机制或绿鞋期权,是首次公开募股(IPO)招股说明书中的一项特殊条款,指允许承销商(英语:underwriters)向投资者出售比发行人原计划更多的股票,在法律上被称为“超