OSDN Git Service

(split) LDP: Release pages with over 80% translations.
[linuxjm/LDP_man-pages.git] / release / man2 / sched_setscheduler.2
index 95debad..95343f6 100644 (file)
 .\"     added to the mainline kernel.
 .\" 2008-05-07, mtk; Rewrote and restructured various parts of the page to
 .\"     improve readability.
+.\" 2010-06-19, mtk, documented SCHED_RESET_ON_FORK
 .\"
 .\" Worth looking at: http://rt.wiki.kernel.org/index.php
 .\"
-.\" FIXME: 2.6.32 added SCHED_RESET_ON_FORK
+.\"*******************************************************************
 .\"
-.\" Japanese Version Copyright (c) 1996 Akira Yoshiyama
-.\"         all rights reserved.
-.\" Translated Thu Jul 11 01:42:52 JST 1996
-.\"         by Akira Yoshiyama <yosshy@jedi.seg.kobe-u.ac.jp>
-.\" Modified Sun Nov 21 19:36:18 JST 1999
-.\"         by HANATAKA Shinya <hanataka@abyss.rim.or.jp>
-.\" Updated Wed Jan  1 JST 2003 by Kentaro Shirakata <argrath@ub32.org>
-.\" Updated 2005-02-24, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
-.\" Updated & Modified 2005-10-10, Akihiro MOTOKI
-.\" Updated 2006-04-16, Akihiro MOTOKI, Catch up to LDP v2.28
-.\" Updated 2007-10-13, Akihiro MOTOKI, LDP v2.65
-.\" Updated 2008-08-13, Akihiro MOTOKI, LDP v3.05
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.\"WORD:       privileges              特権
-.\"WORD:       resource limit          リソース制限
-.\"WORD:       scheduling policy       スケジューリング・ポリシー
-.\"
-.TH SCHED_SETSCHEDULER 2 2008-11-06 "Linux" "Linux Programmer's Manual"
+.\"*******************************************************************
+.TH SCHED_SETSCHEDULER 2 2011\-09\-19 Linux "Linux Programmer's Manual"
 .SH 名前
-sched_setscheduler, sched_getscheduler \-
-スケジューリング・ポリシーとパラメータを設定/取得する
+sched_setscheduler, sched_getscheduler \- スケジューリング・ポリシーとパラメータを設定/取得する
 .SH 書式
 .nf
-.B #include <sched.h>
+\fB#include <sched.h>\fP
 .sp
-.BI "int sched_setscheduler(pid_t " pid ", int " policy ,
+\fBint sched_setscheduler(pid_t \fP\fIpid\fP\fB, int \fP\fIpolicy\fP\fB,\fP
 .br
-.BI "                       const struct sched_param *" param );
+\fB                       const struct sched_param *\fP\fIparam\fP\fB);\fP
 .sp
-.BI "int sched_getscheduler(pid_t " pid );
+\fBint sched_getscheduler(pid_t \fP\fIpid\fP\fB);\fP
 .sp
 \fBstruct sched_param {
     ...
-    int \fIsched_priority\fB;
+    int \fP\fIsched_priority\fP\fB;
     ...
-};
+};\fP
 .fi
 .SH 説明
-.BR sched_setscheduler ()
-は \fIpid\fP で指定された ID を持つプロセスのスケジューリング・ポリシーや
-それに関連するパラメータを設定する。\fIpid\fP が 0 の場合は
-呼び出したプロセスのスケジューリング・ポリシーとパラメータが設定される。
-引き数 \fIparam\fP の解釈は選択されたポリシーによる。
-現在のところ、Linux では
-以下に示す「通常」(リアルタイムでない) スケジューリング・ポリシーが
-サポートされている。
-.TP 14
-.BR SCHED_OTHER
+\fBsched_setscheduler\fP()  は \fIpid\fP で指定された ID を持つプロセスのスケジューリング・ポリシーや
+それに関連するパラメータを設定する。\fIpid\fP が 0 の場合は 呼び出したプロセスのスケジューリング・ポリシーとパラメータが設定される。 引き数
+\fIparam\fP の解釈は選択されたポリシーによる。 現在のところ、Linux では 以下に示す「通常」(リアルタイムでない)
+スケジューリング・ポリシーが サポートされている。
+.TP  14
+\fBSCHED_OTHER\fP
+.\" In the 2.6 kernel sources, SCHED_OTHER is actually called
+.\" SCHED_NORMAL.
 標準の、ラウンドロビンによる時分割型のスケジューリング・ポリシー。
-.\" 2.6 カーネルソースでは、SCHED_OTHER は実際には
-.\" SCHED_NORMAL と呼ばれている。
-.TP
-.BR SCHED_BATCH
+.TP 
+\fBSCHED_BATCH\fP
 「バッチ」形式でのプロセスの実行用。
-.TP
-.BR SCHED_IDLE
+.TP 
+\fBSCHED_IDLE\fP
 「非常に」低い優先度で動作するバックグラウンド・ジョブ用。
 .PP
-どの実行可能プロセスを選択するかについて、より正確な制御を必要とする
-時間の制約が厳しい特別なアプリケーション用として、
+どの実行可能プロセスを選択するかについて、より正確な制御を必要とする 時間の制約が厳しい特別なアプリケーション用として、
 以下の「リアルタイム」ポリシーもサポートされている。
