ジョブ管理

この記事での学習内容 基本情報 応用情報

一つのまとまった仕事の単位であるジョブと,それを構成するジョブステップの概念,ジョブ管理の手順,ジョブ管理に関連する制御プログラムの役割を理解する。

用語例:ジョブスケジューラ,マスタスケジューラ,セション,省力化,自動運転,システム管理,バックグラウンドジョブ,バッチ処理,cron

ジョブ

ジョブとは、メインフレームコンピュータやサーバに処理させる一連の仕事のまとまりを指し、ユーザから見た仕事の単位となります。一つのジョブはバッチ処理させる幾つかのジョブステップのまとまりで、ジョブ制御言語によって記述されます。
一つのジョブステップはいくつかのタスクで構成されます。タスクはシステム側から見た仕事の単位となります。

ジョブステップ

ジョブステップとは、一つのジョブを構成するより小さな単位です。ジョブとタスクの中間のまとまりです。一つのジョブステップが一つのプログラムの実行に相当します。

ジョブ管理

ジョブ管理はオペレーティングシステムの管理作業の一つであり、ユーザから依頼されるジョブ及びジョブステップの実行を管理します。オペレーティングシステムを構成するジョブ管理プログラムが、次のような処理をします。

  • ジョブの起動
  • ジョブステップの実行順序の管理
  • ジョブの終了の監視・報告
  • 複数のジョブの実行順序の管理
  • 日時指定のジョブの実行や定例的なジョブの反復

なお、ジョブ管理プログラムの構成は下記のようになっています。

  • マスタスケジューラ
  • ジョブスケジューラ
    • リーダ
    • イニシエータ
    • ターミネータ
    • ライタ

マスタスケジューラ

マスタスケジューラは、ジョブスケジューラより上位の制御をするプログラムです。オペレータからの指示をジョブスケジューラに伝えたり、ジョブスケジューラからの状況報告をオペレータに伝えたりします。(ユーザとジョブ管理プログラムとのやりとりを管理する部分)

ジョブスケジューラ

ジョブスケジューラは、待ち行列として並んでいるジョブの実行順序を制御します。

ジョブスケジューラは下記のプログラムから構成されています。

リーダ

ジョブ管理プログラムの最初の処理をするリーダは、ユーザから依頼された一連のジョブ制御分を入力して、解釈するプログラムです。

イニシエータ

イニシエータはジョブに必要な資源を割り振る準備処理をして、プログラムの実行を開始します。

ジョブの実行順序は、下記のようなルールで管理されます。

  1. 原則としてジョブは入力された順序に実行されます。
  2. 優先順位が指定されていれば、それに従います。
  3. 前提となるジョブの正常終了や異常終了に応じて、後継のジョブの実行開始や実行中止が指定されていれば、それに従います。
  4. 開始日時が指定されていれば、それに従います。
ターミネータ

ターミネータは、ジョブが使用した資源を解放する後始末をします。

ライタ

ライタは、ジョブの出力を処理します。例えばプリンタへの出力は速度が遅いので、指定したプログラムの実行中は高速な外部記憶装置へいったん出力して、ライタがプリンタへの出力を引き継ぎます。ジョブの実行とプリンタへの出力を並行処理することによって、コンピュータシステムの効率を向上させます。

ジョブスケジューリング

ジョブ管理プログラムでの、ジョブの処理順序をまとめると、以下のようになります。

  1. リーダが一連のジョブ制御文を入力する。
  2. ジョブスケジューラが、ジョブの実行順序をスケジューリングする。
    1. イニシエータがジョブの開始処理をする。
    2. <ジョブステップとして指定したプログラム群が実行される>
    3. ターミネータがジョブの終了処理をする。
  3. 必要ならマスタスケジューラが、オペレータとジョブスケジューラのやりとりを仲介する。
  4. ライタがジョブの報告を出力する。