ワーキングセットとは
ワーキングセットとは、ある
プロセスが特定の時点で実際に使用している仮想メモリページの集合のことです。これは、
プロセスが現在アクセスしているメモリ領域を指し、
プロセスの動作に必要なデータや命令が含まれています。
ワーキングセットのサイズは、システムのパフォーマンスに大きな影響を与えます。ワーキングセットが大きすぎると、同時に実行できる
プロセスの数が減少し、メモリ資源の利用効率が悪化します。一方、ワーキングセットが小さすぎると、必要なページがメモリに存在しない場合にページフォールトが頻発し、ディスクへのアクセスが増加して処理速度が低下します。
ページ置換アルゴリズムとワーキングセット
従来のページ置換アルゴリズムは、システム全体の物理ページを対象としていました。しかし、メモリ容量が増大するにつれて、システム全体のページを管理する方法は非効率になりました。たとえば、NRU(Not Recently Used)アルゴリズムをシステム全体に適用する場合、二針時計アルゴリズムが用いられていました。
二針時計アルゴリズムは、物理ページを円形に並べ、参照フラグをクリアする針と参照をチェックする針が順次ページをチェックしていく方式です。このアルゴリズムでは、一定間隔で所定のページ数をクリアまたはチェックします。しかし、メモリ容量が大きくなるにつれて、全ての物理ページをチェックするのに時間がかかりすぎるようになりました。針を進める速度を上げると
カーネルの動作時間が長くなり、システム応答性が悪化します。逆に針の間隔を広げると、参照フラグがクリアされたままの物理ページが少なくなり、効率が悪くなります。
このような背景から、システム全体ではなく、より分割された単位でページ置換を行う必要性が生まれました。そこで、
プロセスごとのワーキングセットに基づいたページ置換が一般化しました。ワーキングセットを決定する際には、ページ置換アルゴリズムで使われる様々なアルゴリズムが適用されます。いずれにしても、ワーキングセットベースのページ置換は、
参照の局所性という概念に基づいています。
ワーキングセットモデル
ワーキングセットモデルは、
プロセスがワーキングセットを物理メモリ上に維持できる場合にのみ実行を許可する方式です。全ての
プロセスのワーキングセットの合計が物理メモリ量を超えると、スラッシングが発生し、システム全体の性能が著しく低下します。スラッシングとは、ページフォールトが多発し、メモリとディスクの間でページが頻繁に交換される状態です。これを避けるために、ワーキングセットを維持できる
プロセスを優先的に実行します。
ワーキングセットを維持できない
プロセスは、使用中の物理メモリを全て解放し、他の
プロセスが利用できるようにします。ワーキングセットモデルを採用する際は、優先度の高い
プロセスのワーキングセットを優先的に維持するように設定することが一般的です。これにより、重要な
プロセスがより効率的に動作できるようになります。
ワーキングセットの概念は、効率的なメモリ管理を行う上で非常に重要です。適切なワーキングセットの管理により、システム全体のスムーズな動作とパフォーマンスの向上が期待できます。また、ページ置換アルゴリズムやワーキングセットモデルのような技術は、現代のコンピューターシステムにおいて不可欠な要素となっています。