-.TP 14
-.BR SCHED_FIFO
+.TP  14
+\fBSCHED_FIFO\fP
 ファーストイン、ファーストアウト型のポリシー。
-.TP
-.BR SCHED_RR
+.TP 
+\fBSCHED_RR\fP
 ラウンドロビン型のポリシー。
 .PP
 これらのポリシーのそれぞれの動作については以下で説明する。
 
-.BR sched_getscheduler ()
-は \fIpid\fP で識別されるプロセスに現在適用されている
-スケジューリング・ポリシーを尋ねる。\fIpid\fP が 0 ならば、呼び出した
-プロセス自身のスケジューリング・ポリシーが返される。
 .\"
-.SS スケジューリング・ポリシー (scheduling policy)
-スケジューラ (scheduler) とはカーネルの構成要素で、
-次に CPU で実行される実行可能なプロセスを決定するものである。
-各々のプロセスには、スケジューリング・ポリシーと
-「静的」なスケジューリング優先度 \fIsched_priority\fP が対応付けられ、
-これらの設定は
-.BR sched_setscheduler ()
-で変更できる。
-スケジューラは、システム上の全プロセスのスケジューリング・ポリシーと
+\fBsched_getscheduler\fP()  は \fIpid\fP で識別されるプロセスに現在適用されている
+スケジューリング・ポリシーを尋ねる。\fIpid\fP が 0 ならば、呼び出した プロセス自身のスケジューリング・ポリシーが返される。
+.SS "スケジューリング・ポリシー (scheduling policy)"
+スケジューラ (scheduler) とはカーネルの構成要素で、 次に CPU で実行される実行可能なプロセスを決定するものである。
+各々のプロセスには、スケジューリング・ポリシーと 「静的」なスケジューリング優先度 \fIsched_priority\fP が対応付けられ、 これらの設定は
+\fBsched_setscheduler\fP()  で変更できる。 スケジューラは、システム上の全プロセスのスケジューリング・ポリシーと
 静的優先度に関する知識に基づいて決定を行う。
 
-通常のスケジューリング・ポリシー
-(\fBSCHED_OTHER\fP, \fBSCHED_IDLE\fP, \fBSCHED_BATCH\fP)
-の下でスケジューリングされるプロセスでは、
-\fIsched_priority\fP はスケジューリングの決定に使用されない
+通常のスケジューリング・ポリシー (\fBSCHED_OTHER\fP, \fBSCHED_IDLE\fP, \fBSCHED_BATCH\fP)
+の下でスケジューリングされるプロセスでは、 \fIsched_priority\fP はスケジューリングの決定に使用されない
 (\fIsched_priority\fP には 0 を指定しなければならない)。
 
-リアルタイム・スケジューリング・ポリシー (\fBSCHED_FIFO\fP, \fBSCHED_RR\fP)
-の下でスケジューリングされるプロセスは、
+リアルタイム・スケジューリング・ポリシー (\fBSCHED_FIFO\fP, \fBSCHED_RR\fP)  の下でスケジューリングされるプロセスは、
 \fIsched_priority\fP の値は 1 (最低) から 99 (最高) の範囲となる
-(数字から分かるように、リアルタイム・プロセスは常に通常のプロセスよりも
-高い優先度を持つ)。
-ここで注意すべきなのは、POSIX.1-2001 が要求しているのは、
-リアルタイム・ポリシーの実装において最低 32 種類の異なる優先度レベルが
-サポートされることだけであり、いくつかのシステムではこの最低限の数の
-優先度しか提供されていない、ということである。
-移植性が必要なプログラムでは、
-.BR sched_get_priority_min (2)
-と
-.BR sched_get_priority_max (2)
+(数字から分かるように、リアルタイム・プロセスは常に通常のプロセスよりも 高い優先度を持つ)。 ここで注意すべきなのは、POSIX.1\-2001
+が要求しているのは、 リアルタイム・ポリシーの実装において最低 32 種類の異なる優先度レベルが
+サポートされることだけであり、いくつかのシステムではこの最低限の数の 優先度しか提供されていない、ということである。 移植性が必要なプログラムでは、
+\fBsched_get_priority_min\fP(2)  と \fBsched_get_priority_max\fP(2)
 を使って、あるポリシーがサポートする優先度の範囲を調べるべきである。
 
-概念としては、
-スケジューラはその \fIsched_priority\fP の値それぞれに対して
-実行可能なプロセスのリストを管理している。
-どのプロセスを次に実行するかを決定するために、
-スケジューラは静的優先度の最も高い空でないリストを探して、
-そのリストの先頭のプロセスを選択する。
+概念としては、 スケジューラはその \fIsched_priority\fP の値それぞれに対して 実行可能なプロセスのリストを管理している。
+どのプロセスを次に実行するかを決定するために、 スケジューラは静的優先度の最も高い空でないリストを探して、 そのリストの先頭のプロセスを選択する。
 
-各プロセスのスケジューリング・ポリシーは、
-そのプロセスが同じ静的優先度を持つプロセスのリストの中のどこに挿入され、
+各プロセスのスケジューリング・ポリシーは、 そのプロセスが同じ静的優先度を持つプロセスのリストの中のどこに挿入され、
 このリストの中をどのように移動するかを決定する。
 
