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

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

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

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

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

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

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

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