OSDN Git Service

Retire LDP man-pages repository
[linuxjm/LDP_man-pages.git] / release / man7 / futex.7
diff --git a/release/man7/futex.7 b/release/man7/futex.7
deleted file mode 100644 (file)
index f71f8fe..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-.\" This manpage has been automatically generated by docbook2man
-.\" from a DocBook document.  This tool can be found at:
-.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
-.\" Please send any bug reports, improvements, comments, patches,
-.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.\"
-.\" %%%LICENSE_START(MIT)
-.\" This page is made available under the MIT license.
-.\" %%%LICENSE_END
-.\"
-.\"*******************************************************************
-.\"
-.\" This file was generated with po4a. Translate the source file.
-.\"
-.\"*******************************************************************
-.\"
-.\" Japanese Version Copyright(C) 2003 Suzuki Takashi
-.\"         all rights reserved.
-.\" Translated Fri Oct 24 10:37:10 JST 2003
-.\"         by Suzuki Takashi.
-.\"
-.TH FUTEX 7 2012\-08\-05 Linux "Linux Programmer's Manual"
-.SH 名前
-futex \- 高速ユーザー空間ロック機構
-.SH 書式
-.nf
-\fB#include <linux/futex.h>\fP
-.fi
-.SH 説明
-.PP
-Linux カーネルは、ユーザー空間で高速なロック機構やセマフォを使用するための 基礎的要素として futex ("Fast user\-space
-mutexes"; 高速ユーザー空間 mutex) を 提供している。 futex は非常に基本的なもので、 POSIX mutex
-のような高度なロック機構の概念を構築するのに役立っている。
-.PP
-このページはすべての設計決定を記述するようにはなっておらず、 アプリケーションやライブラリの開発に関係することがらに限っている。
-実際にはプログラマの多くは直接は futex を扱わないが、その代わり futex に基づいて構築されたシステムライブラリ (例えば NPTL
-スレッド) に 依存することになるだろう。
-.PP
-futex は異なるプロセス間で共有することのできるメモリー片で識別される。 これらの異なるプロセスでは、同じアドレスが付与されている必要はない。
-裸の姿では futex のセマンティクスはセマフォと同じである。 futex は不可分操作で (atomically)
-インクリメントしたりデクリメントしたりできる カウンターで、プロセスは値が正になるのを待つことができる。
-.PP
-futex の操作は、競合がない場合には完全にユーザー空間で行なわれる。 カーネルは競合が起こった場合の仲裁に関与するだけである。
-良識ある設計では競合が起こらないよう努力するが、 futex も競合状態に関して最適化されている。
-.PP
-裸の姿では、 futex は不可分なアセンブリ命令でのみ操作される アラインメントの揃った int 型の変数である。 複数のプロセスはこの int
-型変数を、 \fBmmap\fP(2)  を用いるか、 共有メモリーセグメントを介するか、 メモリー空間を共有する (この場合、
-アプリケーションは一般的にマルチスレッドであると呼ばれる) か方法で共有する。
-.SS セマンティクス
-.PP
-futex の操作はすべてユーザー空間から始まるが、必要に応じて \fBfutex\fP(2)  システムコールを用いてカーネルと通信する。
-.PP
-futex を "up" するには、 ホスト CPU に対し int 型変数を不可分操作でインクリメントするような、 適切なアセンブリ命令を実行する。
-そのあと、実際に 0 から 1 に変化したかどうかをチェックし、 変化していれば待ちプロセス (waiter) はないということであり、操作は完了する。
-これは競合のない場合であり、高速でよく起こるはずである。
-.PP
-競合がある場合、不可分操作のインクリメントでカウンターは \-1 (または他の負の数)
-から変化する。これが検出されると、待ちプロセスがあるということである。 ユーザー空間ではカウンターを 1 に設定し、 \fBFUTEX_WAKE\fP
-を用いてカーネルに待ちプロセスを wake (起床) させるよう指示する。
-.PP
-futex の獲得を待つ、すなわち futex を "down" するには反対の操作を行なう。 不可分操作でカウンターをデクリメントし、カウンターが 0
-に変化したかどうかを チェックする。変化していれば操作は完了し futex は競合していないということである。 0
-にならなかった場合、プロセスはカウンターを \-1 に設定し、 他のプロセスがその futex を up
-するのを待つようカーネルに要求しなければならない。 これは \fBFUTEX_WAIT\fP を行なうことで実現される。
-.PP
-\fBfutex\fP(2)  システムコールには、省略可能な引数としてタイムアウトを渡すことができ、 カーネルはその futex が up
-されるのをどれくらいの期間待つべきかを 指定することができる。この場合、セマンティクスはもっと複雑になるため、 より詳細な情報を得るにはプログラマは
-\fBfutex\fP(2)  を参照すること。 同じページに非同期の futex 待ちについても記されている。
-.SH バージョン
-.PP
-最初の futex 対応は Linux 2.5.7 で組み込まれたが、 上記のセマンティクスとは異なる。 現在のセマンティクスは Linux
-2.5.40 以降で利用可能である。
-.SH 注意
-.PP
-再び繰り返しておくが、裸の futex はエンドユーザーが容易に使える概念として 意図されたものではない。
-実装者は、アセンブリ言語に慣れており、以下に挙げる futex ユーザー空間ライブラリの ソースを読み終えていることが要求される。
-.PP
-.\" .SH "AUTHORS"
-.\" .PP
-.\" Futexes were designed and worked on by Hubertus Franke
-.\" (IBM Thomas J. Watson Research Center),
-.\" Matthew Kirkwood, Ingo Molnar (Red Hat) and
-.\" Rusty Russell (IBM Linux Technology Center).
-.\" This page written by bert hubert.
-このマニュアルページには \fBfutex\fP(2)  プリミティブの最も一般的な使用法が 記されている。これは決して唯一の使用法ではない。
-.SH 関連項目
-\fBfutex\fP(2)
-
-\fIFuss, Futexes and Furwocks: Fast Userlevel Locking in Linux\fP (proceedings
-of the Ottawa Linux Symposium 2002), futex の使用例ライブラリ, futex\-*.tar.bz2
-.UR ftp://ftp.kernel.org\:/pub\:/linux\:/kernel\:/people\:/rusty/
-.UE .
-.SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部
-である。プロジェクトの説明とバグ報告に関する情報は
-http://www.kernel.org/doc/man\-pages/ に書かれている。