ページング・スペースのプログラミング要件

アプリケーションが必要とするページング・スペースの量は、 システム上で行われるアクティビティーのタイプによって異なります。 ページング・スペースが不足すると、プロセスが失われることがあります。

ページング・スペースが不足すると、システムは混乱します。 ページング・スペースの不足状態が検出されたら、 追加のページング・スペースを定義する必要があります。

システムは、フリー・ページング・スペース・ブロックの数をモニターし、 ページング・スペース不足の存在を検出します。 vmstat コマンドは、この状態に関連する統計情報を取得します。 フリー・ページング・スペース・ブロック数が、ページング・スペース警告レベルと呼ばれるしきい値を下回ると、システムは SIGDANGER シグナルを送って、すべてのプロセス (kprocs を除く) に不足状態を知らせます。

注: 不足状態が続き、ページング・スペースの強制終了レベルと呼ばれる 2 番目のしきい値を下回ると、システムは、ページング・スペースの主要ユーザーであり、かつ SIGDANGER シグナルのシグナル・ハンドラーを持たないプロセスに、SIGKILL シグナルを送ります。 (SIGDANGER シグナルのデフォルトのアクションは、シグナルの無視です。) システムは、フリー・ページング・スペース・ブロック数がページング・スペースの強制終了レベルを上回るまで、SIGKILL シグナルを送り続けます。 low_ps_handling パラメーターが 2 に設定されている場合 (vmo コマンド下で)、および強制終了するプロセスが見つからない場合 (SIGDANGER ハンドラーなし)、システムは、SIGDANGER シグナルのシグナル・ハンドラーを持つ最初のプロセスに SIGKILL シグナルを送ります。

メモリーを動的に割り当てるプロセスは、psdanger サブルーチンでページング・スペース・レベルをモニターするか、特殊な割り当てルーチンを使用することによって、十分なページング・スペースを確保することができます。 SIGDANGER シグナルのシグナル・ハンドラーを定義することにより、またデータ域とスタック域、および共有メモリー・セグメントで割り振られたメモリー・リソースとページング・スペース・リソースを disclaim サブルーチンを使用して解放することにより、ページング・スペースの強制終了レベルに達してもプロセスを終了させないようにすることができます。

ほかにも、VMM からページング情報を動的に検索するのに 役立つ以下のようなサブルーチンがあります。

サブルーチン 説明
mincore メモリー・ページの常駐状況を判別する。
madvise プロセスが、予期しているページングの振る舞いをシステムに通知できるようにする。
swapqry ページング・デバイス状況を戻す。
swapon 指定したブロック・デバイスへのページングまたはスワッピングをアクティブにする。