Open棟梁Project - マイクロソフト系技術情報 Wiki
目次  †
概要  †
仮想アドレス空間にマッピングされた各コミット済みページは
- 物理メモリ
 
- 物理ストレージ(ページングファイル、メモリマップトファイル)
 
に支持される。
ページ  †
- Windows のユーザープロセスに対する仮想アドレス空間は、3 種類のページに分類できる。
 
- 仮想メモリの各フラグメント(断片)をページといい、サイズは通常 4KBである。
 
予約済みページ  †
- VirtualAlloc?で予約したページ
 
- 将来の使用に備えて予約されたページ。
 
- 予約済みページは、物理ストレージや、物理メモリを占有しない。
 
- しかし、仮想アドレス空間が予約されるため当該プロセスのみのメモリ・リーク、
正確には、当該プロセスの仮想アドレス空間のリークが発生することはある。 
コミット済みページ  †
- プロセスのコミット済みページ
 
- アプリケーションがコミット済みページにアクセスすると、
オペレーティングシステムはそのページをワーキング セットに指定する。 
ワーキングセット  †
仮想アドレスに直接関係しないプロセスの所有する物理メモリ
32ビットと64ビット  †
| 32bitの仮想アドレス空間 | 64bitの仮想アドレス空間 | 
| 合計4GB | 合計16TB | 
| 2GBがカーネルモード | 8TBがカーネルモード | 
| 2GBがユーザモード | 8TBがユーザモード | 
 
32bit  †
仮想アドレス空間  †
32bitのデフォルトで
- ユーザモード(0x00000000~0x7fffffff)
 
- カーネルモード(0x80000000~0xffffffff)
 
AWE  †
AWEにより、32bitプロセスでも仮想アドレス空間の拡張可能。
(APPがAWEをサポートしていればAWEのAPIを使用して独自にメモリ管理をする)
また、3GBスイッチでユーザモードをx86:3GB、x64:4GB※に拡張可能。
※ 32ビットプロセス(WOW64)でアクセス可能な仮想アドレス空間にカーネル空間が存在しないため、4GBをフルに活用できる。
64bit  †
ユーザモード  †
カーネルモード  †
カーネルモードの仮想アドレス空間は、全てのプロセスで共有される。
- スレッドの開始アドレスが0x80000000(デフォルト)より上位にある場合、そのスレッドはカーネルモード・スレッドになる。
 
- カーネルモード・スレッドを作成したデバイス・ドライバを特定するためには、スレッドの開始アドレスを調べ(Pviewer.exe)、
そのアドレスの上位で最も近いベースアドレスを持つドライバを探す(Pstat.exe)。 
※ これらの調査の操作は、Process Explorerに統合されている(★)。
以下のツールも利用可能。
を使用すると、プロセスで利用されている.sys(ドライバ)を確認できる。