ページング・スペースのプログラミング要件
アプリケーションが必要とするページング・スペースの量は、 システム上で行われるアクティビティーのタイプによって異なります。 ページング・スペースが不足すると、プロセスが失われることがあります。
ページング・スペースが不足すると、システムは混乱します。 ページング・スペースの不足状態が検出されたら、 追加のページング・スペースを定義する必要があります。
システムは、フリー・ページング・スペース・ブロックの数をモニターし、 ページング・スペース不足の存在を検出します。 vmstat コマンドは、この状態に関連する統計情報を取得します。 フリー・ページング・スペース・ブロック数が、ページング・スペース警告レベルと呼ばれるしきい値を下回ると、システムは SIGDANGER シグナルを送って、すべてのプロセス (kprocs を除く) に不足状態を知らせます。
注: 不足が続き、ページング・スペース強制終了レベルと呼ばれる 2 番目のしきい値を下回ると、システムは、ページング・スペースの主要ユーザーであり、 SIGDANGER シグナルのシグナル・ハンドラーを持たないプロセスに、 SIGKILL シグナルを送信します。 ( SIGDANGER シグナルのデフォルトのアクションは、シグナルを無視することです。) システムは、空きページング・スペース・ブロックの数がページング・スペース強制終了レベルを超えるまで、 SIGKILL シグナルの送信を続けます。 low_ps_handling パラメーターが ( vmo コマンドで) 2 に設定されていて、強制終了するプロセスが ( SIGDANGER ハンドラーなしで) 検出されない場合、システムは、 SIGDANGER シグナルのシグナル・ハンドラーを持つ最も古いプロセスに SIGKILL シグナルを送信します。
メモリーを動的に割り当てるプロセスは、 psdanger サブルーチンでページング・スペース・レベルをモニターするか、または特殊な割り当てルーチンを使用することによって、十分なページング・スペースが存在するようにすることができます。 SIGDANGER シグナル用のシグナル・ハンドラーを定義し、 disclaim サブルーチンを使用して、データおよびスタック域に割り当てられたメモリーおよびページング・スペース・リソースを解放することにより、ページング・スペース強制終了レベルに達したときに、プロセスが終了するのを回避することができます。 共有メモリー・セグメント内にあります。
ほかにも、VMM からページング情報を動的に検索するのに 役立つ以下のようなサブルーチンがあります。
| サブルーチン | 説明 |
|---|---|
| mincore | メモリー・ページの常駐状況を判別する。 |
| madvise (アドバイス) | プロセスが、予期しているページングの振る舞いをシステムに通知できるようにする。 |
| スワップリー (swapqry) | ページング・デバイス状況を戻す。 |
| スワポン | 指定したブロック・デバイスへのページングまたはスワッピングをアクティブにする。 |