RT には config_rt_dptbl、TS には config_ts_dptbl というように、各スケジューリングクラスにはパラメタテーブルが関連づけられています。これらのテーブルは、起動時にロード可能なモジュールを使用するか、実行中に dispadmin(1M) を使用して設定できます。
実時間のための中心となるテーブルで、RT スケジューリングの設定項目を指定します。config_rt_dptbl 構造体は、パラメタ配列の struct_rt_dpent 構造体から成り、これは n 個の優先順位レベルそれぞれに 1 つずつあります。ある優先順位レベル i の設定項目は、配列内の i 番目のパラメタ構造体 config_rt_dptbl[i] によって指定されます。
パラメタ構造体は次のメンバーから成ります (/usr/include/sys/rt.h ヘッダファイルにも記述されています)。
rt_globpri |
この優先順位レベルに関係づけられているグローバルスケジューリング優先順位。rt_globpri の値は dispadmin(1M) では変更できません。 |
rt_quantum |
このレベルのプロセスに割り当てられるタイムカンタムの長さを目盛で表したもの (「タイムスタンプ機能」を参照)。タイムカンタム値は、特定のレベルのプロセスのデフォルト値、つまり開始値です。実時間プロセスのタイムカンタムは、priocntl(1) コマンドまたは priocntl(2) システムコールによって変更できます。 |
実時間管理者は、いつでも config_rt_dptbl を再設定して、スケジューラの実時間部分の振る舞いを変更できます。ここでは 2 通りの方法を説明します。
1 つ目は、起動時にロードされる新しいディスパッチテーブルを含むロード可能モジュールによって、config_rt_dptbl パラメタを再設定する方法です。ディスパッチテーブルを含むモジュールは独立したモジュールです。これは、実時間優先順位レベルの数や実時間クラスによって使用されるグローバルスケジューリング優先順位のセットを変更できる唯一の方法です。config_rt_dptbl の変更内容は、テーブルの変更後に設定した実時間プロセスで有効になります。
2 つ目は、dispadmin(1M) コマンドを使用して、実行中のシステムで実時間パラメタテーブルを調査または変更する方法です。dispadmin を実時間クラスで起動すると、カーネルの中心テーブルの現在の config_rt_dptbl 内の現在の rt_quantum 値を取り出すことができます。現在の中心テーブルを上書きする際、dispadmin への入力に使用された設定ファイルは、『SunOS Reference Manual』の Section 1M「System Administration Commands」にある config_rt_dptbl のマニュアルページで説明されている書式に合致していなければなりません。
config_rt_dptbl[] 内にある優先順位を設定されたプロセス rtdpent_t と、関連づけられているタイムカンタム値を次に示します。