Solaris Resource Manager 1.3 のシステム管理

メモリー制限値の技術情報

プロセスがメモリーを増やす場合には、接続されている l ノードのメモリー制限値 (合計とプロセス当たり) の制約を受けます。プロセスがメモリーを増やすには、次の 5 つの方法があります。

  1. malloc(3C) などの割り当てルーチンを呼び出す。これによって、sbrk(2) システムコールが呼び出されます。メモリー制限値を超えると、errno に ENOMEM が設定されたエラーが返されます。

  2. スタックを拡張し、スタックフォルトを引き起こす。通常、これによって、1 ページのメモリーがプロセスに追加されます。メモリー制限値を超えると、SIGSEGV シグナルがプロセスに送信されます。

  3. mmap(2) コマンドを使用する。

  4. fork(2) コマンドを使用する。子のアドレス空間が複製されますが、この空間はまだ親プロセスが所有しています。この複製で新しいアドレス空間が memory.plimit の値を超えることはありません。親プロセスはあらかじめこの制限値以内になければならないからです。しかし、この割り当ては memory.limit の制約を受けます。

  5. exec(2) コマンドを使用する。exec 実行中には、古いアドレス空間が破棄されるので、メモリー使用量が減少します。しかし、新しいプログラムのアドレス空間が大きいために制限値を超えると、exec は失敗することがあります。