ワーキングセット【working set】

仮想メモリを用いるとストレージの領域の一部をメインメモリの延長のように扱うことができる。ストレージ側のデータはプログラムから直接アクセスできないため、必要になったら「ページ」という固定長の単位ごとにメモリ側の領域と内容を入れ替えてアクセスする仕組みになっている。
このとき、実行中のプログラム(プロセス)は常にすべてのデータを必要とするわけではなく、その時々で特定のデータに集中してアクセスする性質がある。この「今まさに必要としているページの集まり」がワーキングセットで、その内容はプログラムの進行に伴って絶えず変化する。
ワーキングセットに含まれるページが物理メモリ上に収まっていれば、ストレージとの間でデータを入れ替える処理(スワップ)を行わずに済み、プログラムは高い性能を維持して動作できる。一方、物理メモリの空きが不足してワーキングセットの一部がストレージへ追い出されると、必要になる度にページの入れ替えが発生する。これが頻発すると、計算資源のほとんどがデータ転送に費やされ、システム全体の動作が極端に遅くなる「スラッシング」という状態に陥る。
OSはスラッシングを防ぐため、各プロセスのワーキングセットの大きさを動的に推定し、それに見合った物理メモリを割り当てるよう制御する。ワーキングセットの規模はプログラムの種類や処理の段階によって異なり、大量データを横断的に参照する処理では大きくなり、単純な繰り返し処理では小さくなる傾向がある。
ソフトウェアの機能について言う場合
ソフトウェアの操作性に関する文脈で「ワーキングセット」という語が使われることもある。項目数や選択肢が膨大なメニューなどで、頻繁に使うものだけを選んで表示する機能をこのように呼ぶ場合がある。この用法はメモリ管理の概念とは別物だが、「その時点で実際に必要なものだけを手元に置く」という考え方は共通している。