コピーオンライト(CoW)
複数プロセスが同じ物理ページを共有し、書き込みが起きたページだけを新しい物理ページへコピーして書き手のPTEを差し替える仕組み。
- 概念URI
https://comcomponent.com/knowledge/copy-on-write/
- 別名・表記
- Copy-on-Write / FILE_MAP_COPY
- 最終確認日
- 2026-08-01
- 機械可読データ
- JSON-LD
この概念が関わる関係
- イメージマッピング(SEC_IMAGE)はコピーオンライト(CoW)を利用します。コードのような変更されないページは多数のプロセスで同じ物理ページを共有でき、プロセス固有の変更が必要なページだけがCoWで分岐する。ただしASLRによる再配置やローダーの修正、実際のPEセクション属性により、すべてのDLLページが必ず共有されるわけではない。 / 確度: 条件付きの関係 / 確認日: 2026-08-20 出典 出典
- コピーオンライト(CoW)はページフォールトの原因になることがあります。CoWページは通常の共有書き込み可能ページにはなっていないため、書き込もうとするとCPUが保護フォルトを発生させる。メモリマネージャーはこれを違法な書き込みではなくCoW属性への書き込みだと判定する。 / 確度: 確立した関係 / 確認日: 2026-08-20 出典
- コピーオンライト(CoW)はページテーブルとPTEを利用します。判定を受けて、書き手用の物理ページを1枚得て元ページの内容をコピーし、書き手のPTEを新しい物理ページへ差し替えて保護を通常の読み書きへ変え、失敗した命令を再実行させる。もう一方のプロセスは元の内容を読み続ける。 / 確度: 確立した関係 / 確認日: 2026-08-20 出典
- FILE_MAP_WRITE(共有書き込み)はコピーオンライト(CoW)と両立しません。FILE_MAP_WRITEの共有書き込みは片方の変更が同じファイルマッピングを使う別ビューからも見える設計で、FILE_MAP_COPYでは書いたページだけがプロセス固有になり、変更は元ファイルへ戻らずビューを外すと失われる。目的によって選択が正反対になる。 / 確度: 確立した関係 / 確認日: 2026-08-20 出典
- コピーオンライト(CoW)はQueryWorkingSetExのSharedビットで確認できます。CoW後もVirtualQueryのTypeはデータビューならMEM_MAPPED、実行イメージならMEM_IMAGEのままで、その領域がどの初期割り当てに由来するかを報告する。ページ単位の私有化はQueryWorkingSetExのSharedビットが0かどうかで確認する。 / 確度: 確立した関係 / 確認日: 2026-08-20 出典
- コピーオンライト(CoW)はCommit(MEM_COMMIT)を前提とします。FILE_MAP_COPYでは将来ビュー内の全ページへ書く可能性があるため、マップした時点でビュー全体に相当するCommit chargeを取る。最初の1ページへ書いた瞬間にPrivate Bytesが増えるとは限らないので、Private Bytesだけを合否判定にすると正しく動いているCoWを見落とす。 / 確度: 確立した関係 / 確認日: 2026-08-20 出典
- コピーオンライト(CoW)はVMMapで確認できます。VMMapはプロセスの仮想メモリをImage・Mapped File・Privateなどに分解し、Working SetのPrivate/Shareable内訳を表示する。領域のTypeだけでなくこの内訳を見る。 / 確度: 確立した関係 / 確認日: 2026-08-20 出典
この概念を扱う記事
一次資料
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。