スラッシング
このため、スラッシング状態に陥らないことがOSの可用性確保上重要な課題となる。
多くのUNIXではユーザーが確保できるメモリ量を制限する機能がある。資源の平等な分配はもちろん、管理者がコンピューターのコントロールを失うという最悪の事態を避けるためでもある。Microsoft Windows NT系のOSでは、ページファイルを使用しなければメモリを確保できない状態になると、システムコールのメモリ確保関数は、ページングによってメモリが確保されるまで要求を受け付けずエラーにし、理由として物理メモリに空きがないことを通知し、なるべくページファイルを使わないようアプリケーションに促す。アプリケーションはこの情報を元に不必要なメモリをOSに返却したり、あるいはメモリを必要とした操作を却下することができる。もちろん、ページングが成功するまで待機し、仮想記憶によって取得されたメモリ空間を利用することもできる。しかし、この方法は最悪の場合OS自体がページアウトされる危険性があり、システムの著しい速度低下を招き、ユーザーには歓迎されない結果をもたらすだろう。
近年においてスラッシングは比較的容易に回避可能な現象となった。理由としては、
メモリの低廉化・高密度化によって必要十分な物理メモリを準備することができるようになった
共有ライブラリによってアプリケーションのメモリ利用効率が向上した
よりよいワーキングセット・ページ置換アルゴリズムの採用によって仮想記憶を実現する手法が効率的になった
ハードディスクの記録密度向上によりI/O時間が高速化された
バスマスタI/OによりCPU時間を消費せずディスクI/Oができるようになった
カーネルのマルチスレッド化によってページフォールトを起こしたプロセス以外のプロセスをブロックしなくなった
積極的なページのクリーニングによりディスクI/Oを伴わないページ獲得が期待できるようになった
等があげられる。
ただし、上記の理由としてあげた要件を満たさない場合や、例えば物理メモリが1GBしかないのに2GBのメモリを使うアプリケーションを動かした等の場合は、依然としてスラッシングが起きうる。近年は高画素の画像データや動画、3Dゲームなど、一般向けの用途でもメモリ消費が増加しており、スラッシングの発生率は再び増加傾向にあると考えられる。
スラッシングを完全に予防するには、仮想記憶を使わないという戦略がある。多くのリアルタイムオペレーティングシステムが仮想記憶を使わないのは、スラッシングはもとより、ページングによる遅延を避けるためである。一般的なヒープ管理アルゴリズムではメモリのフラグメンテーションによって消費される使用されているメモリと使用されていないメモリの合計は、使用されているメモリの2倍を超えない。それは、使用されていないメモリ断片が使用したいメモリ断片よりも大きければ、その使用されていないメモリ断片は使用されるからである。よって使用するメモリ見込み量の2倍以上物理メモリがあれば仮想記憶を準備する必要はない。ただし、メモリオーバーフローが全く起きえない、またはメモリオーバーフローのエラー処理を全てのプログラムが適切に行う前提であり、そもそも適切な処理方法が難しいアプリケーションの存在も考慮した上で慎重に選択すべき戦略である。スラッシングではないただのページングであれば、リアルタイム性を重視しないOSでは問題にならない。