知識マップ: Windowsメモリの深層(第2回) ── 物理ページの一生:5つのリストとページファイルの真実
記事「Windowsメモリの深層(第2回) ── 物理ページの一生:5つのリストとページファイルの真実」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。
Working Setから外れたページはすぐ消えるわけではありません。内容が元ファイルと同じか、すでに安全なバックストアを持つcleanなページはStandbyに残り、同じ内容が必要になればディスクを読まずソフトフォルトで戻せます。変更済みのdirtyページはModifiedで書き戻しを待ち、プライベートページならページファイル、マップドファイルなら対応ファイルへ書き出されてからStandbyへ進みます。AvailableはStandby・Free・Zeroedの合計なので、Freeが少なくAvailableが十分という表示は矛盾ではありません。FreeとZeroedはどちらも空きに見えますが、ユーザーモードへ渡す前にゼロ化が要るかどうかというセキュリティ上の準備状態が違います。ページファイルは遅いRAMというだけでなく、Commit Limitを広げ、変更済みプライベートページを支え、クラッシュダンプを可能にしています。
flowchart LR
accTitle: Windowsの物理ページの一生とページファイルの役割の知識マップ
accDescr: PFNデータベースが追う物理ページの状態と、Active・Modified・Standby・Free・Zeroedの遷移、AvailableにStandbyが含まれる理由、Modified Page Writerによる書き戻し、メモリ圧縮ストア、Commit Limitとクラッシュダンプを支えるページファイルの役割を示す図
pfn_database["PFNデータベース"]
page_file["ページファイル"]
windbg["WinDbg"]
rammap["RAMMap"]
working_set_trim["Working Setのトリミング"]
standby_page_list["Standbyリスト"]
memory_commit["Commit(MEM_COMMIT)"]
soft_page_fault["ソフトページフォールト"]
available_memory["利用可能メモリ(Available)"]
free_page_list["Freeリスト"]
zeroed_page_list["Zeroedリスト"]
modified_page_list["Modifiedリスト"]
modified_page_writer["Modified Page Writer"]
private_modified_page["プライベートな変更済みページ"]
commit_limit["Commit LimitとCommit Total"]
system_crash_dump["システムクラッシュダンプ"]
memory_compression_store["メモリ圧縮ストア"]
hard_page_fault["ハードページフォールト"]
page_file_removal["ページファイルの廃止"]
working_set["Working Set"]
pages_input_per_sec["Memory\Pages Input/sec"]
testlimit["Testlimit"]
pfn_database -->|"で確認できる"| windbg
pfn_database -->|"で確認できる"| rammap
working_set_trim -->|"原因になり得る"| standby_page_list
working_set_trim -->|"用いるのは非推奨"| memory_commit
soft_page_fault -->|"利用する"| standby_page_list
standby_page_list -->|"実装を担う"| available_memory
free_page_list -->|"実装を担う"| available_memory
zeroed_page_list -->|"実装を担う"| available_memory
modified_page_list -->|"前提とする"| modified_page_writer
private_modified_page -->|"に保存される"| page_file
modified_page_writer -->|"原因になり得る"| standby_page_list
page_file -->|"実装を担う"| commit_limit
system_crash_dump -.->|"利用する"| page_file
memory_compression_store -.->|"軽減する"| hard_page_fault
memory_compression_store -->|"用いるのは非推奨"| page_file_removal
memory_compression_store -->|"に保存される"| working_set
pages_input_per_sec -->|"用いるのは非推奨"| page_file
memory_commit -->|"で確認できる"| testlimit
概念間の関係(全18件)
図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。
- PFNデータベースはWinDbgで確認できます。
- PFNデータベースはRAMMapで確認できます。
- Working SetのトリミングはStandbyリストの原因になることがあります。
- Working SetのトリミングをCommit(MEM_COMMIT)に用いることは推奨されません。
- ソフトページフォールトはStandbyリストを利用します。
- Standbyリストは利用可能メモリ(Available)の実装を担います。
- Freeリストは利用可能メモリ(Available)の実装を担います。
- Zeroedリストは利用可能メモリ(Available)の実装を担います。
- ModifiedリストはModified Page Writerを前提とします。
- プライベートな変更済みページはページファイルに保存されます。
- Modified Page WriterはStandbyリストの原因になることがあります。
- ページファイルはCommit LimitとCommit Totalの実装を担います。
- システムクラッシュダンプはページファイルを利用します。
- メモリ圧縮ストアはハードページフォールトを軽減します。
- メモリ圧縮ストアをページファイルの廃止に用いることは推奨されません。
- メモリ圧縮ストアはWorking Setに保存されます。
- Memory\Pages Input/secをページファイルに用いることは推奨されません。
- Commit(MEM_COMMIT)はTestlimitで確認できます。
主要概念の定義
機械可読データ
このデータセットについて
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。