-全てのスケジューリングはプリエンプティブ (preemptive) である:
-より高い優先度のプロセスが実行可能になると、現在実行中のプロセスは実行権を
-取り上げられ (preempted)、そのプロセスの静的優先度レベルの待ちリストに
-戻される。スケジューリング・ポリシーは同じ静的優先度を持つ実行可能な
+全てのスケジューリングはプリエンプティブ (preemptive) である: より高い優先度のプロセスが実行可能になると、現在実行中のプロセスは実行権を
+取り上げられ (preempted)、そのプロセスの静的優先度レベルの待ちリストに 戻される。スケジューリング・ポリシーは同じ静的優先度を持つ実行可能な
 プロセスのリストの中で順番のみを決定する。
-.SS SCHED_FIFO: ファーストイン・ファーストアウト・スケジューリング
-\fBSCHED_FIFO\fP は 0 より大きな静的優先度でのみ使用できる。このポリシーでは、
-\fBSCHED_FIFO\fP プロセスが実行可能になった場合、
-そのポリシーが \fBSCHED_OTHER\fP、 \fBSCHED_BATCH\fP、 \fBSCHED_IDLE\fP の
-現在実行中のプロセスは直ちに実行権を取り上げられる。
-\fBSCHED_FIFO\fP は時分割のない単純なスケジューリング・アルゴリズムである。
-\fBSCHED_FIFO\fP ポリシーでスケジューリングされているプロセスには以下の
-ルールが適用される:
+.SS "SCHED_FIFO: ファーストイン・ファーストアウト・スケジューリング"
+\fBSCHED_FIFO\fP は 0 より大きな静的優先度でのみ使用できる。このポリシーでは、 \fBSCHED_FIFO\fP
+プロセスが実行可能になった場合、 そのポリシーが \fBSCHED_OTHER\fP、 \fBSCHED_BATCH\fP、 \fBSCHED_IDLE\fP の
+現在実行中のプロセスは直ちに実行権を取り上げられる。 \fBSCHED_FIFO\fP は時分割のない単純なスケジューリング・アルゴリズムである。
+\fBSCHED_FIFO\fP ポリシーでスケジューリングされているプロセスには以下の ルールが適用される:
 .IP * 3
-より高い優先度の他のプロセスによって取って代わられた
-\fBSCHED_FIFO\fP プロセスはその優先度のリストの先頭に留まり続け、
+より高い優先度の他のプロセスによって取って代わられた \fBSCHED_FIFO\fP プロセスはその優先度のリストの先頭に留まり続け、
 より高い優先度のプロセス全てが停止 (block) した場合に実行を再開する。
 .IP *
-\fBSCHED_FIFO\fP プロセスが実行可能になった時、その優先度のリストの最後
-に挿入される。
+\fBSCHED_FIFO\fP プロセスが実行可能になった時、その優先度のリストの最後 に挿入される。
 .IP *
-.BR sched_setscheduler ()
-や
-.BR sched_setparam (2)
-は
-\fIpid\fP で指定された \fBSCHED_FIFO\fP (または \fBSCHED_RR\fP) プロセスが
-実行可能な場合、リストの最初に置く。
-結果として、もし優先度が同じだった場合、
-現在実行中のプロセスに先んじるかもしれない。
-(POSIX.1-2001 ではプロセスはリストの最後に行くべきと規定されている。)
 .\" In 2.2.x and 2.4.x, the process is placed at the front of the queue
 .\" In 2.0.x, the Right Thing happened: the process went to the back -- MTK
+\fBsched_setscheduler\fP()  や \fBsched_setparam\fP(2)  は \fIpid\fP で指定された
+\fBSCHED_FIFO\fP (または \fBSCHED_RR\fP) プロセスが 実行可能な場合、リストの最初に置く。
+結果として、もし優先度が同じだった場合、 現在実行中のプロセスに先んじるかもしれない。 (POSIX.1\-2001
+ではプロセスはリストの最後に行くべきと規定されている。)
 .IP *
-.BR sched_yield (2)
-を呼び出したプロセスはリストの最後に置かれる。
+\fBsched_yield\fP(2)  を呼び出したプロセスはリストの最後に置かれる。
 .PP
-その他のイベントによって \fBSCHED_FIFO\fP ポリシーで
-スケジューリングされるプロセスが同じ優先度の実行可能な
+その他のイベントによって \fBSCHED_FIFO\fP ポリシーで スケジューリングされるプロセスが同じ優先度の実行可能な
 プロセスの待ちリストの中を移動することはない。
 
-\fBSCHED_FIFO\fP プロセスは I/O 要求によって停止するか、
-より高い優先度のプロセスによって置きかえられるか、
-.BR sched_yield (2)
-を呼び出すまで実行を続ける。
-.SS SCHED_RR: ラウンド・ロビン (round robin) ・スケジューリング
-\fBSCHED_RR\fP は \fBSCHED_FIFO\fP の単純な拡張である。
-上述された \fBSCHED_FIFO\fP に関する記述は全て \fBSCHED_RR\fP に
-適用できる。異なるのはそれぞれのプロセスは最大時間単位までしか実行できない
-ということである。\fBSCHED_RR\fP プロセスが時間単位と同じかそれより
-長い時間実行されると、その優先度のリストの最後に置かれる。
-より高い優先度のプロセスによって置きかえられ、その後実行を再開した
-\fBSCHED_RR\fP プロセスは、そのラウンド・ロビン時間単位を完全に使い切る
-まで実行される。その時間単位の長さは
-.BR sched_rr_get_interval (2)
-を使って取得できる。
+\fBSCHED_FIFO\fP プロセスは I/O 要求によって停止するか、 より高い優先度のプロセスによって置きかえられるか、
+\fBsched_yield\fP(2)  を呼び出すまで実行を続ける。
+.SS "SCHED_RR: ラウンドロビン (round robin) ・スケジューリング"
 .\" On Linux 2.4, the length of the RR interval is influenced
 .\" by the process nice value -- MTK
 .\"
