(57)【特許請求の範囲】
【請求項１】
ジョブの優先順位を確定しジョブの実行を制御するジョブ制御装置であって、
ジョブ優先度を設定したジョブを入力してキュー登録部に渡すジョブ入力部と、
前記ジョブ入力部から渡されたジョブをキューバッファに登録するキュー登録部と、
前記キューバッファに登録されている各ジョブに対して、ジョブに設定されている前記ジョブ優先度とジョブのキューバッファ内の位置に基づく優先度との積により表す総合優先度を計算し、前記総合優先度が最小のジョブを最優先度のジョブとして確定する優先度確定部と、
前記優先度確定部が確定した最優先度のジョブを前記キューバッファから取り出しジョブ実行部に渡すキュー取出部と、
前記キュー取出部から渡されたジョブを実行するジョブ実行部と、
前記キュー登録部がジョブを登録する待ち行列領域であるキューバッファと、
を備えるジョブ制御装置。
【請求項２】
ジョブの優先順位を確定しジョブの実行を制御するジョブ制御方法であって、
ジョブ優先度を設定したジョブを入力して待ち行列領域であるキューバッファに登録し、
前記キューバッファに登録されている各ジョブに対して、ジョブに設定されている前記ジョブ優先度とジョブのキューバッファ内の位置に基づく優先度との積により表す総合優先度を計算し、
前記総合優先度が最小のジョブを最優先度のジョブとして確定し、
前記確定した最優先度のジョブを前記キューバッファから取り出し、
前記キューバッファから取り出したジョブを実行する、
ことを特徴とするジョブ制御方法。
【請求項３】
ジョブ優先度を設定したジョブを入力して待ち行列領域であるキューバッファに登録する登録処理と、
前記キューバッファに登録されている各ジョブに対して、ジョブに設定されている前記ジョブ優先度とジョブのキューバッファ内の位置に基づく優先度との積により表す総合優先度を計算し、前記総合優先度が最小のジョブを最優先度のジョブとして確定する確定処理と、
前記確定した最優先度のジョブを前記キューバッファから取り出す取出処理と、
前記キューバッファから取り出したジョブを実行する実行処理と、
をコンピュータに実行させるためのプログラムを記録したことを特徴とする記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ジョブの優先順位を制御するジョブ制御装置に関し、特にジョブの優先度とジョブがキューに登録された順序とを併せて考慮することによりジョブの優先順位を確定しジョブの実行を制御するジョブ制御装置，方法および記録媒体に関する。
【０００２】
【従来の技術】
データの取り出し方法を決定する方式に先入れ先出し（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ。以下、ＦＩＦＯと記す）方式がある。
【０００３】
これは、ある場所に格納したデータを、古く格納した順に取り出すようにする方式である。すなわち、一番新しく格納されたデータが最後に取り出されることになる。一般的に、キュー（ｑｕｅｕｅ）と呼ばれる待ち行列はこの方式でデータを扱っている。
【０００４】
システムに投入された複数のジョブの優先順位を決定する場合、このＦＩＦＯ方式を利用して制御すれば投入された順にジョブが実行されることになり、ジョブの実行順序を意識したシステムでは頻繁に使われる方式である。
【０００５】
【発明が解決しようとする課題】
しかし、この従来技術には、次のような問題点があった。
【０００６】
第１の問題点は、ジョブ毎に優先順位を設定できないということである。
【０００７】
その理由は、キューに格納した順にジョブを実行する制御方式のために、仮にジョブ毎に優先度を設定したとしてもその優先度の値は一切無視されるためである。ＦＩＦＯ方式ではキュー内の位置が絶対的に優先順位を決定づけるので、ジョブ毎に優先度を持たせても意味がない。
【０００８】
第２の問題点は、ジョブ毎の優先度を有効にしたい場合、優先度の種類分だけキューバッファを用意する必要があり、必要メモリ空間が数倍に増大してメモリ空間を圧迫し且つ効率的でないということである。
【０００９】
その理由は、ジョブ毎の優先度を設定したとしても、上述のように、その優先度値は一切参照されないため、１つのキューバッファでは対応しきれないことになる。そこで、ジョブの優先度毎にキューバッファを用意する必要があるためである。
【００１０】
本発明の目的は、１つのキューバッファで各ジョブに設定された優先度とジョブが投入された順序とを折衷してジョブの優先順序を決定しジョブの実行を制御する装置，方法および記録媒体を提供することにある。
【００１１】
【課題を解決するための手段】
本願第１の発明のジョブ制御装置は、ジョブ優先度を設定したジョブを入力してキュー登録部に渡すジョブ入力部と、前記ジョブ入力部から渡されたジョブをキューバッファに登録するキュー登録部と、前記キューバッファに登録されている各ジョブに対して、ジョブに設定されている前記ジョブ優先度とジョブのキューバッファ内の位置に基づく優先度との積により表す総合優先度を計算し、前記総合優先度が最小のジョブを最優先度のジョブとして確定する優先度確定部と、前記優先度確定部が確定した最優先度のジョブを前記キューバッファから取り出しジョブ実行部に渡すキュー取出部と、前記キュー取出部から渡されたジョブを実行するジョブ実行部と、前記キュー登録部がジョブを登録する待ち行列領域であるキューバッファと、を備える。
【００１２】
本願第２の発明のジョブ制御方法は、ジョブ優先度を設定したジョブを入力して待ち行列領域であるキューバッファに登録し、前記キューバッファに登録されている各ジョブに対して、ジョブに設定されている前記ジョブ優先度とジョブのキューバッファ内の位置に基づく優先度との積により表す総合優先度を計算し、前記総合優先度が最小のジョブを最優先度のジョブとして確定し、前記確定した最優先度のジョブを前記キューバッファから取り出し、前記キューバッファから取り出したジョブを実行する、ことを特徴とする。
【００１３】
本願第３の発明の記録媒体は、ジョブ優先度を設定したジョブを入力して待ち行列領域であるキューバッファに登録する登録処理と、前記キューバッファに登録されている各ジョブに対して、ジョブに設定されている前記ジョブ優先度とジョブのキューバッファ内の位置に基づく優先度との積により表す総合優先度を計算し、前記総合優先度が最小のジョブを最優先度のジョブとして確定する確定処理と、前記確定した最優先度のジョブを前記キューバッファから取り出す取出処理と、前記キューバッファから取り出したジョブを実行する実行処理と、をコンピュータに実行させるためのプログラムを記録したことを特徴とする。
【００２０】
【発明の実施の形態】
本発明は、ＦＩＦＯ方式に「ジョブ優先度」の概念を導入し、各ジョブに設定された優先度と、ジョブが投入された順序とを折衷してジョブの実行優先順序を決定する構成を提供するものである。
【００２１】
本発明の第１の実施の形態について、図面を参照して詳細に説明する。
【００２２】
図１は、本発明の実施の形態の構成を示す図である。
【００２３】
図１を参照すると、ジョブ制御装置１は、ジョブ入力部１１と、キュー登録部１２と、優先度確定部１３と、キュー取出部１４と、ジョブ実行部１５と、キューバッファ１６と、優先度情報記憶部１７と、から構成されている。
【００２４】
ジョブ入力部１１は、ジョブを入力し、キュー登録部１２に渡す。ジョブは、ジョブ優先度（Ｊｏｂ  Ｐｒｉｏｒｉｔｙ。以下、ＪＰと記す）を設定して入力される。ユーザは各ジョブに任意のＪＰを設定できる。なお、ＪＰの値が小さいほど優先度が高い。
【００２５】
キュー登録部１２は、ジョブ入力部１１から渡されたジョブをキューバッファ１６に登録する。キュー登録部１２は、キューバッファ１６に登録したジョブに位置優先度（Ｐｏｓｉｔｉｏｎａｌ  Ｐｒｉｏｒｉｔｙ。以下、ＰＰと記す）を付ける。ＰＰは、キューバッファ１６内の格納位置順番により表され、キューバッファ１６に格納された順序が早いジョブ程この値が小さい。なお、ＰＰの値が小さいほど優先度が高い。
【００２６】
優先度確定部１３は、キューバッファ１６に登録されているジョブに対して、総合優先度（Ｇｅｎｅｒａｌ  Ｐｒｉｏｒｉｔｙ。以下、ＧＰと記す）を計算し、最優先度のジョブを確定する。ＧＰは、ＰＰとＪＰの積により表され、ＧＰの値が最終的なジョブの優先順序を決定する。なお、ＧＰの値が小さいほど優先度が高い。
【００２７】
キュー取出部１４は、優先度確定部１３が確定した最優先度のジョブをキューバッファ１６から取り出し、ジョブ実行部１５に渡す。
【００２８】
ジョブ実行部１５は、キュー取出部１４から渡されたジョブを実行する。
【００２９】
キューバッファ１６は、キュー登録部１２がジョブを登録する待ち行列領域である。
【００３０】
優先度情報記憶部１７は、優先度確定部１３が最優先度のジョブを確定するための情報を格納する領域である。優先度情報記憶部１７には、ＧＰの値を記憶するＭ領域とＰＰの値を記憶するＰ領域とを含む。
【００３１】
本発明の第１の実施の形態の動作を、図２〜図３を用いて説明する。
【００３２】
図２は、キューバッファを説明する図である。
【００３３】
図３は、ジョブの優先順序を決定するフローを示す図である。
【００３４】
図２を参照すると、１つのキューバッファを使って複数のジョブを投入登録することが模式的に示されている。
【００３５】
キューバッファ１６には、ＪＰ値がａであるジョブＡ，ＪＰ値がｂであるジョブＢ，ＪＰ値がｃであるジョブＣ，〜，ＪＰ値がｚであるジョブＺが、この順序で登録されている。そのため、ジョブＡのＰＰ値は１、ジョブＢのＰＰ値は２、ジョブＣのＰＰ値は３、ジョブＺのＰＰ値はＮ、となる。
【００３６】
図３を用いて、ジョブの優先順序を決定する手順を説明する。
【００３７】
先ず、初期設定として、キューバッファ１６のジョブ数を読み込み、優先度情報記憶部１７のＭ領域にＭ領域にセットできる最大値を、Ｐ領域にゼロを、格納する（ステップ３０１〜３０３）。
【００３８】
ＰＰが一番小さいジョブに関してＧＰを計算する。ＧＰはＰＰとＪＰとの積（ＰＰ×ＪＰ）により算出される。図２では、ジョブＡのＧＰを求めることになり、ジョブＡのＧＰはＰＰ×ＪＰ＝１×ａ＝ａと求められる。ＧＰの値（総合優先度情報）をＭ領域に、ＰＰの値（位置情報）をＰ領域に、それぞれ記憶する（ステップ３０５〜３０８）。
【００３９】
その後、次にＰＰの値が大きいジョブについて、同様にＧＰを求める。図２では、ジョブＢのＧＰを求めることになり、ＧＰの値は２ｂとなる。ここで、上記でＭ領域に記憶しておいた値（すなわち、ａ）と２ｂとの大小比較処理を行う。比較した結果、小さい方の値をＭ領域に格納し、そのジョブの持つＰＰの値（位置情報）をＰ領域に記憶する（ステップ３０５〜３０８）。
【００４０】
こうして、キューバッファ１６内に格納されているすべてのジョブについて、ＧＰ算出処理、および大小比較処理を行う（ステップ３０４〜３０９）。
【００４１】
最終的にＰ領域に格納されたＰＰの値（位置情報）を持つジョブが、実行すべきジョブであると決定できる。
【００４２】
実行ジョブ決定後は、該当ジョブをキューバッファ１６から取り除き、後続のジョブを１つ分シフトする（ステップ３１０）。
【００４３】
続けて残りのジョブの優先順序の決定を行うために、上記の手順をキューバッファ１６内にジョブが無くなるまで繰り返す（ステップ３０１〜３１０）。
【００４４】
図４を参照して、より具体的に説明する。
【００４５】
まず、ＰＰ＝１の位置にあるジョブＡのＧＰを計算する。ジョブＡのＪＰは４であるので、ＧＰ＝ＰＰ×ＪＰ＝１×４＝４となる。この結果として、Ｍ領域に４、Ｐ領域に１、を格納する。
【００４６】
次に、ジョブＢのＧＰを計算する。ＧＰ＝２×１＝２である。比較処理を行うと、ＧＰ＜Ｍ（＝４）であるので、Ｍ領域に２、Ｐ領域に２、を格納する。
【００４７】
次に、ジョブＣのＧＰを計算する。ＧＰ＝３×２＝６である。比較処理を行うと、ＧＰ＞Ｍ（＝２）であるので、Ｍ領域とＰ領域の値は変更しない。
【００４８】
最後に、キューバッファ１６内の最後尾に位置するジョブＤのＧＰを計算する。ＧＰ＝４×１＝４である。比較処理を行うとＧＰ＞Ｍ（＝２）であるので、Ｍ領域とＰ領域の値は変更しない。
【００４９】
これにより、キューバッファ１６から取り出すジョブは、Ｐ領域の値が２であるから、すなわちＰＰ＝２に位置するジョブＢということになる。
【００５０】
ジョブＢ抽出後も同様の処理を続けると、ジョブＡがＧＰ＝１×４＝４、ジョブＣがＧＰ＝２×２＝４、ジョブＤがＧＰ＝３×１＝３となり、次に抽出すべきジョブはＧＰが一番小さい値のジョブＤになる。
【００５１】
同様にして、次に実行すべきジョブを求めていくとジョブＡ、ジョブＣの順になる。図３のフローチャートでわかるように、複数のジョブでＧＰが同一の値となる場合は、先にキューイングされたほうが優先される。ジョブＡがＧＰ＝１×４＝４、ジョブＣがＧＰ＝２×２＝４、となり、どちらもＧＰ＝４となるが、先にキューイングされたジョブＡが優先されるため、ジョブＡ→ジョブＣの順になる。
【００５２】
最終的に、図４でキューイングされたジョブはジョブＢ→ジョブＤ→ジョブＡ→ジョブＣの順に実行されることになる。
【００５３】
次に、本発明の第２の実施の形態について、図面を参照して詳細に説明する。
【００５４】
上述の第１の実施の形態で説明した位置優先度（ＰＰ）は、最小値１から順にＰＰ＝１，２，３、・・・と１づつ増やした値を割り当てたものであった。すなわち、キューバッファ内の隣り合う各ジョブの優先度差は等差（＝１）である。
【００５５】
この等差の制限を取り払い、キューバッファ内の位置毎に自由に位置優先度を割り当てたものを偏向位置優先度（Ｂｉａｓｅｄ  Ｐｏｓｉｔｉｏｎａｌ  Ｐｒｉｏｒｉｔｙ。以下、ＢＰＰと記す）と呼ぶ。すなわち、ＢＰＰは、キューバッファ内の格納位置に対応して、予め値が決められている。例えば、キューバッファ内の先頭のジョブには１、２番目のジョブには３、３番目のジョブには６、のように予め設定する。
【００５６】
本発明の第２の実施の形態は、この偏向位置優先度を用いたものである。
【００５７】
図５は、本発明の第２の実施の形態の構成を示す図である。
【００５８】
図５を参照すると、ジョブ制御装置２は、ジョブ入力部１１と、キュー登録部２２、優先度確定部２３と、キュー取出部１４と、ジョブ実行部１５と、キューバッファ２６と、優先度情報記憶部２７と、から構成されている。
【００５９】
第２の実施の形態は、図１に示す第１の実施の形態のキュー登録部１２と優先度確定部１３とキューバッファ１６と優先度情報記憶部１７とをキュー登録部２２と優先度確定部２３とキューバッファ２６と優先度情報記憶部２７とに置換した構成に成っている。
【００６０】
ここでは、第１の実施の形態から変更のあったキュー登録部２２と優先度確定部２３とキューバッファ２６と優先度情報記憶部２７とについて説明する。
【００６１】
キュー登録部２２は、ジョブ入力部１１から渡されたジョブをキューバッファ２６に登録する。キュー登録部２２は、キューバッファ２６に登録したジョブに対して、ジョブの格納位置に対応して予め定められているＢＰＰを付ける。なお、ＢＰＰの値が小さいほど優先度が高い。
【００６２】
優先度確定部２３は、キューバッファ２６に登録されているジョブに対して、総合優先度（Ｇｅｎｅｒａｌ  Ｐｒｉｏｒｉｔｙ。以下、ＧＰと記す）を計算し、最優先度のジョブを確定する。ＧＰは、ＢＰＰとＪＰの積により表され、ＧＰの値が最終的なジョブの優先順序を決定する。なお、ＧＰの値が小さいほど優先度が高い。
【００６３】
キューバッファ２６は、キュー登録部２２がジョブを登録する待ち行列領域である。
【００６４】
優先度情報記憶部２７は、優先度確定部２３が最優先度のジョブを確定するための情報を格納する領域である。優先度情報記憶部２７には、ＧＰの値を記憶するＭ領域とジョブの位置情報を記憶するＰ領域とを含む。ジョブの位置情報は、キューバッファ２６内の先頭のジョブの位置を１とし、２番目のジョブの位置を２とし、ジョブの位置に対応した数で表す。
【００６５】
本発明の第２の実施の形態の動作を、図６〜図７を用いて説明する。
【００６６】
図６は、キューバッファを説明する図である。
【００６７】
図７は、ジョブの優先順序を決定するフローを示す図である。
【００６８】
図６を参照すると、１つのキューバッファを使って複数のジョブを投入登録することが模式的に示されている。
【００６９】
キューバッファ２６には、ジョブＡ，ジョブＢ，ジョブＣ，〜，ジョブＺの順序でジョブが登録されていて、ジョブＡはＪＰ値が４でＢＰＰ値が１であり、ジョブＢはＪＰ値が１でＢＰＰ値が３であり、ジョブＣはＪＰ値が２でＢＰＰ値が４であり、ジョブＺはＪＰ値が１でＢＰＰ値が７である。
【００７０】
図７を用いて、ジョブの優先順序を決定する手順を説明する。
【００７１】
先ず、初期設定として、キューバッファ２６のジョブ数を読み込み、優先度情報記憶部２７のＭ領域にＭ領域にセットできる最大値を、Ｐ領域にゼロを、格納する（ステップ７０１〜７０３）。
【００７２】
１番目のジョブ位置のジョブに関してＧＰを計算する。ＧＰはＢＰＰとＪＰとの積（ＢＰＰ×ＪＰ）により算出される。図６では、ジョブＡのＧＰを求めることになり、ジョブＡのＧＰはＢＰＰ×ＪＰ＝１×４＝４と求められる。ＧＰの値（総合優先度情報）をＭ領域に、ジョブの位置情報をＰ領域に、それぞれ記憶する（ステップ７０５〜７０８）。
【００７３】
その後、２番目のジョブ位置のジョブについて、同様にＧＰを求める。図６では、ジョブＢのＧＰを求めることになり、ＧＰの値は３となる。ここで、上記でＭ領域に記憶しておいた値（すなわち、４）と３の大小比較処理を行う。比較した結果、小さい方の値（＝３）をＭ領域に格納し、そのジョブ（＝ジョブＢ）の位置情報（＝２）をＰ領域に記憶する（ステップ７０５〜７０８）。
【００７４】
こうして、キューバッファ２６内に格納されているすべてのジョブについて、ＧＰ算出処理、および大小比較処理を行う（ステップ７０４〜７０９）。
【００７５】
最終的にＰ領域に格納された位置情報を持つジョブが、実行すべきジョブであると決定できる。
【００７６】
実行ジョブ決定後は、該当ジョブをキューバッファ２６から取り除き、後続のジョブを１つ分シフトする（ステップ７１０）。
【００７７】
続けて残りのジョブの優先順序の決定を行うために、上記の手順をキューバッファ２６内にジョブが無くなるまで繰り返す（ステップ７０１〜７１０）。
【００７８】
このように、偏向位置優先度の概念を用いれば、ＢＰＰ＝１、３、４、７、１０、・・・というようにキューバッファ内の各位置に依存した優先度を自由に割り当てることができる。これにより、「前から５番目以降にキューイングされたジョブの優先度は極端に低くしたい」といった要求に、柔軟に応えることができる。
【００７９】
本発明による上述した実施の形態において、ジョブ制御装置の処理動作を実行するためのプログラム等を、データとして磁気ディスクや光ディスクなどの記録媒体（図示せず）に記録するようにし、記録されたデータを読み出してジョブ制御装置を動作させるために用いる。このように、本発明によるジョブ制御装置を動作させるデータを記録媒体に記録させ、この記録媒体をインストールすることによりジョブ制御装置の機能が実現できるようになる。
【００８０】
【発明の効果】
本発明の第１の効果は、ジョブのキューイング状態によって常に動的な優先度を割り当てながらジョブの優先順序を決定できることである。
【００８１】
その理由は、位置優先度（ＰＰ）に加えジョブ優先度（ＪＰ）も考慮してジョブの優先順序を確定する手段を設けたためである。
【００８２】
本発明の第２の効果は、同一のジョブ優先度を持つ複数のジョブに対してＦＩＦＯを守りながら優先順序を決定できる点である。
【００８３】
その理由は、本方式では同一のジョブ優先度（ＪＰ）のジョブでは位置優先度（ＪＰ）によって総合優先度（ＧＰ）が左右されるよう考慮されているためである。すなわち、ラウンドロビン方式のように同一のジョブ優先度のジョブに対して均等に実行時間を割り当てる方式とは異なり、先にキューイングしたジョブは後からキューイングされたジョブに比べて必ず高い優先度が割り当てられるということである。これは本方式がＦＩＦＯ方式をベースにしていることによる。
【００８４】
本発明の第３の効果は、通常のＦＩＦＯ方式としても利用できることである。
【００８５】
その理由は、本方式において投入されるジョブのＪＰがすべて同一である場合はＦＩＦＯ方式に相当することになるからである。すなわち、通常のＦＩＦＯ方式では位置優先度（ＰＰ）の値のみに依存しているので、本方式において通常のＦＩＦＯ処理を実施したい場合は、投入するジョブのＪＰをすべて同一にすれば良い。
【図面の簡単な説明】
【図１】第１の実施の形態の構成を示す図
【図２】キューバッファを説明する図
【図３】ジョブの優先順序を決定するフローを示す図
【図４】第１の実施の形態の動作を説明する図
【図５】第２の実施の形態の構成を示す図
【図６】キューバッファを説明する図
【図７】ジョブの優先順序を決定するフローを示す図
【符号の説明】
１    ジョブ制御装置
２    ジョブ制御装置
１１    ジョブ入力部
１２    キュー登録部
１３    優先度確定部
１４    キュー取出部
１５    ジョブ実行部
１６    キューバッファ
１７    優先度情報記憶部
２２    キュー登録部
２３    優先度確定部
２６    キューバッファ
２７    優先度情報記憶部
【図１】
0003646601.tif 000002
【図２】
0003646601.tif 000003
【図３】
0003646601.tif 000004
【図４】
0003646601.tif 000005
【図５】
0003646601.tif 000006
【図６】
0003646601.tif 000007
【図７】
0003646601.tif 000008