知識マップ: Windowsメモリの深層(第3回) ── セクションオブジェクトとコピーオンライト:DLLとファイルマッピングの正体

記事「Windowsメモリの深層(第3回) ── セクションオブジェクトとコピーオンライト:DLLとファイルマッピングの正体」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。

セクションオブジェクトは共有できるメモリの区画を表し、各プロセスはその一部をビューとして自分の仮想空間へマップします。共有されるのは仮想アドレスではなくセクション内の内容なので、同じオフセットをマップしてもビューの開始アドレスはプロセスごとに異なり得ます。だから共有構造に生ポインターを保存してはいけません。セクションはファイルバックとページファイルバックに分かれ、EXEやDLLのロードはSEC_IMAGEのイメージマッピング、通常のファイルはデータマッピングになります。読み取り中は同じ物理ページを共有し、CoWページへの書き込みで保護フォルトが起きた時点でそのページだけをコピーして書き手のPTEを差し替えます。CoW後もVirtualQueryのTypeはMEM_MAPPED/MEM_IMAGEのままなので、私有化の確認にはQueryWorkingSetExのSharedビットを使います。

セクションオブジェクトとコピーオンライトの知識マップセクションオブジェクトとビューの分離、ファイルバックとページファイルバックの違い、イメージマッピングとデータマッピングの区別、CoWで書き込み時に物理ページが分岐する流れ、CoW後もMEM_MAPPED/MEM_IMAGEのままであること、SECTION_OBJECT_POINTERSが分ける3経路を示す図利用する原因になり得る両立しない実装を担う原因になり得る実装を担う原因になり得る実装を担う実装を担う利用する原因になり得る利用する両立しないで確認できる前提とするで確認できるで確認できる実装を担う利用するセクションオブジェクトコピーオンライト(CoW)ビュー(セクションのマップ)ページフォールト生ポインターの共有ファイルバックセクションStandbyリストページファイルバックセクション共有可変状態イメージマッピング(SEC_IMAGE)データマッピングページテーブルとPTEFILE_MAP_WRITE(共有書き込み)QueryWorkingSetExのSharedビットCommit(MEM_COMMIT)VMMapProcess ExplorerSECTION_OBJECT_POINTERSキャッシュマネージャー

概念間の関係(全19件)

図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。

主要概念の定義

セクションオブジェクト
共有できるメモリの区画を表し、ファイルをプロセスのアドレス空間へマップする機構でもあるカーネルオブジェクト。
コピーオンライト(CoW)
複数プロセスが同じ物理ページを共有し、書き込みが起きたページだけを新しい物理ページへコピーして書き手のPTEを差し替える仕組み。
ビュー(セクションのマップ)
セクションの一部を、あるプロセスの仮想アドレス範囲へ見せたもの。開始アドレスはプロセスごとに異なり得る。
生ポインターの共有
共有メモリ上の構造体にプロセス内の仮想アドレスをそのまま保存して他プロセスに使わせること。ビューのマップ先アドレスは一致する保証がないため壊れる。
ファイルバックセクション
実ファイルを内容の復元元とするセクション。cleanなページは物理ページを捨てても元ファイルから再読込できる。
ページファイルバックセクション
明示的なデータファイルを持たず、ページファイルで支えられるセクション。CreateFileMappingのhFileにINVALID_HANDLE_VALUEを渡して作る。
イメージマッピング(SEC_IMAGE)
EXEやDLLをロードするためのセクション。ページ保護はPEイメージ自身のセクション属性が決め、VirtualQueryのTypeはMEM_IMAGEになる。
データマッピング
通常ファイルや共有データのためのセクション。ページ保護はマッピングとビューの指定が決め、VirtualQueryのTypeはMEM_MAPPEDになる。
FILE_MAP_WRITE(共有書き込み)
同じファイルマッピングを使う別のビューからも変更が見える、共有書き込みのビュー種別。
SECTION_OBJECT_POINTERS
ファイルオブジェクトをファイルストリームのセクションへ結び、DataSectionObject・SharedCacheMap・ImageSectionObjectでメモリ上の内容とキャッシュ情報を追う構造。
キャッシュマネージャー
ファイルデータをメモリ上のシステムキャッシュに保持し、読み書きの多くをディスクI/Oなしで処理させるWindowsカーネルのコンポーネント。ファストI/Oの近道もこのキャッシュを直接利用する。

機械可読データ

このデータセットについて

作成
合同会社小村ソフト
ライセンス
CC BY 4.0 ── 出典(合同会社小村ソフト)とライセンスへのリンクを明示し、改変した場合はその旨を示すことを条件に、再配布・改変を含めて再利用できます
最終確認日
2026-08-22 ── 収録する関係のうち、最後に出典と照合した日

このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。