Solaris のシステム管理 (第 2 巻)

リアルタイムクラスのポリシー

SunOS 5.7 オペレーティングシステムは、タイムシェアリングポリシーだけでなくリアルタイムのスケジューリングポリシーを使用します。リアルタイムスケジューリングを使用すると、ユーザーはプロセスごとに固定優先順位を設定できるので、重要なプロセスを事前に決めておいた順序で実行できます。リアルタイムスケジューラは優先順位間でジョブを移動しません。リアルタイム優先順位は、ユーザーが (priocntl コマンドを使用して) 要求したときにのみ変化します。この固定優先順位ポリシーはタイムシェアリングポリシーと同じで、対話型の応答時間を短縮するためにシステムが優先順位を変更します。

リアルタイム優先順位が最上位のユーザープロセスは、他のプロセスの実行準備ができていても、実行できるようになると必ず CPU を取得します。リアルタイムプロセスにとってオペレーティングシステムからの応答時間が保証されるようなアプリケーションを作成できます。


注 -

リアルタイムプロセスの実行準備ができていると、プロセスやタイムシェアリングプロセスは実行されません。他のリアルタイムプロセスは、優先順位が上位の場合にのみ実行できます。リアルタイムプロセスを慎重に管理しないと、タイムシェアリングプロセスの性能に重大な悪影響を及ぼすことがあります。


リアルタイムポリシーは、デフォルトでは優先順位が高いプロセスに小さいタイムスライスを割り当てます。優先順位が高いプロセスは、外部イベントによって駆動されるリアルタイムプロセスに割り当てられます。オペレーティングシステムは、入出力に瞬間的に応答できなければなりません。優先順位の低いリアルタイムプロセスとは、より長い処理時間を必要とするプロセスです。優先順位の最も高いプロセスがタイムスライスを使い果たすと、そのプロセスを横取りできるような優先順位のより高いプロセスは存在しないので再び実行されます。

スケジューラは、リアルタイムパラメタテーブル rt_dptbl 内のパラメタを使用してリアルタイムプロセスを管理します。このテーブルには、リアルタイムクラスに固有の情報が入っています。このテーブルは、ディレクトリ /kernel/sched 内のロード可能モジュール RT_DPTBL から、コアメモリーに自動的にロードされます。