仮想メモリ
プログラム (Oracle など) が起動時に 100 MB のメモリを割り当てたと仮定します。追加の物理ページやディスク ページは変更されませんが、VM のサイズは 100 MB 増加します。つまり、VM はメモリ ブック キーピングに他なりません。
利用可能な物理メモリ + ページング ファイル メモリの合計は、システム内のすべてのプロセスが割り当てることができる最大メモリです。システムがこれを行うのは、プロセスが割り当てられたすべてのメモリを実際に消費し始めた場合に、OS が必要な実際の物理ページをいつでも提供できるようにするためです。
プライベート メモリ
プログラムが 10 MB のデータをその 100 MB にコピーすると、OS はそれらのアドレスに対応するプロセスにページが割り当てられていないことを感知し、10 MB 相当の物理ページをプロセスのプライベート メモリに割り当てます。(このプロセスはページ フォールトと呼ばれます)
ワーキング セット
定義 : ワーキング セットは、プログラムによって最近使用されたメモリ ページのセットです。
この時点で、これらの 10 ページがプロセスのワーキング セットに追加されます。その後、プロセスがこのデータを以前に割り当てられた別の 10 MB キャッシュにコピーすると、他のすべては同じままですが、古いページがワーキング セットにない場合、ワーキング セットは再び 10 Mb 増加します。しかし、これらのページが既にワーキング セットにある場合は、すべて問題なく、プログラムのワーキング セットは同じままです。
ワーキング セットの動作
プロセスが最初の 10 ページに二度と触れないことを想像してみてください。その場合、これらのページはプロセスのワーキング セットから切り取られ、OS がより頻繁に使用される他のページを取り込めるようにページ ファイルに送信される可能性があります。ただし、差し迫ったメモリ不足の要件がない場合は、このページング操作を実行する必要はなく、OS はメモリが豊富であるかのように動作できます。この場合、ワーキング セットは単にこれらのページを残すだけです。
ワーキング セット > 仮想メモリはいつですか
ここで、同じプログラムが 100 Mb のメモリをすべて割り当て解除したとします。プログラム VM のサイズはすぐに 100 MB 縮小されます (VM = すべてのメモリ割り当て要求の記録を保持していることを思い出してください)。
ワーキング セットは、これによって影響を受ける必要はありません。これは、最近アクセスされた 10 Mb 相当のページが変更されないためです。したがって、これらのページは、OS が必要なときにいつでも再利用できますが、プロセスのワーキング セットに残ります。
これにより、実質的に VM < ワーキング セットが作成されます。ただし、より多くのメモリを消費する別のプロセスを開始し、ワーキング セット ページが OS によって回収されると、これは修正されます。