doc/documentation/manual-pages/ja/man2/madvise.2
Sergio Carlavilla Delgado 989d921f5d Migrate doc to Hugo/AsciiDoctor
I'm very pleased to announce the release of
our new website and documentation using
the new toolchain with Hugo and AsciiDoctor.

To get more information about the new toolchain
please read the FreeBSD Documentation Project Primer[1],
Hugo docs[2] and AsciiDoctor docs[3].

Acknowledgment:
Benedict Reuschling <bcr@>
Glen Barber <gjb@>
Hiroki Sato <hrs@>
Li-Wen Hsu <lwhsu@>
Sean Chittenden <seanc@>
The FreeBSD Foundation

[1] https://docs.FreeBSD.org/en/books/fdp-primer/
[2] https://gohugo.io/documentation/
[3] https://docs.asciidoctor.org/home/

Approved by:    doceng, core
2021-01-26 00:31:29 +01:00

180 lines
6.8 KiB
Groff

.\" Copyright (c) 1991, 1993
.\" The Regents of the University of California. All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the University of
.\" California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\" may be used to endorse or promote products derived from this software
.\" without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" @(#)madvise.2 8.1 (Berkeley) 6/9/93
.\" %FreeBSD: src/lib/libc/sys/madvise.2,v 1.31 2004/07/02 23:52:13 ru Exp %
.\"
.\" WORD: revert 書き戻す(dirty なページをファイルシステムに書き込む)[madvise.2]
.\" WORD: physically backing store 物理的バッキングストア
.\" (仮想記憶の裏にあるディスク領域、swap やファイルシステム?!)
.\"
.\" $FreeBSD$
.Dd July 19, 1996
.Dt MADVISE 2
.Os
.Sh 名称
.Nm madvise , posix_madvise
.Nd メモリの使用法について助言を与える
.Sh ライブラリ
.Lb libc
.Sh 書式
.In sys/mman.h
.Ft int
.Fn madvise "void *addr" "size_t len" "int behav"
.Ft int
.Fn posix_madvise "void *addr" "size_t len" "int behav"
.Sh 解説
.Fn madvise
システムコールによって、自身のメモリ利用の習性の知識があるプロセスは、それを
システムに説明できます。
.Fn posix_madvise
インタフェースは同等で規格に適合するために提供されます。
.Pp
知られた習性は以下のとおりです:
.Bl -tag -width MADV_SEQUENTIAL
.It Dv MADV_NORMAL
デフォルトのページング動作に戻るようにシステムに指示します。
.It Dv MADV_RANDOM
ページがランダムにアクセスされ、プリフェッチが有利ではないと考えられるという
ヒントです。
.It Dv MADV_SEQUENTIAL
指定のページがフォルトで読み取られたとき、そのページの直前のページの
優先順位を VM システムが下げるようにします。
.It Dv MADV_WILLNEED
指定の仮想アドレス範囲内にあるページが一時的に高い優先順位を持つようにし、
それらがメモリ内にある場合、解放される可能性を減少させます。
さらに既にメモリ内にあるページはただちにプロセスにマップされ、
それによってプロセス全体にわたるフォルトによる読取りによる
不要なオーバヘッドを除去します。
これは、フォルトによるページのバッキングストアからの
読取りを生じさせるのではなく、
メモリ内に既にあるページを呼び出し側のプロセスに素早くマップさせます。
.It Dv MADV_DONTNEED
VM システムに、指定の範囲内のページのメモリ内優先順位の減少を許可します。
今後、このアドレス範囲への参照はページフォルトを発生させるでしょう。
.It Dv MADV_FREE
VM システムにページを解放する自由を与え、指定ページ範囲内の情報がもはや
重要でないことをシステムに通知します。
これは、アドレス空間を有効にしたままで
.Xr malloc 3
がアドレス空間内の任意の位置のページを解放できるようにする効率的な方法です。
ページが次に参照される時には、そのページは要求時 0 クリアの対象に
なっている可能性もありますし、または
.Dv MADV_FREE
呼び出しの前にそこにあったデータが残っているかもしれません。
ページが再び修正されるまで、そのアドレス空間範囲に対する参照だけでは、
VM システムはバッキングストアから情報をページに読み取る動作を行わなくなります。
.\" 訳追加
.It Dv MADV_NOSYNC
このマップに関連づけられているデータを
物理的バッキングストアにフラッシュしないようにシステムに要求します。
通常、これにより、ファイルシステムアップデートデーモンが
VM システムが汚したページを特に理由もないのに
物理ディスクに書き込む不要な動作を防止します。
VM とファイルシステムの一貫性は常に維持されることに注意してください。
この機能は、マップされたデータが必要なときだけ、
(通常、システムページャにより) フラッシュされることを
保証しているに過ぎません。
.Pp
この機能を使用する典型的な場合とは、
ファイルを裏に持つ共有メモリ領域をプロセス (IPC) 間通信で使いたいとき、
特に、その領域に格納されるデータを物理的ディスクに書き込む必要がない場合です。
この機能は、SysV 共有メモリ呼び出しで得られる mmap 性能と
同等の性能を与えてくれますし、かつ、SysV 共有メモリ呼び出しを使うより、
きめ細かい制御が可能でより制約が少ない方法でもあります。
しかしこの機能は UNIX プラットホーム間で移植性がないことに注意してください
(いくつかのプラットホームではデフォルトで正しく振る舞うかも知れませんが)。
詳しい情報に関しては、
.Xr mmap 2
MAP_NOSYNC セクションを参照してください。
.It Dv MADV_AUTOSYNC
将来、アドレス範囲内のページが汚された場合のために
MADV_NOSYNC の効果を元に戻します。
既に汚されているページについての効果は不定です。
書き戻しするかもしれませんし、しないかもしれません。
書き戻しを確実に行うには、
.Xr msync 2
または
.Xr fsync 2
システムコールを使用します。
.It Dv MADV_NOCORE
領域は、コアファイルに含まれません。
.It Dv MADV_CORE
コアファイルの領域を含みます。
.It Dv MADV_PROTECT
スワップ空間を使い果たした時に、
このプロセスは終了させられるべきではないことを、VM システムに通知します。
プロセスはスーパユーザの特権を持っていなければなりません。
これは、システムが適切に機能するために実行され続けなければならない
プロセス群で、思慮分別を持って使用されるべきです。
.El
.Pp
.Fn posix_madvise
インタフェースを呼び出す移植可能なプログラムは、上記のフラグではなく別名の
.Dv POSIX_MADV_NORMAL , POSIX_MADV_SEQUENTIAL ,
.Dv POSIX_MADV_RANDOM , POSIX_MADV_WILLNEED
および
.Dv POSIX_MADV_DONTNEED
を使用するべきです。
.Sh 戻り値
.Rv -std madvise
.Sh エラー
.Fn madvise
システムコールは次の場合に失敗します:
.Bl -tag -width Er
.It Bq Er EINVAL
.Fa behav
引数が有効ではありません。
.It Bq Er ENOMEM
.Fa addr
引数と
.Fa len
引数で指定された仮想アドレス範囲が有効ではありません。
.It Bq Er EPERM
.Dv MADV_PROTECT
が指定され、プロセスがスーパユーザの特権を持っていません。
.El
.Sh 関連項目
.Xr mincore 2 ,
.Xr mprotect 2 ,
.Xr msync 2 ,
.Xr munmap 2
.Sh 規格
.Fn posix_madvise
インタフェースは
.St -p1003.1-2001
に適合しています。
.Sh 歴史
.Fn madvise
システムコールは
.Bx 4.4
ではじめて登場しました。