-.SS SCHED_OTHER: Linux のデフォルトの時分割スケジューリング
-\fBSCHED_OTHER\fP は静的優先度 0 でのみ使用できる。
-\fBSCHED_OTHER\fP は Linux 標準の時分割スケジューラで、
-特別なリアルタイム機構を必要としていない全てのプロセスで使用される。
-実行するプロセスは、静的優先度 0 のリストから、このリストの中だけで
-決定される「動的な」優先度 (dynamic priority) に基いて決定される。
-動的な優先度は
-.RB ( nice (2)
-や
-.BR setpriority (2)
-により設定される) nice 値に基づいて決定されるもので、
-単位時間毎に、プロセスが実行可能だが、スケジューラにより実行が拒否された
-場合にインクリメントされる。
-これにより、全ての \fBSCHED_OTHER\fP プロセスでの公平性が保証される。
+\fBSCHED_RR\fP は \fBSCHED_FIFO\fP の単純な拡張である。 上述された
+\fBSCHED_FIFO\fP に関する記述は全て \fBSCHED_RR\fP に 適用できる。異なるのは
+それぞれのプロセスは最大時間単位までしか実行できない ということである。
+\fBSCHED_RR\fP プロセスが時間単位と同じかそれより 長い時間実行されると、
+その優先度のリストの最後に置かれる。 より高い優先度のプロセスによって
+置きかえられ、その後実行を再開した \fBSCHED_RR\fP プロセスは、そのラウンド
+ロビン時間単位を完全に使い切る まで実行される。その時間単位の長さは
+\fBsched_rr_get_interval\fP(2) を使って取得できる。
+.SS "SCHED_OTHER: Linux のデフォルトの時分割スケジューリング"
 .\"
-.SS SCHED_BATCH: バッチプロセスのスケジューリング
-(Linux 2.6.16 以降)
-\fBSCHED_BATCH\fP は静的優先度 0 でのみ使用できる。
-このポリシーは (nice 値に基づく) 動的な優先度にしたがってプロセスの
-スケジューリングが行われるという点で、\fBSCHED_OTHER\fP に似ている。
-異なるのは、このポリシーでは、プロセスが常に CPU に負荷のかかる (CPU-intensive)
-処理を行うと、スケジューラが仮定する点である。
-スケジューラはプロセスを呼び起こす毎にそのプロセスにスケジューリング上の
-ペナルティを少し課し、その結果、このプロセスはスケジューリングの決定で
+\fBSCHED_OTHER\fP は静的優先度 0 でのみ使用できる。 \fBSCHED_OTHER\fP は Linux 標準の時分割スケジューラで、
+特別なリアルタイム機構を必要としていない全てのプロセスで使用される。 実行するプロセスは、静的優先度 0 のリストから、このリストの中だけで
+決定される「動的な」優先度 (dynamic priority) に基いて決定される。 動的な優先度は (\fBnice\fP(2)  や
+\fBsetpriority\fP(2)  により設定される) nice 値に基づいて決定されるもので、
+単位時間毎に、プロセスが実行可能だが、スケジューラにより実行が拒否された 場合にインクリメントされる。 これにより、全ての \fBSCHED_OTHER\fP
+プロセスでの公平性が保証される。
+.SS "SCHED_BATCH: バッチプロセスのスケジューリング"
+(Linux 2.6.16 以降)  \fBSCHED_BATCH\fP は静的優先度 0 でのみ使用できる。 このポリシーは (nice 値に基づく)
+動的な優先度にしたがってプロセスの スケジューリングが行われるという点で、\fBSCHED_OTHER\fP に似ている。
+異なるのは、このポリシーでは、プロセスが常に CPU に負荷のかかる (CPU\-intensive)  処理を行うと、スケジューラが仮定する点である。
+スケジューラはプロセスを呼び起こす毎にそのプロセスにスケジューリング上の ペナルティを少し課し、その結果、このプロセスはスケジューリングの決定で
 若干冷遇されるようになる。
 
 .\" The following paragraph is drawn largely from the text that
 .\" accompanied Ingo Molnar's patch for the implementation of
 .\" SCHED_BATCH.
-このポリシーは、非対話的な処理だがその nice 値を下げたくない処理や、
-(処理のタスク間で) 余計なタスクの置き換えの原因とある対話的な処理なしで
-確定的な (deterministic) スケジューリング・ポリシーを適用したい処理に
-対して有効である。
 .\"
-.SS SCHED_IDLE: 非常に優先度の低いジョブのスケジューリング
-(Linux 2.6.23 以降)
-\fBSCHED_IDLE\fP は静的優先度 0 でのみ使用できる。
-このポリシーではプロセスの nice 値はスケジューリングに影響を与えない。
+このポリシーは、非対話的な処理だがその nice 値を下げたくない処理や、 (処理のタスク間で) 余計なタスクの置き換えの原因とある対話的な処理なしで
+確定的な (deterministic) スケジューリング・ポリシーを適用したい処理に 対して有効である。
+.SS "SCHED_IDLE: 非常に優先度の低いジョブのスケジューリング"
+(Linux 2.6.23 以降)  \fBSCHED_IDLE\fP は静的優先度 0 でのみ使用できる。 このポリシーではプロセスの nice
+値はスケジューリングに影響を与えない。
 
