写入时复制

✍ dations ◷ 2025-04-18 16:22:27 #计算机编程

写入时复制(英语: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策略。

相关

  • 食管憩室食管憩室(英:diverticulum of the esophagus),又叫赞克氏憩室(英:Zenker's diverticulum),属于假性憩室(即只有黏膜膨出)。该疾病名称是1877年以德国的病理学家弗里德里希·艾伯特·冯
  • 黏弹性黏弹性(英语:Viscoelasticity)是黏性和弹性的结合,亦即黏性流体与弹性固体的流动特性组合,一般认为粘性是液体的,弹性是固体的性质。两者都是表示各自的变形的容易度(难度)的,但其样
  • JAK-STAT通路JAK-STAT信号传送途径(英语:JAK-STAT signaling pathway)使得细胞外的化学信号跨越细胞膜并将信息传送到细胞核内DNA上的基因启动子上,最终引起细胞中DNA转录与活性水平发生改变
  • 虹鳟见内文Salmo mykiss Walbaum, 1792 Parasalmo mykiss (Walbaum, 1792) Salmo purpuratus Pallas, 1814 Salmo penshinensis Pallas, 1814 Parasalmo penshinensis (Pallas,
  • 科学社会主义科学社会主义(英语:Scientific socialism)是马克思主义的三个组成部分之一,是马克思批判地继承了乌托邦社会主义中的合理因素而发展的理论。之所以是“科学”,是因为找到实现社
  • 加州大学出版社加州大学出版社(英语:University of California Press,UC Press),是属于美国加州大学的学术出版社。它成立于1893年,为1868年成立的加州大学的教授出版著作和论文。其总部位于加州
  • 中央集水区自然保护区中央集水区自然保护区(Central Catchment Nature Reserve)是新加坡最大的自然保护区,占地2889 公顷。它位于新加坡的地理中心,构成一个巨大的绿肺。 这是新加坡4个自然保护区之
  • 娜塔莉·泽蒙·戴维斯娜塔莉·泽蒙·戴维斯(英语:Natalie Zemon Davis,1928年11月8日-),加拿大-美国历史学家,主要研究领域为法国史、欧洲近代史研究。1928年,娜塔莉出生于底特律的犹太家庭。中学时期就
  • 牛顿·D·贝克小牛顿·迪尔·贝克(Newton Deihl Baker, Jr.,1871年12月3日西弗吉尼亚州马丁斯堡-1937年12月25日俄亥俄州凯霍加县),美国律师、政治家,美国民主党成员,曾任美国战争部长(1916年-1921
  • 大坪林站坐标:24°58′59″N 121°32′29″E / 24.98292°N 121.54134°E / 24.98292; 121.54134大坪林站位于台湾新北市新店区,为台北捷运松山新店线与环状线第一阶段之交会捷运车站