(57)【要約】【課題】特定の機能を何れかのプロセッサで独占的に動作させることなく、ジョブが負荷の低いプロセッサに割り当てられるようにし、尚且つ、できるだけジョブが優先度の通りに実行されるようにすること。【解決手段】各プロセッサ１０ｄは、ジョブの実行後、そのジョブの実行に掛かった時間が所定の上限値を下回っていた場合に（ステップＳ２０７；ＮＯ，Ｓ３０１；ＮＯ）、次のジョブを実行する前に、他のプロセッサに割り当てられている未実行のジョブのうちの優先度の高いジョブを探し出し（ステップＳ３０２乃至Ｓ３０４）、そのジョブを実行するよう（ステップＳ３０５）、動作する。【選択図】図９
2008139907.tif 000002
【特許請求の範囲】
【請求項１】
密結合マルチプロセッサシステムを構成する各プロセッサを、何れも、
自分に割り当てられたジョブを特定するジョブ情報とそのジョブに定義されている優先度とを含むレコードを、メモリ内の専用のテーブルに記憶するジョブ記憶手段，
前記テーブルに記憶されているレコードのうち優先度が最も高いレコードを決定し、決定したレコードのジョブ情報にて特定されるジョブを実行する実行手段，
前記実行手段がジョブを実行し終えると、前記テーブルからそのジョブに対応するレコードを削除する削除手段，
前記実行手段がジョブの実行に掛けた時間が所定の上限値を下回っている場合に、自分以外の全てのプロセッサのテーブルから、優先度が最も高いレコードを特定する特定手段，及び、
前記特定手段が特定したレコードを、他のプロセッサのテーブルから自分専用のテーブルに移行させる移行手段
として機能させる
ことを特徴とするジョブ割当プログラム。
【請求項２】
密結合マルチプロセッサシステムを構成する各プロセッサが、何れも、
自分に割り当てられたジョブを特定するジョブ情報とそのジョブに定義されている優先度とを含むレコードを、メモリ内の専用のテーブルに記憶するジョブ記憶手順，
前記テーブルに記憶されているレコードのうち優先度が最も高いレコードを決定し、決定したレコードのジョブ情報にて特定されるジョブを実行する実行手順，
前記実行手順においてジョブを実行し終えると、前記テーブルからそのジョブに対応するレコードを削除する削除手順，
前記実行手順においてジョブの実行に掛けた時間が所定の上限値を下回っている場合に、自分以外の全てのプロセッサのテーブルから、優先度が最も高いレコードを特定する特定手順，及び、
前記特定手順において特定したレコードを、他のプロセッサのテーブルから自分専用のテーブルに移行させる移行手順
を実行する
ことを特徴とするジョブ割当方法。
【請求項３】
密結合マルチプロセッサシステムを構成する各プロセッサを、何れも、
自分に割り当てられたジョブを特定するジョブ情報とそのジョブに定義されている優先度とを含むレコードを、メモリ内の専用のテーブルに記憶するジョブ記憶手段，
前記テーブルに記憶されているレコードのうち優先度が最も高いレコードにて特定されるジョブを実行する実行手段，
前記実行手段がジョブの実行を開始するときに、前記テーブル内においてその次に優先度の高いレコードを、前記実行手段の次回の実行対象として決定する決定手段，
前記決定手段が次回の実行対象を決定してから所定の時間が経過した場合に、自分以外の全てのプロセッサのテーブルから、その実行対象よりも優先度が低く且つジョブが実行済みのレコードを、検索する検索手段，及び、
前記検索手段が何れかのレコードを検出できた場合に、検出したレコードのうち、最も優先度の高いレコードを有するプロセッサのテーブルへ、自分専用のテーブルから、次回の実行対象のレコードを移行させる移行手段
として機能させる
ことを特徴とするジョブ割当プログラム。
【請求項４】
密結合マルチプロセッサシステムを構成する各プロセッサが、何れも、
自分に割り当てられたジョブを特定するジョブ情報とそのジョブに定義されている優先度とを含むレコードを、メモリ内の専用のテーブルに記憶するジョブ記憶手順，
前記テーブルに記憶されているレコードのうち優先度が最も高いレコードにて特定されるジョブを実行する実行手順，
前記実行手順においてジョブの実行を開始するときに、前記テーブル内においてその次に優先度の高いレコードを、前記実行手順における次回の実行対象として決定する決定手順，
前記決定手順において次回の実行対象を決定してから所定の時間が経過した場合に、自分以外の全てのプロセッサのテーブルから、その実行対象よりも優先度が低く且つジョブが実行済みのレコードを、検索する検索手順，及び、
前記検索手順において何れかのレコードを検出できた場合に、検出したレコードのうち、最も優先度の高いレコードを有するプロセッサのテーブルへ、自分専用のテーブルから、次回の実行対象のレコードを移行させる移行手順
を実行する
ことを特徴とするジョブ割当方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、密結合マルチプロセッサシステムを構成する複数のプロセッサにジョブを割り当てるためのプログラム及び方法に、関する。
【背景技術】
【０００２】
周知のように、密結合マルチプロセッサシステムは、バスレベルで結合された複数のプロセッサがメモリを共有するとともに、そのメモリ上に存在する一つのＯＳ［Operating System］ソフトウエアにより各プロセッサが制御されるシステムを言う。この密結合マルチプロセッサシステムでは、システム内のジョブ（タスク）はどのプロセッサによっても実行され得るので、当該システムは、ジョブを各プロセッサに分散することができる。このため、密結合マルチプロセッサシステムは、単一のプロセッサからなるシステムより、高い処理能力を有している。
【０００３】
特許文献１及び特許文献２には、各プロセッサにジョブを割り当てる技術が、開示されている。このうち、特許文献１に係る技術は、メモリ等の資源の使用状況やコマンドに基づいて最も処理効率がよくなるプロセッサにジョブを割り当てていくというものである。これにより、特許文献１に係る発明は、高いキャッシュヒット率を得られるものとなっている。また、特許文献２に係る技術は、ＣＰＵ［Central Processing Unit］使用率やメモリ使用率などの負荷情報の収集時間間隔が短いプロセッサのうち、負荷が最小のプロセッサにジョブを割り当てていくというものである。これにより、特許文献２に係る技術は、システムの性能低下を防止できるものとなっている。
【０００４】
【特許文献１】特開平０５−１３４９９４号公報
【特許文献２】特開平１１−００３３２１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、システム内の各ジョブには、メモリアクセスの高速化のため、理想的な実行順を特定する情報として、優先度が一意に定義される。前述した特許文献１に係る発明では、各プロセッサは、自分に割り当てられたジョブを、優先度の高い順に実行することとなる。
【０００６】
しかしながら、例えば、或るプロセッサにおいて外部装置への問い合わせの応答が返ってこない等の理由によってジョブの実行が遅れ、その間に優先度が低いジョブが別のプロセッサによって先に実行されてしまうと、システム内でジョブの実行順が優先度の通りにならなくなり、システムの性能が低下する。
【０００７】
また、前述した特許文献２に係る発明では、複数のプロセッサのうちの一つが、各プロセッサの負荷に基づいてジョブの割り当てを行うスケジューラにとして、動作する。しかし、一つのプロセッサがスケジューラに独占されてしまうと、そのプロセッサが他のジョブのために使用できないという問題がある。
【０００８】
本発明は、前述したような従来技術の有する問題点に鑑みてなされたものであり、その課題は、特定の機能を何れかのプロセッサで独占的に動作させることなく、ジョブが負荷の低いプロセッサに割り当てられるようにし、尚且つ、できるだけジョブが優先度の通りに実行されるようにすることにある。
【課題を解決するための手段】
【０００９】
上記の課題を解決するために案出されたジョブ割当プログラムの第一の態様は、密結合マルチプロセッサシステムを構成する各プロセッサを、何れも、自分に割り当てられたジョブを特定するジョブ情報とそのジョブに定義されている優先度とを含むレコードを、メモリ内の専用のテーブルに記憶するジョブ記憶手段，そのテーブルに記憶されているレコードのうち優先度が最も高いレコードを決定し、決定したレコードのジョブ情報にて特定されるジョブを実行する実行手段，その実行手段がジョブを実行し終えると、テーブルからそのジョブに対応するレコードを削除する削除手段，実行手段がジョブの実行に掛けた時間が所定の上限値を下回っている場合に、自分以外の全てのプロセッサのテーブルから、優先度が最も高いレコードを特定する特定手段，及び、その特定手段が特定したレコードを、他のプロセッサのテーブルから自分専用のテーブルに移行させる移行手段として機能させることを、特徴としている。
【００１０】
このように構成されると、各プロセッサは、ジョブの実行に掛かった時間が所定の上限値を下回っていた場合に、自分に割り当てられているジョブを実行する前に、他のプロセッサに割り当てられている未実行のジョブのうちの優先度の最も高いジョブを探し出して、そのジョブを実行するよう、動作する。これにより、負荷の掛かっているプロセッサが実行すべきジョブが、ジョブの実行に時間が掛からなかったプロセッサに、肩代わりされることとなる。その結果、システムの性能低下が防止されるとともに、ジョブができるだけ優先度の通りに行われるようになる。然も、自分が肩代わりできるジョブを探し出す処理は、各プロセッサがジョブの実行前に行うため、何れかのプロセッサが特定の機能のために独占されることもない。
【００１１】
また、上記の課題を解決するために案出されたジョブ割当プログラムの第二の態様は、密結合マルチプロセッサシステムを構成する各プロセッサを、何れも、自分に割り当てられたジョブを特定するジョブ情報とそのジョブに定義されている優先度とを含むレコードを、メモリ内の専用のテーブルに記憶するジョブ記憶手段，そのテーブルに記憶されているレコードのうち優先度が最も高いレコードにて特定されるジョブを実行する実行手段，その実行手段がジョブの実行を開始するときに、テーブル内においてその次に優先度の高いレコードを、実行手段の次回の実行対象として決定する決定手段，その決定手段が次回の実行対象を決定してから所定の時間が経過した場合に、自分以外の全てのプロセッサのテーブルから、その実行対象よりも優先度が低く且つジョブが実行済みのレコードを、検索する検索手段，及び、その検索手段が何れかのレコードを検出できた場合に、検出したレコードのうち、最も優先度の高いレコードを有するプロセッサのテーブルへ、自分専用のテーブルから、次回の実行対象のレコードを移行させる移行手段として機能させることを、特徴としている。
【００１２】
このように構成されると、各プロセッサは、ジョブの実行前に次回の実行対象として決定したジョブの待機時間が所定の時間を上回っていた場合に、他のプロセッサが既に実行したジョブのうち、その次回の実行対象よりも優先度が低いジョブを探し出し、そのジョブを実行したプロセッサに、次回の実行対象のジョブを引き渡すよう、動作する。これにより、自分に負荷が掛かっていると判断したプロセッサが、次に実行すべきジョブを、そのジョブより優先度の低いジョブの実行を終えているプロセッサに、肩代わりさせることとなる。その結果、システムの性能低下が防止されるとともに、ジョブができるだけ優先度の通りに行われるようになる。然も、自分のジョブが押し付けられるプロセッサを探し出す処理は、各プロセッサがジョブの実行中に行うため、何れかのプロセッサが特定の機能のために独占されることもない。
【発明の効果】
【００１３】
以上に説明したように、本発明によれば、何れかのプロセッサが特定の機能に独占されることもなく、また、負荷の低いプロセッサにジョブを割り当てることができるようになるにも拘わらず、ジョブができるだけ優先度の通りに実行されるようになる。
【発明を実施するための最良の形態】
【００１４】
以下、添付図面を参照しながら、本発明を実施するための二つの形態について、説明する。
【実施形態１】
【００１５】
まず、第１の実施形態のコンピュータの構成について説明する。
【００１６】
図１は、第１の実施形態のコンピュータ１０の構成図である。
【００１７】
第１の実施形態のコンピュータ１０は、液晶ディスプレイ等の表示装置１０ａと、キーボードやマウス等の入力装置１０ｂと、これら装置１０ａ，１０ｂが接続された本体とからなる。そして、その本体は、ストレージ１０ｃ，プロセッサ１０ｄ，及び、メモリ１０ｅを、内蔵している。ストレージ１０ｃは、各種のプログラムやデータを記憶する記憶装置である。プロセッサ１０ｄは、ストレージ１０ｃ内のプログラムに従って処理を行う演算処理装置である。メモリ１０ｅは、プロセッサ１０ｄが処理を行う際にプログラムがキャッシュされたり作業領域が展開されたりする揮発性記憶装置である。
【００１８】
このコンピュータ１０では、複数のプロセッサ１０ｄが、バスを介してメモリ１０ｅに接続されており、複数のプロセッサ１０ｄがメモリ１０ｅを共有している。また、ストレージ１０ｃには、表示装置１０ａでの出力制御，入力装置１０ｂでの入力制御，メモリ１０ｅでの記憶領域の管理，ユーザインターフェースなどを、アプリケーションに提供するＯＳ［Operating System］ソフトウエアが、導入されている。そのＯＳソフトウエアには、各プロセッサ１０ｄを密結合マルチプロセッサとして動作させるためのプロセッサ管理ソフトウエア１１が、含まれている。
【００１９】
このプロセッサ管理ソフトウエア１１は、複数のプロセッサ１０ｄのそれぞれに対し、メモリ１０ｅ上の所定容量の専用領域を割り当てるとともに、複数の専用領域のそれぞれに、その専用領域を使用するプロセッサ１０ｄのためにジョブ管理テーブル１２ａ及び状態管理テーブル１２ｂを設定する機能を、含んでいる。また、このプロセッサ管理ソフトウエア１１には、ジョブ（タスク）を各プロセッサ１０ｄに割り当てるためのプログラムとして、ジョブ割当プログラム１１ａ，状態記録プログラム１１ｂ，ジョブ選択プログラム１１ｃ，及び、ジョブ削除プログラム１１ｄを、含んでいる。図１には、これらプログラム１１ａ〜１１ｄと各プロセッサ割り当て領域とが展開された状態が、示されている。
【００２０】
図２は、ジョブ管理テーブル１２ａのデータ構造の一例を示す図である。
【００２１】
ジョブ管理テーブル１２ａは、後述のジョブ割当プログラム１１ａにより対応するプロセッサ１０ｄに割り当てられたジョブに関する情報を記憶しておくためのテーブルである。図２に示すように、ジョブ管理テーブル１２ａは、対応するプロセッサ１０ｄに割り当てられるジョブと同じ数のレコードを、有している。各レコードは、「ジョブ名」及び「優先度」のフィールドを、有している。「ジョブ名」フィールドは、そのジョブを特定する識別情報であるジョブ名が記録されるフィールドである。「優先度」フィールドは、このコンピュータ１０内の各ジョブに対し、それらの理想的な実行順を特定する情報として一意に定義される優先度が記録されるフィールドである。なお、第１の実施形態においては、優先度の数値が大きいほど、優先度が高くなる。また、このジョブ管理テーブル１２ａは、登録されているジョブの数を記録するためのフィールドを別途有している。なお、ジョブに関する情報をこのジョブ管理テーブル１２ａに記憶するプロセッサ１０ｄは、前述したジョブ記憶手段に相当する。
【００２２】
図３は、状態管理テーブル１２ｂのデータ構造の一例を示す図である。
【００２３】
状態管理テーブル１２ｂは、対応するプロセッサ１０ｄのジョブ実行に関する情報を記憶しておくためのテーブルである。図３に示すように、状態管理テーブル１２ｂは、一つのレコードを有し、そのレコードは、「ジョブ開始時刻」，「前回開始時刻」，「実行時間」及び「仕事量１００％状態フラグ」のフィールドを、有している。「ジョブ開始時刻」フィールドは、ジョブの実行の開始時刻が記録されるフィールドである。「前回開始時刻」フィールドは、直前に実行が終了したジョブについての実行開始時刻が記録されるフィールドである。「実行時間」フィールドは、直前に実行が終了したジョブについての実行に掛かった時間が実行時間として記録されるフィールドである。「仕事量１００％状態フラグ」フィールドは、直前に実行が終了したジョブについてその実行に所定の時間以上掛かったか否かを特定する情報が、仕事量１００％状態フラグとして記録されるフィールドである。
【００２４】
ジョブ割当プログラム１１ａは、例えばアイコンのクリックのような操作者の入力操作によって発生するジョブを、何れかのプロセッサ１０ｄに割り当てるためのプログラムである。このジョブ割当プログラム１１ａによるプロセスは、図１に示すように、プロセッサ１０ｄ毎に生成される。このジョブ割当（プログラムに従ってプロセッサが行う）プロセス１１ａの内容については、図４を用いて後述する。
【００２５】
状態記録プログラム１１ｂは、図３の状態管理テーブル１２ｂにジョブ実行に関する情報を記録するためのプログラムである。この状態記録プログラム１１ｂによるプロセスも、図１に示すように、プロセッサ１０ｄ毎に生成される。この状態記録（プログラムに従ってプロセッサが行う）プロセス１１ｂの内容については、図６を用いて後述する。
【００２６】
ジョブ選択プログラム１１ｃは、図３の状態管理テーブル１２ｂの内容に応じて対応するプロセッサが実行すべきジョブを決定するためのプログラムである。このジョブ選択プログラム１１ｃによるプロセスも、図１に示すように、プロセッサ１０ｄ毎に生成される。このジョブ選択（プログラムに従ってプロセッサが行う）プロセス１１ｃの内容については、図７を用いて後述する。
【００２７】
ジョブ削除プログラム１１ｃは、図２のジョブ管理テーブル１２ａから、実行が済んだジョブに係るレコードを削除するためのプログラムである。このジョブ削除プログラム１１ｄによるプロセスも、図１に示すように、プロセッサ１０ｄ毎に生成される。このジョブ削除（プログラムに従ってプロセッサが行う）プロセス１１ｃの内容については、図８を用いて後述する。
【００２８】
次に、第１の実施形態のコンピュータ１０において行われる処理について、説明する。
【００２９】
前述したように、ジョブ割当プログラム１１ａは、操作者の入力操作によってジョブが発生すると、起動される。
【００３０】
図４は、ジョブ割当プログラム１１ａによる処理の流れを示す図である。
【００３１】
処理開始後、最初のステップＳ１０１では、プロセッサ群１０ｄは、ＯＳソフトウエアを通じてジョブを受け付ける。このジョブには、既に優先度が定義されている。
【００３２】
次のステップＳ１０２では、プロセッサ群１０ｄは、複数のプロセッサ１０ｄのうち、ジョブ管理テーブル１２ａに記憶されるジョブ数が最も小さいプロセッサ１０ｄを、一つ特定する。
【００３３】
次のステップＳ１０３では、プロセッサ群１０ｄは、ステップＳ１０２で特定したプロセッサ１０ｄのジョブ管理テーブル１２ａに、ステップＳ１０１で受け付けたジョブを特定する情報を、登録する。
【００３４】
次のステップＳ１０４では、プロセッサ群１０ｄは、ステップＳ１０３でジョブを登録したジョブ管理テーブル１２ａ内の各レコードを、優先度の順に並び替える。
【００３５】
次のステップＳ１０５では、プロセッサ群１０ｄは、ステップＳ１０４でレコードを並び替えたジョブ管理テーブル１２ａに記憶されるジョブ数を１つ増やす。その後、プロセッサ群１０ｄは、図４に係るジョブ割当処理を終了する。
【００３６】
このジョブ割当処理により、新たに発生するジョブは、割り当てられているジョブの数の少ないプロセッサ１０ｄに対し、割り当てられることとなる。
【００３７】
図５は、プロセッサ１０ｄが実行する処理の流れを示す図である。
【００３８】
図５に示すように、プロセッサ１０ｄは、何れも、状態記録プロセス１１ｂ，ジョブ選択プロセス１１ｃ，ジョブ，ジョブ削除プロセス１１ｄを、この順に、繰り返し実行するようになっている。
【００３９】
図６は、状態記録プログラム１１ｂによる処理の流れを示す図である。
【００４０】
処理開始後、最初のステップＳ２０１では、状態記録（プログラムに従ってプロセッサが行う）プロセス１１ｂは、図３の状態管理テーブル１２ｂ内のレコードに含まれる仕事量１００％状態フラグを、オフに切り替える。
【００４１】
次のステップＳ２０２では、状態記録プロセス１１ｂは、図３の状態管理テーブル１２ｂ内のレコードの「ジョブ開始時刻」フィールドの値で、「前回開始時刻」フィールドの値を、上書き更新する。
【００４２】
次のステップＳ２０３では、状態記録プロセス１１ｂは、その時点の時刻で、図３の状態管理テーブル１２ｂ内のレコードの「ジョブ開始時刻」フィールドの値を、上書き更新する。
【００４３】
次のステップＳ２０４では、状態記録プロセス１１ｂは、「前回開始時刻」フィールドの値がゼロであるか否かを、判別する。そして、「前回開始時刻」フィールドの値がゼロであった場合、状態記録プロセス１１ｂは、ステップＳ２０４から処理を分岐して、図６に係る状態記録処理を終了する。一方、「前回開始時刻」フィールドの値がゼロでなかった場合、状態記録プロセス１１ｂは、ステップＳ２０５へ処理を進める。
【００４４】
ステップＳ２０５では、状態記録プロセス１１ｂは、実行時間を算出する。具体的には、状態記録プロセス１１ｂは、図３の状態管理テーブル１２ｂ内のレコードの「ジョブ開始時刻」フィールドの値から「前回開始時刻」フィールドの値を除することにより、実行時間を算出する。
【００４５】
次のステップＳ２０６では、状態記録プロセス１１ｂは、ステップＳ２０５で算出した実行時間で、図３の状態管理テーブル１２ｂ内のレコードの「実行時間」フィールドの値を、上書き更新する。
【００４６】
次のステップＳ２０７では、状態記録プロセス１１ｂは、ステップＳ２０５で算出した実行時間が所定の上限値を上回っているか否かを、判別する。そして、当該実行時間が所定の上限値を下回っていた場合、状態記録プロセス１１ｂは、ステップＳ２０７から処理を分岐して、図６に係る状態記録処理を終了する。一方、当該実行時間が所定の上限値を上回っていた場合、状態記録プロセス１１ｂは、ステップＳ２０８へ処理を進める。
【００４７】
ステップＳ２０８では、状態記録プロセス１１ｂは、図３の状態管理テーブル１２ｂ内のレコードの「ジョブ開始時刻」フィールドの値をゼロにする。
【００４８】
次のステップＳ２０９では、状態記録プロセス１１ｂは、図３の状態管理テーブル１２ｂ内のレコードに含まれる仕事量１００％状態フラグを、オンに切り替える。その後、状態記録プロセス１１ｂは、図６に係る状態記録処理を終了する。
【００４９】
この状態記録処理により、ジョブを実行する前に、直前に実行したジョブに関する情報が図３の状態管理テーブル１２ｂに記録され、仕事量１００％状態フラグの切り替えの判断が行われる。
【００５０】
図７は、ジョブ選択プログラム１１ｃによる処理の流れを示す図である。
【００５１】
処理開始後、最初のステップＳ３０１では、ジョブ選択（プログラムに従ってプロセッサが行う）プロセス１１ｃは、図３の状態管理テーブル１２ｂ内のレコードに含まれる仕事量１００％状態フラグがオンであるか否かを、判別する。そして、仕事量１００％状態フラグがオンであった場合、ジョブ選択プロセス１１ｃは、ステップＳ３０５へ処理を進める。一方、仕事量１００％状態フラグがオフであった場合、ジョブ選択プロセス１１ｃは、ステップＳ３０１からステップＳ３０２へ処理を分岐させる。
【００５２】
ステップＳ３０２では、ジョブ選択プロセス１１ｃは、自分以外の全てのプロセッサ１０ｄのジョブ管理テーブル１２ａに登録されているレコードのうち、最も優先度の高いジョブのレコードを、特定する。
【００５３】
次のステップＳ３０３では、ジョブ選択プロセス１１ｃは、ステップＳ３０２で特定したレコードをコピーして、自分のジョブ管理テーブル１２ａの先頭に追加登録する。
【００５４】
次のステップＳ３０４では、ジョブ選択プロセス１１ｃは、ステップＳ３０２で特定したレコードを、そのプロセッサ１０ｄのジョブ管理テーブル１２ａから、削除する。その後、ジョブ選択プロセス１１ｃは、ステップＳ３０５へ処理を進める。
【００５５】
ステップＳ３０５では、ジョブ選択プロセス１１ｃは、図３の状態管理テーブル１２ｂ内のレコードのうち、優先度の最も高いジョブのレコードを、次の実行対象のレコードとして特定する。その後、ジョブ選択プロセス１１ｃは、図７に係るジョブ選択処理を終了する。なお、ステップＳ３０５を実行するプロセッサ１０ｄは、前述した実行手段に相当する。
【００５６】
このジョブ選択処理により、当該プロセッサ１０ｄが次に実行すべきジョブが、一つ特定されることとなる。
【００５７】
なお、ステップＳ２０１乃至Ｓ２０９，並びに、Ｓ３０１及びＳ３０２を実行するプロセッサ１０ｄは、前述した特定手段に相当する。また、ステップＳ３０３及びＳ３０４を実行するプロセッサ１０ｄは、前述した移行手段に相当する。
【００５８】
図８は、ジョブ削除プログラム１１ｄによる処理の流れを示す図である。
【００５９】
処理開始後、最初のステップＳ４０１では、ジョブ削除（プログラムに従ってプロセッサが行う）プロセス１１ｃは、図２のジョブ管理テーブル１２ａから、実行したジョブに係るレコードを削除する。その後、ジョブ削除プロセス１１ｄは、図８に係るジョブ削除処理を終了する。なお、このステップＳ４０１を実行するプロセッサ１０ｄは、前述した削除手段に相当する。
【００６０】
このジョブ削除処理により、プロセッサ１０ｄに割り当てられたジョブの中から、実行済みのジョブが、除去される。
【００６１】
次に、第１の実施形態のコンピュータ１０の作用及び効果について、説明する。
【００６２】
コンピュータ１０の各プロセッサ１０ｄは、ジョブ割当プログラム１１ａによって自分に割り当てられたジョブを実行する前に、状態記録プロセス１１ｂ及びジョブ選択プロセス１１ｃとを順に実行する。状態記録プロセス１１ｂでは、直前のジョブの実行に時間が掛かったか否かで、プロセッサ１０ｄの負荷状態が判断される（ステップＳ２０７）。そして、ジョブの実行時間が少ないことにより負荷が低いと判断されれば、ジョブ選択プロセス１１ｃが、他のプロセッサに割り当てられているジョブのうち、最も優先度の高いジョブを探し出して（ステップＳ３０２〜Ｓ３０４）、そのジョブを次の実行対象として特定する。
【００６３】
各プロセッサ１０ｄがこのように動作することにより、負荷の掛かっているプロセッサ１０ｄが実行すべきジョブが、ジョブの実行に時間が掛からなかったプロセッサ１０ｄに、肩代わりされることとなる。
【００６４】
図９は、一方のプロセッサ１０ｄが他方のプロセッサ１０ｄのジョブを肩代わりする様子を示した模式図である。
【００６５】
図９に示す例では、第１のプロセッサ１０ｄが、「JOB001」のジョブを実行し、第２のプロセッサ１０ｄが、「JOB002」のジョブを実行している。そして、第２のプロセッサ１０ｄが、「JOB002」のジョブの実行を終えたとき、第１のプロセッサ１０ｄが、「JOB001」のジョブの実行を継続している。第２のプロセッサ１０ｄは、「JOB002」のジョブの実行を終えた後、「JOB004」のジョブを実行する前に、状態記録プロセス１１ｂにより負荷が低いと判断すると（ステップＳ２０７；ＮＯ，Ｓ３０１；ＮＯ）、第１のプロセッサ１０ｄが次回実行すべき「JOB003」のジョブを引き受け（ステップＳ３０２〜Ｓ３０４）、そのジョブを実行する。
【００６６】
このように作用する結果、システムの性能低下が防止されるとともに、ジョブができるだけ優先度の通りに行われるようになる。然も、自分が肩代わりできるジョブを探し出す処理は、各プロセッサ１０ｄがジョブの実行前に行うため、何れかのプロセッサ１０ｄが特定の機能のために独占されることもない。
【実施形態２】
【００６７】
第２の実施形態は、直前のジョブの実行状態に基づいて他のプロセッサ１０ｄのジョブを肩代わりするか否かを判断するのではなく、ジョブの実行中においてその次に実行されるべきジョブの待機状態に基づいてその待機中のジョブを他のプロセッサ１０ｄに引き渡すか否かを判断する点で、第１の実施形態と相違する。しかし、それ以外の構成については、第１の実施形態と同じである。
【００６８】
図１０は、第２の実施形態のコンピュータ１０の構成図である。
【００６９】
図１０と図１とを比較して明らかなように、第２の実施形態のコンピュータ１０は、第１の実施形態のそれと同じハードウエア構成となっている。
【００７０】
また、第２の実施形態では、プロセッサ管理ソフトウエア１１’には、状態記録プログラム１１ｂが含まれておらず、その代わりに、負荷監視プログラム１１ｇが含まれている。このため、第２の実施形態のプロセッサ管理ソフトウエア１１’には、第１の実施形態のそれとは異なる符号が付されている。
【００７１】
また、ジョブ選択プログラム１１ｅ及びジョブ削除プログラム１１ｆは、第１の実施形態のそれと処理内容が若干異なるため、第２の実施形態の当該プログラム１１ｅ，１１ｆには、第１の実施形態と異なる符号が付されている。
【００７２】
さらに、メモリ１０ｅ内において各プロセッサ１０ｄに割り当てられる所定容量の記憶領域には、ジョブ管理テーブル１３ａのみが設定される。
【００７３】
図１１は、第２の実施形態のジョブ管理テーブル１３ａのデータ構造の一例を示す図である。
【００７４】
図１１に示すように、ジョブ管理テーブル１３ａは、対応するプロセッサ１０ｄに割り当てられているジョブと同数のレコードを、有している。各レコードは、「ジョブ名」，「優先度」，「実行状況」，「待機回数」及び「次実行切替時刻」のフィールドを、有している。「ジョブ名」フィールドは、そのジョブを特定する識別情報であるジョブ名が記録されるフィールドである。「優先度」フィールドは、このコンピュータ１０内の各ジョブに対し、それらの理想的な実行順を特定する情報として一意に定義される優先度が記録されるフィールドである。なお、第２の実施形態においても、優先度の数値が大きいほど、優先度が高くなる。「実行状況」フィールドは、そのジョブの状態を特定する情報が記録されるフィールドである。なお、このフィールドに記録される情報には、「実行中」，「待機中（次実行）」，「待機中」，「実行済」がある。「待機回数」フィールドは、後述の負荷監視プログラム１１ｇが定期的に実行されたときに「待機中」であった回数が記録されるフィールドである。「次実行切替時刻」フィールドは、実行状況が「待機中」から「待機中（次実行）」に切り替えられたときの時刻が記録されるフィールドである。なお、ジョブに関する情報をこのジョブ管理テーブル１３ａに記憶するプロセッサ１０ｄは、前述したジョブ記憶手段に相当する。
【００７５】
負荷監視プログラム１１ｇは、ジョブ管理テーブル１３ａ内の「待機中（次実行）」に係るジョブの待機回数に基づいて、そのジョブを他のプロセッサ１０ｄに引き渡すか否かを判断するためのプログラムである。この負荷監視プログラム１１ｇによるプロセスは、図１０に示すように、プロセッサ１０ｄ毎に生成される。この負荷監視（プログラムに従ってプロセッサが行う）プロセス１１ｇの内容については、図１５乃至図１７を用いて後述する。
【００７６】
次に、第２の実施形態のコンピュータ１０において行われる処理について、説明する。
【００７７】
ジョブ割当プログラム１１ａは、第１の実施形態のそれと同じ機能を発揮するものである。従って、ジョブ割当プログラム１１ａのプロセスは、操作者の入力操作によってジョブが発生すると、生成され、このジョブ割当プロセス１１ａにより、新たに発生するジョブは、割り当てられているジョブの数の少ないプロセッサ１０ｄに対し、割り当てられることとなる。
【００７８】
図１２は、プロセッサ１０ｄが実行する処理の流れを示す図である。
【００７９】
図１２に示すように、プロセッサ１０ｄは、何れも、ジョブ選択プロセス１１ｅ，ジョブ，ジョブ削除プロセス１１ｆを、この順に、繰り返し実行するようになっている。なお、負荷監視プロセス１１ｇは、これらジョブ選択プロセス１１ｅ，ジョブ，及び、ジョブ削除プロセス１１ｆのループと並行して、行われる。
【００８０】
図１３は、ジョブ選択プログラム１１ｅによる処理の流れを示す図である。
【００８１】
処理開始後、最初のステップＳ５０１では、ジョブ選択（プログラムに従ってプロセッサが行う）プロセス１１ｅは、図１１のジョブ管理テーブル１３ａ内のレコードのうち、「実行状況」フィールドの値が「待機中（次実行）」であるレコードを特定し、その特定したレコードの「実行状況」フィールドの値を、「待機中（次実行）」から「実行中」に切り替える。
【００８２】
次のステップＳ５０２では、ジョブ選択プロセス１１ｅは、図１１のジョブ管理テーブル１３ａ内において「待機中」のジョブのレコードのうち、優先度が最も高いジョブのレコードを特定する。
【００８３】
次のステップＳ５０３では、ジョブ選択プロセス１１ｅは、ステップＳ５０２で特定したレコードの「実行状況」フィールドの値を、「待機中」から「待機中（次実行）」に切り替える。
【００８４】
次のステップＳ５０４では、ジョブ選択プロセス１１ｅは、その時点の時刻で、ステップＳ５０２で特定したレコードの「次実行切替時刻」フィールドの値を、上書き更新する。その後、ジョブ選択プロセス１１ｅは、図１３に係るジョブ選択処理を終了する。
【００８５】
このジョブ選択処理により、ジョブの実行の直前に、そのジョブの次に実行対象とすべきジョブが、決定されることとなる。なお、このジョブ選択処理を実行するプロセッサ１０ｄは、前述した決定手段に相当する。
【００８６】
図１４は、ジョブ削除プログラム１１ｆによる処理の流れを示す図である。
【００８７】
処理開始後、最初のステップＳ６０１では、ジョブ削除（プログラムに従ってプロセッサが行う）プロセス１１ｆは、図１１のジョブ管理テーブル１３ａ内における実行し終えたジョブに係るレコードの「実況状況」フィールドの値を、「実行中」から「実行済」へ切り替える。その後、ジョブ削除プロセス１１ｆは、図１４に係るジョブ削除処理を終了する。
【００８８】
このジョブ削除処理により、プロセッサ１０ｄに割り当てられたジョブの中から、実行済みのジョブが、除去される。
【００８９】
図１５は、負荷監視プログラム１１ｇによる処理の流れを示す図である。
【００９０】
処理開始後、最初のステップＳ７０１では、負荷監視（プログラムに従ってプロセッサが行う）プロセス１１ｇは、図１１のジョブ管理テーブル１３ａ内のレコードの中から、「待機中（次実行）」のジョブのレコードを、処理対象として特定する。
【００９１】
次のステップＳ７０２では、負荷監視プロセス１１ｇは、待機時間を算出する。具体的には、負荷監視プロセス１１ｇは、ステップＳ７０１で特定した処理対象レコードの「次実行切替時刻」フィールドの値からその時点の時刻を除することにより、待機時間を算出する。
【００９２】
次のステップＳ７０３では、負荷監視プロセス１１ｇは、ステップＳ７０２で算出した待機時間が所定の上限値を上回っているか否かを、判別する。そして、待機時間が所定の上限値を下回っていた場合、負荷監視プロセス１１ｇは、ステップＳ７０３から処理を分岐させ、図１１に係る負荷監視処理を終了する。一方、待機時間が所定の上限値を上回っていた場合、負荷監視プロセス１１ｇは、ステップＳ７０４へ処理を進める。
【００９３】
ステップＳ７０４では、負荷監視プロセス１１ｇは、割振サブルーチンを実行する。
【００９４】
図１６及び図１７は、割振サブルーチンによる処理の流れを示す図である。
【００９５】
処理開始後、最初のステップＳ８０１では、負荷監視プロセス１１ｇは、ステップＳ７０１で特定した処理対象レコードの「待機回数」フィールドの値を１つ増やす。
【００９６】
次のステップＳ８０２では、負荷監視プロセス１１ｇは、処理対象レコードの「待機回数」フィールドの値が所定の上限値を上回っているか否かを、判別する。そして、処理対象レコードの「待機回数」フィールドの値が所定の上限値を下回っていた場合、負荷監視プロセス１１ｇは、ステップＳ８０２から処理を分岐させ、図１６及び図１７に係る割振サブルーチンを終了するとともに図１５に係る負荷監視処理を終了する。一方、処理対象レコードの「待機回数」フィールドの値が所定の上限値を上回っていた場合、負荷監視プロセス１１ｇは、ステップＳ８０３へ処理を進める。
【００９７】
ステップＳ８０３では、負荷監視プロセス１１ｇは、自分以外の全てのプロセッサ１０ｄのジョブ管理テーブル１３ａに登録されているレコードの中から、処理対象レコードに含まれる優先度よりも低い優先度を含むレコードを、検索する。
【００９８】
次のステップＳ８０４では、負荷監視プロセス１１ｇは、ステップＳ８０３の検索の結果、レコードが検出できたか否かを、判別する。そして、レコードが検出できなかった場合、負荷監視プロセス１１ｇは、ステップＳ８０４から処理を分岐させ、図１６及び図１７に係る割振サブルーチンを終了するとともに図１５に係る負荷監視処理を終了する。一方、レコードが検出できた場合、負荷監視プロセス１１ｇは、ステップＳ８０５へ処理を進める。
【００９９】
ステップＳ８０５では、負荷監視プロセス１１ｇは、ステップＳ８０４で検出したレコードの中から、「実行済」のジョブのレコードを、検索する。
【０１００】
次のステップＳ８０６では、負荷監視プロセス１１ｇは、ステップＳ８０５の検索の結果、レコードが検出できたか否かを、判別する。そして、レコードが検出できなかった場合、負荷監視プロセス１１ｇは、ステップＳ８０６から処理を分岐させ、図１６及び図１７に係る割振サブルーチンを終了するとともに図１５に係る負荷監視処理を終了する。一方、レコードが検出できた場合、負荷監視プロセス１１ｇは、ステップＳ８０７へ処理を進める。
【０１０１】
なお、ステップＳ８０３乃至Ｓ８０６を実行するプロセッサ１０ｄは、前述した検索手段に相当する。
【０１０２】
ステップＳ８０７では、負荷監視プロセス１１ｇは、ステップＳ８０６で検出したレコードの中から、優先度が最も低いジョブのレコードを、特定する。
【０１０３】
次のステップＳ８０８では、負荷監視プロセス１１ｇは、ステップＳ８０７で特定したレコードが登録されているジョブ管理テーブル１３４ａにおいて、次回の実行対象とされているジョブのレコードの「実行状況」フィールドの値を、「待機中（次実行）」から「待機中」に切り替える。
【０１０４】
次のステップＳ８０９では、負荷監視プロセス１１ｇは、ステップＳ８０７で特定したレコードが登録されているジョブ管理テーブル１３ａの先頭に、ステップＳ７０１で特定された処理対象レコードのコピーを追加登録する。
【０１０５】
次のステップＳ８１０では、負荷監視プロセス１１ｇは、ステップＳ８０９で他のプロセッサ１０ｄのジョブ管理テーブル１３ａに追加されたレコードの「待機回数」フィールドの値をゼロにする。また、負荷監視プロセス１１ｇは、この時点の時刻で、当該レコードの「次実行切替時刻」フィールドの値を、上書き更新する。
【０１０６】
次のステップＳ８１１では、負荷監視プロセス１１ｇは、自分のジョブ管理テーブル１３ａ内から、処理対象レコードを削除する。
【０１０７】
次のステップＳ８１２では、負荷監視プロセス１１ｇは、自分のジョブ管理テーブル１３ａにおいて「待機中」のジョブのレコードのうち、優先度が最も高いジョブのレコードを特定する。
【０１０８】
次のステップＳ８１３では、負荷監視プロセス１１ｇは、ステップＳ８１１で特定したレコードの「実行状況」フィールドの値を、「待機中」から「待機中（次実行）」に切り替える。
【０１０９】
次のステップＳ８１４では、負荷監視プロセス１１ｇは、その時点の時刻で、ステップＳ８１１で特定したレコードの「次実行切替時刻」フィールドの値を、上書き更新する。その後、負荷監視プロセス１１ｇは、図１６及び図１７に係る割振サブルーチンを終了するとともに図１５に係る負荷監視処理を終了する。
【０１１０】
この負荷監視処理により、次回の実行対象として長い間待機させられていたジョブが、他のプロセッサに引き渡されることとなる。
【０１１１】
次に、第２の実施形態のコンピュータ１０による作用及び効果について、説明する。
【０１１２】
コンピュータ１０の各プロセッサ１０ｄは、ジョブを実行する前に、そのジョブの次に実行すべきジョブを特定する。また、各プロセッサ１０ｄは、これと並行して、負荷監視プロセス１１ｇを定期的に実行する。そして、次回の実行対象とされたジョブが待機中に、負荷監視プロセス１１ｇが実行された回数が計数され（ステップＳ８０１）、その回数が所定の上限値を超ええていた場合に（ステップＳ８０２；ＹＥＳ）、次回の実行対象とされたジョブが、そのジョブよりも優先度が低いジョブを実行し終えている他のプロセッサに、引き渡される（ステップＳ８０３〜Ｓ８１１）。
【０１１３】
各プロセッサ１０ｄがこのように動作することにより、負荷の掛かっているプロセッサ１０ｄが実行すべきジョブが、そのジョブより優先度の低いジョブの実行を既に終えているプロセッサ１０ｄに、肩代わりされることとなる。
【０１１４】
図１８は、一方のプロセッサ１０ｄが他方のプロセッサ１０ｄのジョブを肩代わりする様子を示した模式図である。
【０１１５】
図１８に示す例では、第１のプロセッサ１０ｄが、「JOB001」乃至「JOB003」のジョブが第１のプロセッサ１０ｄに割り当てられ、「JOB101」乃至「JOB1003」のジョブが第２のプロセッサ１０ｄに割り当てられ、「JOB201」乃至「JOB203」のジョブが第３のプロセッサ１０ｄに割り当てられている。そして、第１のプロセッサ１０ｄでは、「JOB001」のジョブが実行中であり、「JOB002」のジョブが次回の実行対象として待機中である。また、第２のプロセッサ１０ｄでは、「JOB101」のジョブが実行済みであり、「JOB102」のジョブが実行中であり、「JOB103」のジョブが次回の実行対象として待機中である。また、第３のプロセッサ１０ｄでは、「JOB201」のジョブが実行済みであり、「JOB202」のジョブが実行中であり、「JOB203」のジョブが次回の実行対象として待機中である。
【０１１６】
第１のプロセッサ１０ｄが、「JOB001」のジョブの実行中に「JOB002」のジョブの待機回数が所定回数を超えると（ステップＳ８０２；ＹＥＳ）、「JOB002」のジョブの優先度「254」よりも低い優先度を有し、且つ、実行済みのジョブである「JOB101」及び「JOB201」が、第２及び第３のプロセッサ１０ｄのジョブ管理テーブル１３ａから探し出され（ステップＳ８０３乃至Ｓ８０６）、そのうち最も優先度の低い「JOB201」のジョブの前に、「JOB002」のジョブが登録される（ステップＳ８０９）。この「JOB002」のジョブが引き渡された第３のプロセッサ１０ｄは、「JOB202」のジョブの実行を終えると、「JOB203」のジョブを実行する前に、「JOB002」のジョブを実行することになる。
【０１１７】
このように作用する結果、システムの性能低下が防止されるとともに、ジョブができるだけ優先度の通りに行われるようになる。然も、自分のジョブが押し付けられるプロセッサ１０ｄを探し出す処理は、各プロセッサ１０ｄがジョブの実行中に行うため、何れかのプロセッサが特定の機能のために独占されることもない。
【０１１８】
（付記１）
密結合マルチプロセッサシステムを構成する各プロセッサを、何れも、
自分に割り当てられたジョブを特定するジョブ情報とそのジョブに定義されている優先度とを含むレコードを、メモリ内の専用のテーブルに記憶するジョブ記憶手段，
前記テーブルに記憶されているレコードのうち優先度が最も高いレコードを決定し、決定したレコードのジョブ情報にて特定されるジョブを実行する実行手段，
前記実行手段がジョブを実行し終えると、前記テーブルからそのジョブに対応するレコードを削除する削除手段，
前記実行手段がジョブの実行に掛けた時間が所定の上限値を下回っている場合に、自分以外の全てのプロセッサのテーブルから、優先度が最も高いレコードを特定する特定手段，及び、
前記特定手段が特定したレコードを、他のプロセッサのテーブルから自分専用のテーブルに移行させる移行手段
として機能させる
ことを特徴とするジョブ割当プログラム。
【０１１９】
（付記２）
密結合マルチプロセッサシステムを構成する各プロセッサを、何れも、
自分に割り当てられたジョブを特定するジョブ情報とそのジョブに定義されている優先度とを含むレコードを、メモリ内の専用のテーブルに記憶するジョブ記憶手段，
前記テーブルに記憶されているレコードのうち優先度が最も高いレコードを決定し、決定したレコードのジョブ情報にて特定されるジョブを実行する実行手段，
前記実行手段がジョブを実行し終えると、前記テーブルからそのジョブに対応するレコードを削除する削除手段，
前記実行手段がジョブの実行に掛けた時間が所定の上限値を下回っている場合に、自分以外の全てのプロセッサのテーブルから、優先度が最も高いレコードを特定する特定手段，及び、
前記特定手段が特定したレコードを、他のプロセッサのテーブルから自分専用のテーブルに移行させる移行手段
として機能させるジョブ割当プログラム
を格納したことを特徴とするコンピュータ可読媒体。
【０１２０】
（付記３）
密結合マルチプロセッサシステムを構成する各プロセッサが、何れも、
自分に割り当てられたジョブを特定するジョブ情報とそのジョブに定義されている優先度とを含むレコードを、メモリ内の専用のテーブルに記憶するジョブ記憶手順，
前記テーブルに記憶されているレコードのうち優先度が最も高いレコードを決定し、決定したレコードのジョブ情報にて特定されるジョブを実行する実行手順，
前記実行手順においてジョブを実行し終えると、前記テーブルからそのジョブに対応するレコードを削除する削除手順，
前記実行手順においてジョブの実行に掛けた時間が所定の上限値を下回っている場合に、自分以外の全てのプロセッサのテーブルから、優先度が最も高いレコードを特定する特定手順，及び、
前記特定手順において特定したレコードを、他のプロセッサのテーブルから自分専用のテーブルに移行させる移行手順
を実行する
ことを特徴とするジョブ割当方法。
【０１２１】
（付記４）
密結合マルチプロセッサシステムを構成する各プロセッサを、何れも、
自分に割り当てられたジョブを特定するジョブ情報とそのジョブに定義されている優先度とを含むレコードを、メモリ内の専用のテーブルに記憶するジョブ記憶手段，
前記テーブルに記憶されているレコードのうち優先度が最も高いレコードにて特定されるジョブを実行する実行手段，
前記実行手段がジョブの実行を開始するときに、前記テーブル内においてその次に優先度の高いレコードを、前記実行手段の次回の実行対象として決定する決定手段，
前記決定手段が次回の実行対象を決定してから所定の時間が経過した場合に、自分以外の全てのプロセッサのテーブルから、その実行対象よりも優先度が低く且つジョブが実行済みのレコードを、検索する検索手段，及び、
前記検索手段が何れかのレコードを検出できた場合に、検出したレコードのうち、最も優先度の高いレコードを有するプロセッサのテーブルへ、自分専用のテーブルから、次回の実行対象のレコードを移行させる移行手段
として機能させる
ことを特徴とするジョブ割当プログラム。
【０１２２】
（付記５）
密結合マルチプロセッサシステムを構成する各プロセッサを、何れも、
自分に割り当てられたジョブを特定するジョブ情報とそのジョブに定義されている優先度とを含むレコードを、メモリ内の専用のテーブルに記憶するジョブ記憶手段，
前記テーブルに記憶されているレコードのうち優先度が最も高いレコードにて特定されるジョブを実行する実行手段，
前記実行手段がジョブの実行を開始するときに、前記テーブル内においてその次に優先度の高いレコードを、前記実行手段の次回の実行対象として決定する決定手段，
前記決定手段が次回の実行対象を決定してから所定の時間が経過した場合に、自分以外の全てのプロセッサのテーブルから、その実行対象よりも優先度が低く且つジョブが実行済みのレコードを、検索する検索手段，及び、
前記検索手段が何れかのレコードを検出できた場合に、検出したレコードのうち、最も優先度の高いレコードを有するプロセッサのテーブルへ、自分専用のテーブルから、次回の実行対象のレコードを移行させる移行手段
として機能させるジョブ割当プログラム
を格納したことを特徴とするコンピュータ可読媒体。
【０１２３】
（付記６）
密結合マルチプロセッサシステムを構成する各プロセッサが、何れも、
自分に割り当てられたジョブを特定するジョブ情報とそのジョブに定義されている優先度とを含むレコードを、メモリ内の専用のテーブルに記憶するジョブ記憶手順，
前記テーブルに記憶されているレコードのうち優先度が最も高いレコードにて特定されるジョブを実行する実行手順，
前記実行手順においてジョブの実行を開始するときに、前記テーブル内においてその次に優先度の高いレコードを、前記実行手順における次回の実行対象として決定する決定手順，
前記決定手順において次回の実行対象を決定してから所定の時間が経過した場合に、自分以外の全てのプロセッサのテーブルから、その実行対象よりも優先度が低く且つジョブが実行済みのレコードを、検索する検索手順，及び、
前記検索手順において何れかのレコードを検出できた場合に、検出したレコードのうち、最も優先度の高いレコードを有するプロセッサのテーブルへ、自分専用のテーブルから、次回の実行対象のレコードを移行させる移行手順
を実行する
ことを特徴とするジョブ割当方法。
【図面の簡単な説明】
【０１２４】
【図１】第１の実施形態のコンピュータの構成図
【図２】ジョブ管理テーブルのデータ構造の一例を示す図
【図３】状態管理テーブルのデータ構造の一例を示す図
【図４】ジョブ割当プログラムによる処理の流れを示す図
【図５】プロセッサが実行する処理の流れを示す図
【図６】状態記録プログラムによる処理の流れを示す図
【図７】ジョブ選択プログラムによる処理の流れを示す図
【図８】ジョブ削除プログラムによる処理の流れを示す図
【図９】一方のプロセッサが他方のプロセッサのジョブを肩代わりする様子を示した模式図
【図１０】第２の実施形態のコンピュータの構成図
【図１１】第２の実施形態のジョブ管理テーブルのデータ構造の一例を示す図
【図１２】プロセッサが実行する処理の流れを示す図
【図１３】ジョブ選択プログラムによる処理の流れを示す図
【図１４】ジョブ削除プログラムによる処理の流れを示す図
【図１５】負荷監視プログラムによる処理の流れを示す図
【図１６】割振サブルーチンによる処理の流れを示す図
【図１７】割振サブルーチンによる処理の流れを示す図
【図１８】一方のプロセッサが他方のプロセッサのジョブを肩代わりする様子を示した模式図
【符号の説明】
【０１２５】
１０    コンピュータ
１０ａ  表示装置
１０ｂ  入力装置
１０ｃ  ストレージ
１０ｄ  プロセッサ
１０ｅ  メモリ
１１    プロセッサ管理ソフトウエア
１１ａ  ジョブ割当プログラム
１１ｂ  状態記録プログラム
１１ｃ  ジョブ削除プログラム
１１ｃ  ジョブ選択プログラム
１１ｄ  ジョブ削除プログラム
１２ａ  ジョブ管理テーブル
１２ｂ  状態管理テーブル
１１’  プロセッサ管理ソフトウエア
１１ｅ  ジョブ選択プログラム
１１ｆ  ジョブ削除プログラム
１１ｇ  負荷監視プログラム
１３ａ  ジョブ管理テーブル
【図１】
2008139907.tif 000003
【図２】
2008139907.tif 000004
【図３】
2008139907.tif 000005
【図４】
2008139907.tif 000006
【図５】
2008139907.tif 000007
【図６】
2008139907.tif 000008
【図７】
2008139907.tif 000009
【図８】
2008139907.tif 000010
【図９】
2008139907.tif 000011
【図１０】
2008139907.tif 000012
【図１１】
2008139907.tif 000013
【図１２】
2008139907.tif 000014
【図１３】
2008139907.tif 000015
【図１４】
2008139907.tif 000016
【図１５】
2008139907.tif 000017
【図１６】
2008139907.tif 000018
【図１７】
2008139907.tif 000019
【図１８】
2008139907.tif 000020