03.ジョブ入力サブシステム

By 神居 - Posted: 2008/10/26 Last updated: 2010/08/04 - Leave a Comment

JES2(JES,JSS3)

JES2はMVSのジョブ管理を補完するもので、ジョブ入力サブシステム(Job Entry Subsystem)と呼ばれます。OSであるMVSと連携してジョブ管理機能を構成しています。JES2に相当するものはMSPではJES、VOS3ではJSS3となります。主な役割はジョブのスケジューリングとスプーリングです。MVSのジョブ管理は大きく3つの機能で構成されています。

JES2はそれぞれの機能の間にキュー(待ち行列)とスプールを設け、「読み取り・実行・書き出し」の3つのサイクルにおいて人間(オペレーター)の介入を極力排除して、ジョブ処理が連続して流れるように制御します。特にスプーリングは超高速なCPUによるプログラム処理と、低速なカードリーダー(ジョブの入力に使われた)やプリンター(ジョブの出力に使われる)の速度差を埋め、システム全体が低速なI/O装置に足を引っ張られないようにするための重要な仕組みです。


ジョブの入力とリーダー

JCLによって記述されたジョブはリーダー装置を通してJES2に入力されます(サブミットされる)。今ではINTRDRと呼ばれるプログラムによる論理的なリーダーが使用されますが、以前はカードやテープなどの物理的な装置もよく使われました。INTRDRはプログラムではあるものの呼び出して使うサブルーチン的なものではなく、JCLのDD文に定義して使用するか、対話処理のコマンドによって間接的に使用します。

入力されたジョブにはジョブIDと呼ばれる識別子が付けられ、「実行待ち行列(ジョブ・キュー)」に入れられます。実行待ち行列は実行クラスと優先順位によって管理されるもので、後から入力されたジョブが先に取り出されることがあります。実行クラスはジョブをグループ化するための識別子でAからZおよび0から9の36種類が使用でき、クラス毎に実行時の優先度や利用できる最大CPU時間やメモリーサイズなどのジョブの特性を定義することができます。これらはユーザーが自社の業務特性に合わせ自由に設定することができます。


ジョブの実行とイニシエーター

ジョブはイニシエーターによって実行されます。イニシエーターにも実行するジョブのクラスが割り当てられ、ジョブは同じクラスに対応した空きイニシエーター(何のジョブも実行していない実行待ち状態のイニシエーター)があれば、優先順位によってキューから取り出され、そのイニシエーターによって実行が開始されます。

MVSでは1つ1つのイニシエーターは独立したアドレス空間を持つプロセスとして動きますが、他にもメモリーを分割した区画(パーティション)として制御するOSもあります。複数のイニシエーターを利用することで、その分だけジョブを同時に実行することができ、このようなOSの制御を多重プログラミングと呼びます。プログラムはチャネルが入出力処理を実行している間はCPUを使わないので、この空き時間を利用して動かすプログラムを次々と切り替えて行くことであたかも同時に動いているかのように制御する方式です。

イニシエーターの主な役割は以下の通りです。


ジョブの出力とライター

ジョブ内のすべてのステップが終了すると、ジョブの実行結果がジョブ・ログとして出力され、ジョブは出力待ち行列(アウトプット:キュー)に入れられます。ジョブ・ログはJES2が作成したジョブの実行ログです。プログラム自身が出力する処理結果があればそれらも含まれます。これらは一般的に印刷用データとして作成されますが、直接印刷装置に出力されるのではなく、一旦JES2のスプールに入れられます。
スプール内の出力データはDD文の指定などによって区分され仮想のデータセットとして格納されます。これがSYSOUTで、スプール内の個々のSYSOUTをSYSOUTデータセットと呼びます。入力用のデータをスプール内に格納することも出来、こちらはSYSIN(データセット)と呼ばれます。
実際のSYSOUTデータセットはジョブ終了時に作成されるのではなく、ジョブの入力時やステップの開始時にスプール内に割り振られ、JES2およびプログラムによってデータの出力が行われると、バッファリングされ必要に応じてスプール内に書き出されます。ジョブの終了によってこれらのSYSOUTはデータとして完成し書き出しが可能になります。

書き出しが可能になったSYSOUTを実際の出力装置に送り出すのがライター(Writer)です。標準的な出力装置として使われるのがプリンター(印刷装置)とカードパンチ(穿孔装置)ですが、カードパンチはカードリーダー同様に現在ではほとんど使われることがありません。その他にスプール内のSYSOUTをテープやDASDにデータセットとして書き出すこともでき、これを行うプログラムをXWTR(External Writer:外部書き出しプログラム)と呼びます。MVSの標準機能として提供されていますが、ユーザー独自のプログラムとして作成することもできます。

スプーリングによるSYSOUTとライターの利点は、パフォーマンスとスループットの向上とユーザープログラムの簡易化にあります。低速なデバイスであるプリンターやカードパンチにユーザープログラムから直接書き出していては、処理速度は装置の速度に引っ張られます。その間他のジョブも装置を利用できないので実行自体を待たねばなりません。スプール内にSYSOUTデータセットとして書き出せば、高速なディスク装置の速度で処理を行うことができますし、DASDであれば同時に複数のジョブでも共用使用ができます。またプリンターの制御を行うにはハードウェアに依存したI/O処理が必要になりますが、これはユーザープログラムにとっては業務処理とは直接関係ありません。ライターを介せばこれらの面倒なハードウェア制御の処理はJES2が一手に引き受けますから、ユーザープログラムはSYSOUTと言う仮想のプリンターに単にデータを書き出せば良いのです。

Posted in ..基礎編 • • Top Of Page