-非常に低い優先度でのジョブの実行を目的としたものである
-(非常に低い優先度とは、ポリシー
-.B SCHED_OTHER
-か
-.B SCHED_BATCH
+.\"
+非常に低い優先度でのジョブの実行を目的としたものである (非常に低い優先度とは、ポリシー \fBSCHED_OTHER\fP か \fBSCHED_BATCH\fP
 での nice 値 +19 よりさらに低い優先度である)。
+.SS "Resetting scheduling policy for child processes"
+Since Linux 2.6.32, the \fBSCHED_RESET_ON_FORK\fP flag can be ORed in \fIpolicy\fP
+when calling \fBsched_setscheduler\fP().  As a result of including this flag,
+children created by \fBfork\fP(2)  do not inherit privileged scheduling
+policies.  This feature is intended for media\-playback applications, and can
+be used to prevent applications evading the \fBRLIMIT_RTTIME\fP resource limit
+(see \fBgetrlimit\fP(2))  by creating multiple child processes.
+
+More precisely, if the \fBSCHED_RESET_ON_FORK\fP flag is specified, the
+following rules apply for subsequently created children:
+.IP * 3
+If the calling process has a scheduling policy of \fBSCHED_FIFO\fP or
+\fBSCHED_RR\fP, the policy is reset to \fBSCHED_OTHER\fP in child processes.
+.IP *
+If the calling process has a negative nice value, the nice value is reset to
+zero in child processes.
+.PP
+After the \fBSCHED_RESET_ON_FORK\fP flag has been enabled, it can only be reset
+if the process has the \fBCAP_SYS_NICE\fP capability.  This flag is disabled in
+child processes created by \fBfork\fP(2).
+
 .\"
+The \fBSCHED_RESET_ON_FORK\fP flag is visible in the policy value returned by
+\fBsched_getscheduler\fP()
 .SS 特権とリソース制限
-2.6.12 より前のバージョンの Linux カーネルでは、
-特権プロセス
-.RB ( CAP_SYS_NICE
-ケーパビリティを持つプロセス) だけが 0 以外の静的優先度を設定する
-(すなわち、リアルタイム・スケジューリング・ポリシーを設定する) ことができる。
-非特権プロセスができる変更は
-.B SCHED_OTHER
-ポリシーを設定することだけであり、さらにこの変更を行えるのは
-.BR sched_setscheduler ()
-の呼び出し元の実効ユーザ ID がポリシーの変更対象プロセス
-.RI ( pid
-で指定されたプロセス) の実ユーザ ID か実効ユーザ ID と
+2.6.12 より前のバージョンの Linux カーネルでは、 特権プロセス (\fBCAP_SYS_NICE\fP ケーパビリティを持つプロセス) だけが
+0 以外の静的優先度を設定する (すなわち、リアルタイム・スケジューリング・ポリシーを設定する) ことができる。 非特権プロセスができる変更は
+\fBSCHED_OTHER\fP ポリシーを設定することだけであり、さらにこの変更を行えるのは \fBsched_setscheduler\fP()
+の呼び出し元の実効ユーザ ID がポリシーの変更対象プロセス (\fIpid\fP で指定されたプロセス) の実ユーザ ID か実効ユーザ ID と
 一致する場合だけである。
 
-Linux 2.6.12 以降では、リソース制限
-.B RLIMIT_RTPRIO
-が定義されており、
-スケジューリング・ポリシーが
-.B SCHED_RR
-と
-.B SCHED_FIFO
-の場合の、非特権プロセスの静的優先度の上限を定めている。
+Linux 2.6.12 以降では、リソース制限 \fBRLIMIT_RTPRIO\fP が定義されており、 スケジューリング・ポリシーが
+\fBSCHED_RR\fP と \fBSCHED_FIFO\fP の場合の、非特権プロセスの静的優先度の上限を定めている。
 スケジューリング・ポリシーと優先度を変更する際のルールは以下の通りである。
-.IP * 2
-非特権プロセスに 0 以外の
-.B RLIMIT_RTPRIO
-ソフト・リミットが設定されている場合、
-非特権プロセスはそのプロセスのスケジューリング・ポリシーと優先度を
-変更できるが、優先度を現在の自身の優先度と
-.B RLIMIT_RTPRIO
+.IP * 3
+非特権プロセスに 0 以外の \fBRLIMIT_RTPRIO\fP ソフト・リミットが設定されている場合、
+非特権プロセスはそのプロセスのスケジューリング・ポリシーと優先度を 変更できるが、優先度を現在の自身の優先度と \fBRLIMIT_RTPRIO\fP
 ソフト・リミットの大きい方よりも高い値に設定できないという制限が課される。
 .IP *
-.B RLIMIT_RTPRIO
-ソフト・リミットが 0 の場合、優先度を下げるか、
-リアルタイムでないポリシーへ切り替えるかの変更だけが許可される。
+\fBRLIMIT_RTPRIO\fP ソフト・リミットが 0 の場合、優先度を下げるか、 リアルタイムでないポリシーへ切り替えるかの変更だけが許可される。
 .IP *
-ある非特権プロセスが別のプロセスに対してこれらの変更を行う際にも、
-同じルールが適用される。変更を行えるのは、変更を行おうとするプロセス
-の実効ユーザ ID が変更対象のプロセスの実ユーザ ID か実効ユーザ ID と
-一致している場合に限られる。
+ある非特権プロセスが別のプロセスに対してこれらの変更を行う際にも、 同じルールが適用される。変更を行えるのは、変更を行おうとするプロセス の実効ユーザ
+ID が変更対象のプロセスの実ユーザ ID か実効ユーザ ID と 一致している場合に限られる。
 .IP *
-.B SCHED_IDLE
-には特別なルールが適用され、
-このポリシーの下で動作する非特権プロセスは、リソース制限
-.B RLIMIT_RTPRIO
-の値にかかわらず自身のポリシーを変更することができない。
+.\" commit c02aa73b1d18e43cfd79c2f193b225e84ca497c8
+Special rules apply for the \fBSCHED_IDLE\fP.  In Linux kernels before 2.6.39,
+an unprivileged process operating under this policy cannot change its
+policy, regardless of the value of its \fBRLIMIT_RTPRIO\fP resource limit.  In
+Linux kernels since 2.6.39, an unprivileged process can switch to either the
+\fBSCHED_BATCH\fP or the \fBSCHED_NORMAL\fP policy so long as its nice value falls
+within the range permitted by its \fBRLIMIT_NICE\fP resource limit (see
+\fBgetrlimit\fP(2)).
 .PP
-特権プロセス
-.RB ( CAP_SYS_NICE
-ケーパビリティを持つプロセス) の場合、
-.B RLIMIT_RTPRIO
-の制限は無視される;
-古いカーネルと同じように、スケジューリング・ポリシーと優先度に対し
-任意の変更を行うことができる。
-.B RLIMIT_RTPRIO
-に関するもっと詳しい情報は
-.BR getrlimit (2)
-を参照のこと。
-.SS 応答時間 (response time)
-I/O 待ちで停止したより高い優先度のプロセスは再びスケジューリングされる
-前にいくらかの応答時間がかかる。デバイス・ドライバーを書く場合には
-.\" .BR request_irq (9)
-.\" に記述されている
-"slow interrupt" 割り込みハンドラーを使用することで
-この応答時間を劇的に減少させることができる。
+特権プロセス (\fBCAP_SYS_NICE\fP ケーパビリティを持つプロセス) の場合、 \fBRLIMIT_RTPRIO\fP の制限は無視される;
+古いカーネルと同じように、スケジューリング・ポリシーと優先度に対し 任意の変更を行うことができる。 \fBRLIMIT_RTPRIO\fP
+に関するもっと詳しい情報は \fBgetrlimit\fP(2)  を参照のこと。
+.SS "応答時間 (response time)"
+.\" as described in
+.\" .BR request_irq (9).
+I/O 待ちで停止したより高い優先度のプロセスは再びスケジューリングされる 前にいくらかの応答時間がかかる。デバイス・ドライバーを書く場合には
+"slow interrupt" 割り込みハンドラーを使用することで この応答時間を劇的に減少させることができる。
 .SS その他
-子プロセスは
-.BR fork (2)
-の際に親プロセスのスケジューリング・ポリシーとパラメータを継承する。
-.BR execve (2)
+子プロセスは \fBfork\fP(2)  の際に親プロセスのスケジューリング・ポリシーとパラメータを継承する。 \fBexecve\fP(2)
 の前後で、スケジューリング・ポリシーとパラメータは保持される。
 
-リアルタイム・プロセスは大抵、ページングの待ち時間を避けるために
-.BR mlock (2)
-や
-.BR mlockall (2)
+リアルタイム・プロセスは大抵、ページングの待ち時間を避けるために \fBmlock\fP(2)  や \fBmlockall\fP(2)
 を使ってメモリ・ロックをしなければならない。
 
-\fBSCHED_FIFO\fP や \fBSCHED_RR\fP でスケジューリングされる
-プロセスが停止せずに無限ループに陥ると、
-他の全てのより低い優先度のプロセスを永久に停止 (block) させてしまうので、
-ソフトウェア開発者はコンソールのシェルの静的優先度をテストする
-アプリケーションよりも常に高く保つべきである。
-これによって期待通りに停止したり終了したりしないリアルタイム・
-アプリケーションを緊急終了させることが可能になる。
-.BR getrlimit (2)
-のリソース制限
-.B RLIMIT_RTTIME
+\fBSCHED_FIFO\fP や \fBSCHED_RR\fP でスケジューリングされる プロセスが停止せずに無限ループに陥ると、
+他の全てのより低い優先度のプロセスを永久に停止 (block) させてしまうので、 ソフトウェア開発者はコンソールのシェルの静的優先度をテストする
+アプリケーションよりも常に高く保つべきである。 これによって期待通りに停止したり終了したりしないリアルタイム・
+アプリケーションを緊急終了させることが可能になる。 \fBgetrlimit\fP(2)  のリソース制限 \fBRLIMIT_RTTIME\fP
 の説明も参照のこと。
 
-POSIX システムでは \fI<unistd.h>\fP に
-.B _POSIX_PRIORITY_SCHEDULING
-が定義されている場合にのみ
-.BR sched_setscheduler ()
-と
-.BR sched_getscheduler ()
-が使用できる。
+POSIX システムでは \fI<unistd.h>\fP に \fB_POSIX_PRIORITY_SCHEDULING\fP
+が定義されている場合にのみ \fBsched_setscheduler\fP()  と \fBsched_getscheduler\fP()  が使用できる。
 .SH 返り値
-成功した場合、
-.BR sched_setscheduler ()
-は 0 を返す。
-成功した場合、
-.BR sched_getscheduler ()
-は現在のそのプロセスのポリシー (非負の整数) を返す。
-エラーの場合、\-1 が返され、
-.I errno
-が適切に設定される。
+成功した場合、 \fBsched_setscheduler\fP()  は 0 を返す。 成功した場合、 \fBsched_getscheduler\fP()
+は現在のそのプロセスのポリシー (非負の整数) を返す。 エラーの場合、\-1 が返され、 \fIerrno\fP が適切に設定される。
 .SH エラー
-.TP
-.B EINVAL
-スケジューリング・ポリシー \fIpolicy\fP が間違っているか、
-\fIparam\fP がそのポリシーでは意味をなさない。
-.TP
-.B EPERM
+.TP 
+\fBEINVAL\fP
+スケジューリング・ポリシー \fIpolicy\fP が間違っている。
+または \fIparam\fP が NULL である。
+または \fIparam\fP がそのポリシーでは意味をなさない。
+.TP 
+\fBEPERM\fP
 呼び出したプロセスが適切な特権を持っていない。
-.TP
-.B ESRCH
-IDが \fIpid\fP のプロセスが見つからない
+.TP 
+\fBESRCH\fP
+プロセス ID \fIpid\fP のプロセスが見つからなかった
 .SH 準拠
-POSIX.1-2001 (但し、下記のバグの節も参照)。
-\fBSCHED_BATCH\fP と \fBSCHED_IDLE\fP ポリシーは Linux 固有である。
+POSIX.1\-2001 (但し、下記のバグの節も参照)。 \fBSCHED_BATCH\fP と \fBSCHED_IDLE\fP ポリシーは Linux
+固有である。
 .SH 注意
-POSIX.1 は、非特権プロセスが
-.BR sched_setscheduler ()
-を呼び出すために必要な権限の詳細を規定しておらず、
-詳細はシステムにより異なる。
-例えば、Solaris 7 のマニュアルページでは、
-呼び出し元プロセスの実ユーザ ID または実効ユーザ ID が
-設定対象のプロセスの実ユーザ ID か保存 (save) set-user-ID と
-一致していなければならない、となっている。
+POSIX.1 は、非特権プロセスが \fBsched_setscheduler\fP()  を呼び出すために必要な権限の詳細を規定しておらず、
+詳細はシステムにより異なる。 例えば、Solaris 7 のマニュアルページでは、 呼び出し元プロセスの実ユーザ ID または実効ユーザ ID が
+設定対象のプロセスの実ユーザ ID か保存 (save) set\-user\-ID と 一致していなければならない、となっている。
 .PP
-もともとは、標準の Linux は一般目的のオペレーティングシステムとして
-設計されており、バックグラウンド・プロセスや対話的アプリケーション、
-リアルタイム性の要求が厳しくないリアルタイム・アプリケーション
-(普通はタイミングの応答期限 (deadline) を満たす必要があるアプリケーション)
-を扱うことができた。
-Linux カーネル 2.6 では、
-カーネルのプリエンプション (タスクの置き換え) が可能であり、
-新たに導入された O(1) スケジューラにより、
-アクティブなタスクの数に関わらずスケジューリングに必要な時間は
-固定で確定的 (deterministic) であることが保証されている。
-それにも関わらず、カーネル 2.6.17 までは
-真のリアルタイム・コンピューティングは実現できなかった。
-.SS 本流の Linux カーネルでのリアルタイム機能
+もともとは、標準の Linux は一般目的のオペレーティングシステムとして 設計されており、バックグラウンド・プロセスや対話的アプリケーション、
+リアルタイム性の要求が厳しくないリアルタイム・アプリケーション (普通はタイミングの応答期限 (deadline) を満たす必要があるアプリケーション)
+を扱うことができた。 Linux カーネル 2.6 では、 カーネルのプリエンプション (タスクの置き換え) が可能であり、 新たに導入された O(1)
+スケジューラにより、 アクティブなタスクの数に関わらずスケジューリングに必要な時間は 固定で確定的 (deterministic)
+であることが保証されている。 それにも関わらず、カーネル 2.6.17 までは 真のリアルタイム・コンピューティングは実現できなかった。
+.SS "本流の Linux カーネルでのリアルタイム機能"
 .\" FIXME . Probably this text will need some minor tweaking
 .\" by about the time of 2.6.30; ask Carsten Emde about this then.
-カーネル 2.6.18 から現在まで、
-Linux は徐々にリアルタイム機能を備えつつあるが、
-これらの機能のほとんどは、
-Ingo Molnar, Thomas Gleixner, Steven Rostedt らによって開発された、
-以前の
-.I realtime-preempt
-パッチからのものである。
-これらのパッチが本流のカーネルに完全にマージされるまでは
-(マージの完了はカーネル 2.6.30 あたりの予定)、
-最高のリアルタイム性能を達成するには realtime-preempt パッチを
-組み込まなければならない。
+カーネル 2.6.18 から現在まで、 Linux は徐々にリアルタイム機能を備えつつ
+あるが、 これらの機能のほとんどは、 Ingo Molnar, Thomas Gleixner,
+Steven Rostedt らによって開発された、 以前の \fIrealtime\-preempt\fP パッチ
+からのものである。 これらのパッチが本流のカーネルに完全にマージされるま
+では (マージの完了はカーネル 2.6.30 あたりの予定)、 最高のリアルタイム
+性能を達成するには realtime\-preempt パッチを 組み込まなければならない。
 これらのパッチは
 .in +4n
 .nf
 
-patch-\fIkernelversion\fP-rt\fIpatchversion\fP
+patch\-\fIkernelversion\fP\-rt\fIpatchversion\fP
 .fi
 .in
-という名前で、
-.I http://www.kernel.org/pub/linux/kernel/projects/rt/
-からダウンロードできる。
+.PP
+という名前で、 \fIhttp://www.kernel.org/pub/linux/kernel/projects/rt/\fP からダウンロードできる。
 
-このパッチが適用されず、かつパッチの内容の本流のカーネルへのマージが
-完了するまでは、カーネルの設定では
-.BR CONFIG_PREEMPT_NONE ,
-.BR CONFIG_PREEMPT_VOLUNTARY ,
-.B CONFIG_PREEMPT_DESKTOP
-の 3つのプリエンプション・クラス (preemption class) だけが提供される。
-これらのクラスでは、最悪の場合のスケジューリング遅延がそれぞれ
+このパッチが適用されず、かつパッチの内容の本流のカーネルへのマージが 完了するまでは、カーネルの設定では \fBCONFIG_PREEMPT_NONE\fP,
+\fBCONFIG_PREEMPT_VOLUNTARY\fP, \fBCONFIG_PREEMPT_DESKTOP\fP の 3つのプリエンプション・クラス
+(preemption class) だけが提供される。 これらのクラスでは、最悪の場合のスケジューリング遅延がそれぞれ
 全く減らない、いくらか減る、かなり減る。
 
-パッチが適用された場合、またはパッチの内容の本流のカーネルへのマージが
-完了した後では、上記に加えて設定項目として
-.B CONFIG_PREEMPT_RT
-が利用可能になる。この項目を選択すると、
-Linux は通常のリアルタイム・オペレーティングシステムに変身する。
-この場合には、
-.BR sched_setscheduler ()
-で選択できる FIFO と RR のスケジューリング・ポリシーは、
-真のリアルタイム優先度を持つプロセスを最悪の場合のスケジューリング遅延が
+パッチが適用された場合、またはパッチの内容の本流のカーネルへのマージが 完了した後では、上記に加えて設定項目として
+\fBCONFIG_PREEMPT_RT\fP が利用可能になる。この項目を選択すると、 Linux
+は通常のリアルタイム・オペレーティングシステムに変身する。 この場合には、 \fBsched_setscheduler\fP()  で選択できる FIFO と
+RR のスケジューリング・ポリシーは、 真のリアルタイム優先度を持つプロセスを最悪の場合のスケジューリング遅延が
 最小となる環境で動作させるために使われることになる。
 .SH バグ
-POSIX では、成功時に
-.BR sched_setscheduler ()
-は直前のスケジューリング・ポリシーを返すべきとされている。
-Linux の
-.BR sched_setscheduler ()
-はこの要求仕様に準拠しておらず、
-成功時には常に 0 を返す。
+POSIX では、成功時に \fBsched_setscheduler\fP()  は直前のスケジューリング・ポリシーを返すべきとされている。 Linux の
+\fBsched_setscheduler\fP()  はこの要求仕様に準拠しておらず、 成功時には常に 0 を返す。
 .SH 関連項目
-.BR getpriority (2),
-.BR mlock (2),
-.BR mlockall (2),
-.BR munlock (2),
-.BR munlockall (2),
-.BR nice (2),
-.BR sched_get_priority_max (2),
-.BR sched_get_priority_min (2),
-.BR sched_getaffinity (2),
-.BR sched_getparam (2),
-.BR sched_rr_get_interval (2),
-.BR sched_setaffinity (2),
-.BR sched_setparam (2),
-.BR sched_yield (2),
-.BR setpriority (2),
-.BR capabilities (7),
-.BR cpuset (7)
+\fBgetpriority\fP(2), \fBmlock\fP(2), \fBmlockall\fP(2), \fBmunlock\fP(2),
+\fBmunlockall\fP(2), \fBnice\fP(2), \fBsched_get_priority_max\fP(2),
+\fBsched_get_priority_min\fP(2), \fBsched_getaffinity\fP(2), \fBsched_getparam\fP(2),
+\fBsched_rr_get_interval\fP(2), \fBsched_setaffinity\fP(2), \fBsched_setparam\fP(2),
+\fBsched_yield\fP(2), \fBsetpriority\fP(2), \fBcapabilities\fP(7), \fBcpuset\fP(7)
 .PP
-.I Programming for the real world \- POSIX.4
-by Bill O. Gallmeister, O'Reilly & Associates, Inc., ISBN 1-56592-074-0
+\fIProgramming for the real world \- POSIX.4\fP by Bill O. Gallmeister, O'Reilly
+& Associates, Inc., ISBN 1\-56592\-074\-0
 .PP
-カーネル・ソース内のファイル
-.I Documentation/scheduler/sched-rt-group.txt
-(カーネル 2.6.25 以降)
+カーネル・ソース内のファイル \fIDocumentation/scheduler/sched\-rt\-group.txt\fP (カーネル 2.6.25
+以降)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.40 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。