マルチスレッドのプログラミング

リアルタイムスケジューリング

リアルタイムクラス (RT) は、プロセス全体、または単一プロセス内の 1 つ以上の LWP に適用できます。リアルタイムクラスを使用するには、スーパーユーザー特権が必要です。

リアルタイムクラスの優先順位の標準の範囲は 0 - 59 です。リアルタイムクラス内の LWP のディスパッチ優先順位は、そのクラス優先順位プラス 100 に固定されています。

スケジューラは、もっとも高い優先順位を持つリアルタイムクラスの LWP をディスパッチします。もっとも優先順位の高いリアルタイム LWP は、優先順位の高い LWP が実行可能になると、優先順位の低いほうの LWP を横取りします。横取りされた LWP は、レベルキューの先頭に配置されます。

リアルタイム LWP は、LWP が横取りされたり、LWP が一時停止したり、リアルタイム優先順位が変更されたりしないかぎり、プロセッサを制御し続けます。リアルタイムクラスの LWP には、タイムシェアクラスのプロセスよりも絶対的に高い優先順位が与えられます。

新しく生成された LWP は、親プロセスまたは親 LWP のスケジューリングクラスを継承します。リアルタイムクラスの LWP は、親のタイムスライス (リソース割り当て時間) を有限または無限指定に関係なく継承します。

有限タイムスライスを指定された LWP が実行を停止するのは、LWP が終了するか、入出力イベントでブロックされるか、より優先順位の高い実行可能なリアルタイムプロセスによって横取りされるか、タイムスライスが期限切れになったときだけです。

無限タイムスライスを持つ LWP は、LWP が終了するか、ブロックされるか、または横取りされるまで実行されます。