IBM i のジョブ状態は3種類 (活動状態 待機状態 不適格状態)
IBM i の実行管理の基本を説明します。
前の記事 活動レベル中でのCPUのディスパッチ で説明したようにIBM i OS上でシステムやユーザーのタスク・スレッドがCPUを同時に使用できる最大数はプール(メインメモリの論理的な区分単位)毎の最大活動数や *SBSサブシステム毎の最大活動数などで制限されています。
CPUを使用可能なタスク・スレッドの状態を活動状態と呼びます。CPUを使用可能でない状態には待機状態(ロング・ウェイト状態)と不適格状態の2種類があります。
活動状態
活動状態は正しくはジョブ(タスク・スレッド)がCPUを使用できる資格を持っている状態を意味します。実際にはCPUを使用している状態(活動ジョブ)と短時間待機状態の2つの状態に分かれます。
待機状態(ロング・ウェイト状態)
代表的な例として5250端末ジョブでのユーザーからの画面入力待ちがあります。他にもメッセージ待ち、装置待ち(物理的な入出力装置からの応答待ち)、データベースのレコード待ちなどがあります。
不適格状態
活動レベルに空きが無いため、活動レベルに空きができるのを待っている状態。
ジョブ状態の遷移
活動状態 → 待機状態
ジョブが以下の理由でロング・ウェイト状態になった状態。ジョブは活動レベルとメインメモリ上のページ(PAG)を開放し、ウェイト待ち行列に移されます。
・5250画面に対するEXFTM命令、WRITE命令実行時
・データベースファイルのレコードロック時
*MSGQ メッセージ・キューからのメッセージ待ち
待機状態 → 活動状態
5250端末で実行キーが押された場合、テープの読み込みが完了した際などにロング・ウェイト状態が解除され活動レベルの空きを確認します。空きがある場合、活動状態に戻ります。
待機状態 → 不適格状態
ジョブがロング・ウェイトを終了したが、活動レベルに空きがない場合、不適格状態に移されます。
活動状態 → 不適格状態
スレッドやタスクがタイムスライスエンドに到達すると、タスクは不適格待ち行列にある優先順位が等しいか高いジョブに活動レベルを与えられるように優先順位が1/128下げられます。そして不適格待ち行列のジョブと比較して優先順位が低い場合は不適格状態に移されます。
活動状態 → 活動状態
優先順位が高いジョブが不適格待ち行列に無い場合は、タイムスライスエンドに到達したジョブはリセットされたタイムスライスと1/128減じられた優先順位で活動レベルを保持し続けます。
不適格状態 → 活動状態
活動レベルに空きができると、不適格待ち行列で実行待ちの最も優先順位の高いジョブが活動状態になります。
※次の記事:ジョブ状態遷移の具体例で具体的な例をあげて説明したいと思います。