Unix-system-calls-madvise
[top]#
[[File:]]
[[File:]] |
|Web |This Site
- 初心者向けのUnix *
- Unix-ホーム
- Unix-はじめに
- Unix-ファイル管理
- Unix-ディレクトリ
- Unix-ファイル権限
- Unix-環境
- Unix-基本ユーティリティ
- Unix-パイプとフィルタ
- Unix-プロセス
- Unix-コミュニケーション
- Unix-The Vi Editor
- Unix Shellプログラミング*
- Unix-シェルとは?
- Unix-変数の使用
- Unix-特殊変数
- Unix-配列の使用
- Unix-基本的な演算子
- Unix-意思決定
- Unix-シェルループ
- Unix-ループ制御
- Unix-シェル置換
- Unix-引用メカニズム
- Unix-IOリダイレクト
- UNIX-シェル関数
- Unix-マンページヘルプ
- 高度なUnix *
- Unix-正規表現
- Unix-ファイルシステムの基本
- Unix-ユーザー管理
- Unix-システムパフォーマンス
- Unix-システムログ
- Unix-信号とトラップ
- Unixの便利なリファレンス*
- Unix-便利なコマンド
- Unix-クイックガイド
- Unix-組み込み関数
- Unix-システムコール
- Unix-コマンドリスト
- Unixの役立つリソース*
- Unix役立つリソース
選択した読書
Copyright©2014 by finddevguides
Home | References | Discussion Forums | About TP |
madvise()-Unix、Linuxシステムコール
[[File:]] image :http://www.finddevguides.com/images/next.gif [next] image:http://www.finddevguides.com/add- this.gif [AddThisソーシャルブックマークボタン]
広告
NAME
madvise-メモリの使用に関するアドバイスを与える
概要
- #include <sys/mman.h> *
- int madvise(void * start 、size_t length 、int * *advice ); *
説明
アドバイスは_advice_パラメーターで示されます。
Tag
説明
特別な扱いはありません。 これがデフォルトです。
ランダムな順序でページ参照を期待します。 (したがって、先読みは通常よりも有用でない場合があります。)
順番にページ参照を期待してください。 (したがって、指定された範囲のページは積極的に先読みされ、アクセスされた直後に解放される可能性があります。)
近い将来アクセスを期待してください。 (したがって、先にいくつかのページを読むことをお勧めします。)
近い将来アクセスを期待しないでください。 (当面は、アプリケーションは指定された範囲で終了するため、カーネルはそれに関連付けられたリソースを解放できます。)この範囲内のページへの後続のアクセスは成功しますが、メモリコンテンツの再読み込みが発生します基礎となるマップされたファイル( mmap ()を参照)または基礎となるファイルなしのマッピング用のゼロフィルオンデマンドページ。
返り値
成功すると madvise ()はゼロを返します。 エラーの場合、-1を返し、_errno_が適切に設定されます。
エラー
Tag | Description |
---|---|
EAGAIN | A kernel resource was temporarily unavailable. |
EBADF | The map exists, but the area maps something that isn’t a file. |
EINVAL | The value len is negative, start is not page-aligned, advice is not a valid value, or the application is attempting to release locked or shared pages (with MADV_DONTNEED). |
EIO | (for MADV_WILLNEED) Paging in this area would exceed the process’s maximum resident set size. |
ENOMEM | (for MADV_WILLNEED) Not enough memory: paging in failed. |
ENOMEM | Addresses in the specified range are not currently mapped, or are outside the address space of the process. |
Linuxノート
現在のLinux実装(2.4.0)は、このシステムコールをアドバイスとしてではなくコマンドとして認識しているため、このアドバイスに応じて通常行うことを実行できない場合にエラーを返す可能性があります。 (上記のエラーの説明を参照してください。)これは非標準の動作です。
Linuxの実装では、アドレス_start_をページに揃える必要があり、_length_をゼロにすることができます。 指定されたアドレス範囲の一部がマッピングされていない場合、Linuxバージョンの madvise ()はそれらを無視し、残りに呼び出しを適用します(ただし、システムコールから ENOMEM を返す必要があります)。
歴史
準拠
POSIX.1b。 POSIX.1-2001は、POSIX_MADV_NORMALなどの定数を使用して posix_madvise ()を記述し、ここで説明した動作に近い動作をします。 ファイルアクセス用の同様の posix_fadvise ()があります。
関連項目
[[File:]] image :http://www.finddevguides.com/images/next.gif [next] [[File:]]
広告
Advertisements |