(57)【要約】【課題】複数のノードで構成される並列型のバッチ処理システムにおいて、同一データへのＩ／Ｏ処理待ちによるボトルネックを回避し、計算ノードの利用効率を向上させる。【解決手段】ジョブ割当装置３のサブジョブ実行部３０２が実行中のサブジョブが共有データ４２２へのアクセスを排他されると、リトライせずに処理を中断し、処理状態をサスペンドして共有データＩ／Ｏ処理待ちキュー３１４に格納し、新規サブジョブの実行を開始する。ある新規サブジョブの共有データの処理が終了すると、共有データＩ／Ｏ処理待ちキュー３１４から同一の共有データに対する処理を含むジョブを抽出し、処理待ちの共有データを一括で実行する。サスペンドされたサブジョブの処理を再開するときは、そのサブジョブの処理が中断した地点から処理を開始する。【選択図】図１
2011076304.tif 000002
【特許請求の範囲】
【請求項１】
ジョブを所定の処理単位のサブジョブに分割し複数のジョブ割当装置に振り分けるジョブ振分装置と、前記振り分けられたサブジョブをＤＢサーバ内に記憶された分割データおよび共有データにアクセスすることで処理する前記複数のジョブ割当装置と、前記分割データおよび前記共有データのアクセスを前記ジョブ割当装置ごとに管理する前記ＤＢサーバとが、通信ネットワークを介して接続されるジョブ割当システムに備わる前記ジョブ割当装置であって、
前記サブジョブが記憶されるサブジョブキュー、前記サブジョブの処理状態の進捗状況が記憶されるサブジョブ進捗管理情報、および前記サブジョブのうち共有データ処理待ちのサブジョブが記憶される共有データＩ／Ｏ処理待ちキュー情報が格納される記憶部と、
前記サブジョブ進捗管理情報の更新を行い、前記サブジョブ進捗管理情報を参照して、未処理のサブジョブを検索するサブジョブ制御部と、
前記検索された未処理のサブジョブを前記サブジョブキューから取得し、前記ＤＢサーバの前記分割データおよび前記共有データにアクセスすることによりサブジョブを実行するサブジョブ実行部と、
前記サブジョブ実行部が、前記共有データの処理に失敗した場合に、前記サブジョブの実行を一時中断して、前記一時中断した処理待ちのサブジョブの進捗状況を、前記共有データＩ／Ｏ処理待ちキュー情報に登録するキュー操作部と、を備え、
前記サブジョブ実行部は、前記サブジョブの実行状態を一時中断した後に、前記サブジョブキューから新たな前記未処理のサブジョブを取得して前記共有データの処理を行い、
当該処理が成功した場合に、前記サブジョブ制御部が、前記処理待ちのサブジョブのうち、当該処理が成功した共有データと同一の前記共有データにアクセスを要求するサブジョブを前記共有データＩ／Ｏ処理待ちキュー情報から抽出し、
前記サブジョブ実行部が、前記抽出したサブジョブの前記共有データの処理を実行すること
を特徴とするジョブ割当装置。
【請求項２】
前記サブジョブの実行が一時中断したときの、前記サブジョブの中断した実行状態に関する情報を保存する共有データＩ／Ｏ処理待ちキューを、前記記憶部にさらに備え、
前記キュー操作部は、前記サブジョブ実行部が、前記共有データの処理に失敗したときに、前記サブジョブの実行状態に関する情報を収集して前記共有データＩ／Ｏ処理待ちキューに保存し、
さらに、前記キュー操作部は、前記サブジョブ制御部が、前記共有データＩ／Ｏ処理待ちキュー情報から前記処理待ちのサブジョブを抽出すると、当該抽出された処理待ちのサブジョブの前記実行状態に関する情報を前記共有データＩ／Ｏ処理待ちキューから取得し、前記中断したときのサブジョブの実行状態を復元し、
前記サブジョブ実行部が、前記一時中断した実行状態の時点から当該処理待ちのサブジョブの処理を実行すること
を特徴とする請求項１に記載のジョブ割当装置。
【請求項３】
前記サブジョブの中断した実行状態に関する情報は、前記サブジョブの全体の処理に対する進捗度合を示すチェックポイント、前記サブジョブの入力元データ名および出力先データ名、ならびに前記一時中断時の情報が記憶される未出力データ項目および未出力データ値、であることを特徴とする請求項２に記載のジョブ割当装置。
【請求項４】
ジョブを所定の処理単位のサブジョブに分割し複数のジョブ割当装置に振り分けるジョブ振分装置と、前記振り分けられたサブジョブをＤＢサーバ内に記憶された分割データおよび共有データにアクセスすることで処理する前記複数のジョブ割当装置と、前記分割データおよび前記共有データのアクセスを前記ジョブ割当装置ごとに管理する前記ＤＢサーバとが、通信ネットワークを介して接続されるジョブ割当システムに備わる前記ジョブ割当装置に用いられるジョブ割当方法であって、
前記ジョブ割当装置は、
前記サブジョブが記憶されるサブジョブキュー、前記サブジョブの処理状態の進捗状況が記憶されるサブジョブ進捗管理情報、および前記サブジョブのうち共有データ処理待ちのサブジョブが記憶される共有データＩ／Ｏ処理待ちキュー情報を格納する記憶部、を備え、
前記サブジョブ進捗管理情報を参照して、未処理のサブジョブを検索するステップと、
前記検索された未処理のサブジョブを前記サブジョブキューから取得し、前記ＤＢサーバの前記分割データおよび前記共有データにアクセスすることによりサブジョブを実行するステップと、
前記共有データの処理に失敗した場合に、前記サブジョブの実行を一時中断して、前記一時中断した処理待ちのサブジョブの進捗状況を、前記共有データＩ／Ｏ処理待ちキュー情報に登録するステップと、
前記サブジョブの実行状態を一時中断した後に、前記サブジョブキューから新たな前記未処理のサブジョブを取得して前記共有データの処理を行うステップと、
当該処理が成功した場合に、前記処理待ちのサブジョブのうち、当該処理が成功した共有データと同一の前記共有データにアクセスを要求するサブジョブを前記共有データＩ／Ｏ処理待ちキュー情報から抽出するステップと、
前記抽出したサブジョブの前記共有データの処理を実行するステップと、
を実行することを特徴とするジョブ割当方法。
【請求項５】
前記サブジョブの実行が一時中断したときの、前記サブジョブの中断した実行状態に関する情報を保存する共有データＩ／Ｏ処理待ちキューを、前記記憶部にさらに備え、
前記共有データの処理に失敗したときに、前記サブジョブの実行状態に関する情報を収集して前記共有データＩ／Ｏ処理待ちキューに保存するステップと、
前記共有データＩ／Ｏ処理待ちキュー情報から前記処理待ちのサブジョブを抽出するとき、当該抽出された処理待ちのサブジョブの前記実行状態に関する情報を前記共有データＩ／Ｏ処理待ちキューから取得し、前記中断したときのサブジョブの実行状態を復元するステップと、
前記一時中断した実行状態の時点から当該処理待ちのサブジョブの処理を実行するステップと、
をさらに実行することを特徴とする請求項４に記載のジョブ割当方法。
【請求項６】
請求項４または請求項５に記載のジョブ割当方法をコンピュータに実行させるためのジョブ割当プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、金融、流通、産業などのバッチ処理システムに用いる、ジョブ割当装置、ジョブ割当方法およびジョブ割当プログラムに関する。
【背景技術】
【０００２】
近年、複数の計算機をネットワーク経由で結びつけ、強力な計算リソースを提供するグリッド技術が注目されており、この技術をバッチ処理に適用して高速化する方法が実現されている。バッチ処理のさらなる高速化を目的として、ジョブの実行順序を制御して計算ノードの有効活用を図る方法が提案されている（例えば、特許文献１参照）。
【０００３】
この特許文献１に記載の技術は、ジョブを複数台の計算機で並列処理するとき、優先度の低いジョブのタスクを処理待ちタスクキューに退避させ、優先度の高いジョブを先行して割り当てることで計算ノードの利用効率を向上させるものである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−２２６０２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載されたジョブの実行順序を制御する技術は、プロセスの並列化を目的としたものであり、データアクセスの並列性は考慮されていない。全計算ノードが、読込、書込をする共有データに対する処理が多い場合、共有データのＩ／Ｏ（Input/Output）処理がボトルネックとなり、計算ノードのＣＰＵ（Central Processing Unit）を有効に使い切れない。
【０００６】
このような背景に鑑みて本発明がなされたのであり、本発明は、Ｉ／Ｏ処理待ちによるボトルネックを回避し、計算ノードの利用効率を向上させることができる、ジョブ割当装置、ジョブ割当方法およびジョブ割当プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、ジョブを並列化して複数の計算機（ジョブ割当装置）に振り分け、データアクセスを伴う処理を実行する並列型のバッチ処理システムにおいて、共有データへのアクセスが排他された場合の処理を制御する。
あるジョブが共有データへのアクセスを排他されると、リトライせずに処理を中断して処理状態をサスペンドしてキューに保存し、新規ジョブの実行を開始する。
ある新規ジョブの共有データの処理が終了すると、キューテーブルを参照してサスペンドされた複数のジョブから同一の共有データに対する処理を含むジョブを抽出し、処理待ちの共有データを一括で実行する。
【発明の効果】
【０００８】
本発明によれば、Ｉ／Ｏ処理待ちによるボトルネックを回避し、計算ノードの利用効率を向上させる、ジョブ割当装置、ジョブ割当方法およびジョブ割当プログラムを提供することができる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態に係るジョブ割当装置を含むジョブ割当システムの構成例を示す機能ブロック図である。
【図２】本実施形態に係るサブジョブ管理テーブルのデータ構成の一例を示す図である。
【図３】本実施形態に係るサブジョブ進捗管理テーブルのデータ構成の一例を示す図である。
【図４】本実施形態に係る共有データＩ／Ｏ処理待ちキューテーブルのデータ構成の一例を示す図である。
【図５】本実施形態に係る共有データＩ／Ｏ処理待ちキューのデータ構成の一例を示す図である。
【図６】本実施形態に係るロックテーブルのデータ構成の一例を示す図である。
【図７】本実施形態に係るジョブ割当方法を説明するためのシーケンス図である。
【図８】本実施形態に係るジョブ割当方法を説明するためのシーケンス図である。
【図９】本実施形態に係るジョブ割当方法を説明するためのシーケンス図である。
【図１０】本実施形態に係るジョブ割当方法を説明するためのシーケンス図である。
【図１１】本実施形態に係るサブジョブの存在場所の時系列変化を説明するための図である。
【図１２】本発明を適用する一例である金融機関の集計処理を説明するための図である。
【発明を実施するための形態】
【００１０】
次に、本発明を実施するための形態（「実施形態」という）について、適宜図面を参照しながら詳細に説明する。
【００１１】
本実施形態においては、すべてのサブジョブが共有データ処理を行うバッチ処理の例として、特定項目の合計値を求める集計処理を例として説明する。この集計バッチ処理をグリッド環境で実行する。
【００１２】
図１２は、本発明を適用する一例である金融機関の集計処理を説明するための図である。
ここで、図１２（ａ）に示すジョブネットとは、実行順序を関連付けたジョブの集まりであり、ジョブネットを実行すると、ジョブネット中のジョブが実行順序に従って実行される。また、図１２（ｂ）に示すジョブとは、業務を構成する要素の最小単位であり、具体的には、コマンド、シェルスクリプト、Windows（登録商標）実行ファイル等の集まりである。
この図１２（ａ）は、例えば、金融機関（銀行）の支店が、営業日当日の取引結果を集計し（集計処理）、伝票と請求書データと作成し（伝票作成および請求書作成）、売上を計算し（売上計算）、帳票を出力する（帳票出力）という各ジョブの処理順序をジョブネットとして示している。また、図１２（ｂ）は、図１２（ａ）のジョブネットの中の一つのジョブである「集計処理」の内容を示し、「集計処理」は、さらに細かい「データ抽出」「会計計算」「個人マスタ更新」「部店マスタ更新」の各ジョブステップを顧客単位で繰り返すループ処理を行う。図１２（ｃ）に示すサブジョブは、このジョブのプロセスを並列化するためにループ処理に着目し、ジョブを所定の処理単位で分割したものである。例えば、顧客単位の０００１番から３０００番までを処理するジョブがあるとすると、０００１番から１０００番、１００１番から２０００番、２００１番から３０００番のサブジョブに分割して、並列処理を行う。
【００１３】
本発明は、ジョブをサブジョブに分割して、そのサブジョブを複数の計算機（ジョブ割当装置）に振り分け、大量のデータアクセスを伴う処理を実行する並列型のバッチ処理システムにおいて、ジョブの入出力データを管理するＤＢサーバ内の共有データへのアクセスが排他された場合の処理を制御する。
例えば、金融機関の集計処理においては、ＤＢサーバ内に備わる、個々の顧客単位の取引等を管理する分割データと、支店ごとの１日の処理合計等のデータを管理する共有データとにアクセスすることが必要となる。従来の並列型の集計処理においては、共有データに計算機がアクセスしたときに、他の計算機がその共有データにアクセスしていることにより排他処理がなされると、リトライを繰り返した後、処理エラーとなっていた。本発明においては、ある計算機によるサブジョブが共有データへのアクセスを排他されると、リトライせずに処理を中断して処理状態をサスペンド（一時中断）しそのキューを保存し、次の新規サブジョブの実行を開始する。
そして、新規サブジョブの共有データへのアクセスが成功すると、保存したキューテーブルを参照してサスペンドされたサブジョブから同一の共有データにアクセスを要求するサブジョブを抽出し、処理待ちとなっていた共有データに対する処理を一括で実行することにより集計処理を行う。
【００１４】
図１は、本実施形態に係るジョブ割当装置３を含むジョブ割当システム５の構成例を示す機能ブロック図である。
ジョブ割当システム５は、バッチ処理を実行するシステムであり、ジョブ投入装置１と、サブジョブ振分装置２と、複数のグリッドノード（ジョブ割当装置）３（３ａ，３ｂ，３ｃ）と、ＤＢ（DataBase）サーバ４と、が通信ネットワーク６を介して接続される。なお、グリッドノード（ジョブ割当装置）３（３ａ，３ｂ，３ｃ）は、３つに限定されることはなく、複数のグリッドノード３を備えていればよい。
【００１５】
まず、このジョブ割当システム５のジョブ割当処理の概略を説明する。
ジョブ投入装置１からジョブを投入されたサブジョブ振分装置２は、ジョブを所定の処理単位で分割し、その分割したサブジョブを各グリッドノード３（３ａ，３ｂ，３ｃ）へ振り分ける。そして、サブジョブを振り分けられたグリッドノード３は、サブジョブを実行し、ＤＢサーバ４の分割データ４２１と共有データ４２２にアクセスする。
この共有データへのアクセスの際、グリッドノード３は、サブジョブの共有データ４２２へのアクセスを排他されると、リトライせずに処理を中断することにより処理状態をサスペンド（一時中断）して共有データＩ／Ｏ処理待ちキューテーブル（共有データＩ／Ｏ処理待ちキュー情報）３１３に登録し、次の新規サブジョブの実行を開始する。
次に、グリッドノード３は、新規サブジョブの共有データの処理に成功すると、共有データＩ／Ｏ処理待ちキューテーブル３１３を参照してサスペンドされた複数のサブジョブから同一の共有データに対する処理を含むサブジョブを抽出し、処理待ちの共有データ処理を一括で実行する。このとき、サスペンドされたサブジョブの処理の再開は、サブジョブの最初からではなく処理が中断した地点から処理を開始する。このようにすることで、Ｉ／Ｏ処理待ちによるボトルネックを回避する。
【００１６】
次に、各装置について具体的に説明する。
ジョブ投入装置１は、ジョブを記憶し、その記憶したジョブをサブジョブ振分装置２へ送信する。このジョブ投入装置１は、制御部１０と、メモリ部１１と、記憶部１２と、入出力部１３と、通信部１４とを含んで構成される。
【００１７】
制御部１０は、ジョブ投入部１０１を含んで構成され、このジョブ投入部１０１が、記憶部１２内のジョブネット保存部１２２に記憶されたジョブネットから、ジョブを取り出してジョブ保存部１２１に記憶し、その記憶したジョブを通信部１４を介してサブジョブ振分装置２へ送信する。
メモリ部１１は、ＲＡＭ（Random Access Memory）等の記憶手段からなり、制御部１０の処理に必要な情報を一時的に記憶する。
記憶部１２は、ジョブ保存部１２１と、ジョブネット保存部１２２を含んで構成される。この記憶部１２は、ハードディスク、フラッシュメモリ等の記憶手段からなり、制御部１０の処理を行うためのプログラム等を記憶する。
入出力部１３は、外部装置から制御部１０の処理に関する指示を受け付ける。また、制御部１０が生成した情報を外部装置に出力する。なお、この入出力部１３は、入力インタフェースと出力インタフェースとから構成される。
通信部１４は、ＬＡＮ（Local Area Network）や専用回線を介して各装置との情報の送受信を行うための通信インタフェースからなる。
なお、この制御部１０の機能は、例えばジョブ投入装置１の記憶部１２に記憶されたプログラムをＣＰＵがメモリ部１１に展開し実行することで実現される。
【００１８】
次に、サブジョブ振分装置２は、ジョブ投入装置１から取得したジョブを所定の処理単位に分割し、その分割したサブジョブを、各グリッドノード３へ振り分ける。また、サブジョブ振分装置２は、制御部２０と、メモリ部２１と、記憶部２２と、入出力部２３と、通信部２４とを含んで構成される。
なお、メモリ部２１、入出力部２３、および通信部２４は、ジョブ投入装置１のメモリ部１１、入出力部１３、および通信部１４と同じ機能を備えるため説明は省略する。
【００１９】
制御部２０は、サブジョブ振分装置２の全体の制御を司り、ジョブ分割部２０１と、サブジョブ振分部２０２と、サブジョブ管理部２０３とを含んで構成される。なお、この制御部２０の機能は、例えばサブジョブ振分装置２の記憶部２２に記憶されたプログラムをＣＰＵがメモリ部２１に展開し実行することで実現される。
ジョブ分割部２０１は、ジョブ投入装置１から取得したジョブを所定の処理単位に分割してサブジョブを生成し、記憶部２２内のサブジョブ保存部２２１に保存する。
サブジョブ振分部２０２は、サブジョブを振り分けるグリッドノード３（３ａ，３ｂ，３ｃ）を決定し、その決定したグリッドノード３（３ａ，３ｂ，３ｃ）に、サブジョブを通信部２４を介して送信する。また、サブジョブ振分部２０２には、サブジョブの振分を決定する際に、サスペンド（一時中断）できるジョブの所定数が設定され、サブジョブ振分部２０２は、その所定数を超えない範囲でジョブを振り分ける。これにより、グリッドノード３間のジョブ実行終了時間のばらつきを抑えることができる。
サブジョブ管理部２０３は、各グリッドノード３（３ａ，３ｂ，３ｃ）に振り分けた各サブジョブのデータ処理の進捗情報を、記憶部２２内のサブジョブ管理テーブル２２２（後記する図２参照）に記憶し管理する。
【００２０】
記憶部２２は、ジョブ分割部２０１が分割したサブジョブを保存するサブジョブ保存部２２１と、サブジョブ管理テーブル２２２とを含んで構成され、ハードディスク、フラッシュメモリ等の記憶手段からなる。
【００２１】
図２は、本実施形態に係るサブジョブ管理テーブル２２２のデータ構成の一例を示す図である。
サブジョブ管理テーブル２２２は、サブジョブごとに１レコードからなる情報であり、図２に示すように、ジョブＩＤ１００１、サブジョブＩＤ１００２、振分先ノード１００３、および進捗状況１００４のデータ項目を含んで構成される。
【００２２】
ジョブＩＤ１００１は、サブジョブに分割される前におけるジョブごとの固有な識別子である。サブジョブＩＤ１００２は、ジョブ分割部２０１により分割された各サブジョブに付された固有の識別子である。振分先ノード１００３は、サブジョブ振分部２０２がサブジョブを振り分けた各グリッドノード３（３ａ，３ｂ、３ｃ）のノード名である。また、進捗状況１００４は、サブジョブ管理部２０３により、サブジョブのデータ処理の進捗状況に応じて、「未処理」「実行中」「完了」のいずれかが登録される。
【００２３】
図１に戻り、グリッドノード（ジョブ割当装置）３について説明する。グリッドノード３は、ＤＢサーバ４にアクセスすることで、サブジョブを実行する装置であり、制御部３０と、メモリ部３１と、記憶部３２と、入出力部３３と、通信部３４とを含んで構成される。
なお、入出力部３３および通信部３４は、ジョブ投入装置１の入出力部１３および通信部１４と同じ機能を備えるため説明は省略する。
【００２４】
制御部３０は、グリッドノード３全体の制御を司り、サブジョブ制御部３０１と、サブジョブ実行部３０２と、キュー操作部３０３と、キュー管理部３０４とを含んで構成される。
なお、この制御部３０の機能は、例えばグリッドノード３の記憶部３２に記憶されたプログラムをＣＰＵがメモリ部３１に展開し実行することで実現される。
【００２５】
サブジョブ制御部３０１は、後記するメモリ部３１内のサブジョブ進捗管理テーブル（サブジョブ進捗管理情報）３１２（図３）を参照し、未処理のサブジョブを検索する。そして、サブジョブ制御部３０１は、キュー操作部３０３を介して、検索した未処理のサブジョブをサブジョブ実行部３０２へ割り当てる。また、サブジョブ制御部３０１は、サブジョブ進捗管理テーブル３１２の更新を行う。
【００２６】
サブジョブ実行部３０２は、サブジョブの記述に従って、データ入力、データ処理、データ出力等を実行する。このとき、サブジョブ実行部３０２は、サブジョブ全体の処理における前半部分の「分割データ」に対する処理を先ず実行し、その後に、後半部分である「共有データ」の処理を実行する。また、サブジョブ実行部３０２は、後記する共有データＩ／Ｏ処理待ちキューテーブル３１３（図４参照）の更新を行う。
【００２７】
キュー操作部３０３は、サブジョブの保存、取り出しの指示を行い、サブジョブが共有データの処理待ち状態になったときに、そのサブジョブの実行状態に関する情報の収集を行う。
具体的には、キュー操作部３０３は、サブジョブ振分装置２から通信部３４を介して受信したサブジョブを、メモリ部３１内のサブジョブキュー３１１に保存する。また、キュー操作部３０３は、サブジョブ制御部３０１からの命令を受け、サブジョブをサブジョブキュー３１１から取得し、サブジョブ実行部３０２へ送信する。さらに、キュー操作部３０３は、サブジョブ実行部３０２が共有データの処理に失敗した場合に、サブジョブの実行状態をサスペンドしてキューに保存するために必要な情報を収集し、共有データＩ／Ｏ処理待ちキュー３１４（後記する図５参照）に保存する。また、キュー操作部３０３は、サブジョブ実行部３０２が共有データの処理に成功した場合に、共有データを処理したサブジョブと、同一の共有データにアクセスを要求するサブジョブを共有データＩ／Ｏ処理待ちキュー３１４から取得し、その実行状態を復元する処理を行う。
【００２８】
キュー管理部３０４は、メモリ部３１内のサブジョブ進捗管理テーブル３１２を用いて、未処理または共有処理待ちのサブジョブ数を確認し、通信部３４を介して、その情報をサブジョブ振分装置２へ送信する。
【００２９】
次に、メモリ部３１は、サブジョブ振分装置２から送信されたサブジョブが記憶されるサブジョブキュー３１１と、サブジョブ進捗管理テーブル３１２（図３参照）と、共有データＩ／Ｏ処理待ちキューテーブル３１３（図４参照）と、共有データＩ／Ｏ処理待ちキュー３１４（図５参照）とを含んで構成される。なお、メモリ部３１内に記憶されたこれらの情報は、記憶部３２内に記憶されていてもよい。
【００３０】
図３は、本実施形態に係るサブジョブ進捗管理テーブル（サブジョブ進捗管理情報）３１２のデータ構成の一例を示す図である。
サブジョブ進捗管理テーブル３１２は、グリッドノード３に配置されたサブジョブごとに１レコードからなる情報であり、図３に示すように、ジョブＩＤ１００１、サブジョブＩＤ１００２、振分元１００５、およびサブジョブ進捗状況１００６のデータ項目を含んで構成される。
【００３１】
ここで、振分元１００５は、取得したサブジョブの振分元となるサブジョブ振分装置２のノード名である。また、サブジョブ進捗状況１００６は、サブジョブ制御部３０１により、サブジョブのデータ処理の進捗状態に応じて、「未処理」「実行中」「共有処理待ち」「完了」のいずれかの情報が格納される。この「共有処理待ち」は、サブジョブ実行部３０２が、共有データの処理をできずに、そのサブジョブが、共有データＩ／Ｏ処理待ちキュー３１４（図５参照）に保存されている処理待ち状態を示すものである。
【００３２】
図４は、本実施形態に係る共有データＩ／Ｏ処理待ちキューテーブル（共有データＩ／Ｏ処理待ちキュー情報）３１３のデータ構成の一例を示す図である。
共有データＩ／Ｏ処理待ちキューテーブル３１３は、共有データに対するアクセスが排他されたサブジョブごとに１レコードからなる情報であり、図４に示すように、ジョブＩＤ１００１、サブジョブＩＤ１００２、キューＩＤ１００７、および共有データＩＤ１００８のデータ項目を含んで構成される。
【００３３】
ここで、キューＩＤ１００７は、サブジョブが振り分けられた自己のグリッドノード３上のキューと他のグリッドノード３上のキューとを区別するためのキュー識別子である。例えば、グリッドノード３（３ａ）に振り分けられたサブジョブについては、「3a_SpdQ」のキューＩＤ１００７が付され、グリッドノード３（３ｂ）に振り分けられたサブジョブについては、「3b_SpdQ」が付される。また、共有データＩＤ１００８は、そのサブジョブが処理を要求し処理待ちとなった共有データ４２２の識別子を示す。
【００３４】
図５は、本実施形態に係る共有データＩ／Ｏ処理待ちキュー３１４のデータ構成の一例を示す図である。
共有データＩ／Ｏ処理待ちキュー３１４は、サブジョブのサスペンド状態を保存するための情報であり、ヘッダ部１００９と本体部１０１０とを備える。
【００３５】
ヘッダ部１００９は、ジョブＩＤ１００１、サブジョブＩＤ１００２、キューＩＤ１００７、および共有データＩＤ１００８のデータ項目を備える。これらの情報は、図４に示した共有データＩ／Ｏ処理待ちキューテーブル３１３の１レコードと同一内容のデータ項目である。
【００３６】
本体部１０１０には、サブジョブ１０１１、チェックポイント１０１２、入力元データ名１０１３、出力先データ名１０１４、および未出力データ値１０１５の各データが記憶される。
ここで、サブジョブ１０１１は、サブジョブに記載された計算の命令、処理が格納される。チェックポイント１０１２は、サブジョブ１０１１がジョブステップのどこまで終了したかを示す情報である。入力元データ名１０１３は、サブジョブで入力したデータ名を示す。出力先データ名１０１４は、サブジョブで出力するデータ名を示す。未出力データ値１０１５は、サスペンド時の未出力データ項目および未出力データ値を示す。
なお、この本体部１０１０の各情報を保存することにより、処理途中であるサスペンド時の情報を、その時点から再開し処理することができる。
【００３７】
図１に戻り、ＤＢサーバ４について説明する。ＤＢサーバ４は、ジョブの入出力データを管理し、制御部４０と、メモリ部４１と、記憶部４２と、入出力部４３と、通信部４４と、を含んで構成される。
なお、メモリ部４１、入出力部４３および通信部４４は、ジョブ投入装置１のメモリ部１１、入出力部１３および通信部１４と同じ機能を備えるため説明は省略する。
【００３８】
制御部４０は、データ制御部４０１を含んで構成され、ＤＢサーバ４の全体の制御を司る。なお、この制御部４０の機能は、例えばＤＢサーバ４の記憶部４２に記憶されたプログラムをＣＰＵがメモリ部４１に展開し実行することで実現される。
データ制御部４０１は、グリッドノード３のサブジョブ実行部３０２からのサブジョブ実行指示に基づき、記憶部４２内の分割データ４２１および共有データ４２２の処理を行う。そして、データ制御部４０１は、記憶部４２内のデータ管理テーブル４２３を用いてデータの入出力を管理し、データ管理テーブル４２３内のロックテーブル４２４（後記する図６参照）の更新を行う。
具体的には、データ制御部４０１は、あるグリッドノード３により共有データ４２２がロック（アクセス不可）中の場合に、他のグリッドノード３からその共有データ４２２に対してアクセス要求があると、そのサブジョブの排他制御を行い、後記するロックテーブル４２４（図６参照）に、排他制御されたサブジョブの情報を記憶する。また、データ制御部４０１は、共有データ４２２がロックされていない場合、共有データ４２２にアクセスしたサブジョブの送信元となるグリッドノード３のキューＩＤ１００７を、ロックテーブル４２４に登録する。
このロックテーブル４２４にキューＩＤ１００７が登録されていることで、共有データ４２２がそのグリッドノード３によりロックされている状態であることを、データ制御部４０１が確認する。
【００３９】
図６は、本実施形態に係るロックテーブル４２４のデータ構成の一例を示す図である。
ロックテーブル４２４は、共有データ４２２ごとにその共有データ４２２がロックされている場合にそのロックを獲得したキューと、その共有データ４２２にロック要求をしているサブジョブに関する情報が記憶される。そして、ロックテーブル４２４は、共有データＩＤ１００８、ロック獲得キュー１０１６、およびロック要求サブジョブ１０１７のデータ項目を含んで構成される。
【００４０】
ここで、共有データＩＤ１００８は、処理待ちとなった共有データ４２２の識別子である。また、ロック獲得キュー１０１６には、共有データ４２２のロック権限を保持しているグリッドノード３のキューＩＤ１００７が保存される。また、ロック要求サブジョブ１０１７には、共有データ４２２を処理するためにロックの開放待ちをしているサブジョブのジョブＩＤ、サブジョブＩＤ、ノード名が登録される。そして、このロック要求サブジョブ１０１７には、共有データがロック中であることにより、処理待ちとなっているサブジョブの前記した情報が、処理待ち順に保存される。
このように、共有データ４２２へのロックおよびアンロック権限を、グリッドノード３のロック獲得キュー１０１６に記憶されたキューＩＤ１００７で管理することによって、他のグリッドノード３からの割込み処理を回避することができる。
【００４１】
図１に戻り、ＤＢサーバ４の記憶部４２には、いずれかのグリッドノード３（３ａ，３ｂ，３ｃ）が専有して処理を行う分割データ４２１と、すべてのグリッドノード３が共通して読込、処理、書込を行う共有データ４２２と、データ管理テーブル４２３とを含んで構成される。このデータ管理テーブル４２３には、データ制御部４０１がデータの排他制御を行う際に用いる前記したロックテーブル４２４が記憶される。
【００４２】
次に、本実施形態に係るグリッドノード（ジョブ割当装置）３を含むジョブ割当システム５によるジョブ割当方法について、図１〜図６を参照しつつ、図７〜図１０を用いて具体的に説明する。
【００４３】
図７〜図１０は、本実施形態に係るジョブ割当方法を説明するためのシーケンス図である。なお、ジョブ投入装置１によるサブジョブ振分装置２へのジョブの送信、サブジョブ振分装置２のジョブ分割部２０１によるジョブのサブジョブへの分割およびサブジョブ保存部２２１への保存は終了しているものとして説明する。
【００４４】
まず、図７に示すように、グリッドノード３（３ａ）のキュー管理部３０４は、サブジョブ進捗管理テーブル３１２（図３）を参照し、未処理または共有処理待ちのサブジョブ数を確認する（ステップＳ７０１）。そして、キュー管理部３０４は、この確認結果をサブジョブ振分装置２のサブジョブ振分部２０２へ送信する（ステップＳ７０２）。
【００４５】
次に、サブジョブ振分部２０２は、ステップＳ７０１の確認結果が、所定の上限値を超えない場合に、サブジョブを振り分けるグリッドノードを決定する（ステップＳ７０３）。なお、サブジョブ振分部２０２は、所定の上限値を超えた場合は、サブジョブの振分処理を行わない。
続いて、サブジョブ振分部２０２は、サブジョブ保存部２２１からサブジョブを取得し（ステップＳ７０４）、サブジョブの各グリッドノード３（３ａ，３ｂ，３ｃ）への振分を行い（ステップＳ７０５）、振り分けたサブジョブを各グリッドノード３（３ａ，３ｂ，３ｃ）に送信する（ステップＳ７０６）。ここでは、グリッドノード３（３ａ）にサブジョブが振り分けられたものとして処理を説明する。また、サブジョブ振分部２０２は、サブジョブ管理部２０３を介して、サブジョブ管理テーブル２２２（図２参照）を更新する（ステップＳ７０７）。例えば、振り分けたサブジョブに対応するレコードについて、振分先ノード１００３を振分先のグリッドノード「３ａ」に、進捗状況１００４を「未処理」から「実行中」に更新する（ステップＳ７０７）。
【００４６】
次に、グリッドノード３（３ａ）のキュー操作部３０３は、ステップＳ７０６で受信したサブジョブをサブジョブキュー３１１（図１参照）に保存し（ステップＳ７０８）、サブジョブ制御部３０１に対して新規サブジョブがグリッドノード３（３ａ）に配置されたことに伴う情報の更新要求を行う（ステップＳ７０９）。そして、サブジョブ制御部３０１は、サブジョブ進捗管理テーブル３１２（図３参照）に新しいレコードを追加して、取得データを元に、ジョブＩＤ１００１、サブジョブＩＤ１００２、振分元１００５、サブジョブ進捗状況１００６を登録する（ステップＳ７１０）。このとき、新しく追加されたレコードのサブジョブ進捗状況１００６は「未処理」である。
【００４７】
続いて、サブジョブ制御部３０１は、サブジョブ進捗管理テーブル３１２（図３）を参照し、未処理のサブジョブの有無を検索する（ステップＳ７１１）。未処理のサブジョブがある場合、サブジョブ制御部３０１は、サブジョブをサブジョブ実行部３０２に割り当てるようにキュー操作部３０３に命令し（ステップＳ７１２）、このサブジョブ割当命令を送信する（ステップＳ７１３）。また、サブジョブ制御部３０１は、サブジョブ進捗管理テーブル３１２のこのサブジョブに対応するレコードについて、サブジョブ進捗状況１００６を「未処理」から「実行中」に更新する（ステップＳ７１４）。
【００４８】
そして、キュー操作部３０３は、ステップＳ７１３で命令されたサブジョブをサブジョブキュー３１１（図１参照）から取得し（ステップＳ７１５）、サブジョブ実行部３０２に送信する（ステップＳ７１６）。
【００４９】
次に、サブジョブ実行部３０２は、サブジョブを起動し（ステップＳ７１７）、サブジョブ前半部分の分割データ処理を開始して（ステップＳ７１８）、ＤＢサーバ４のデータ制御部４０１を介して分割データ４２１（図１参照）へのアクセスを要求する（ステップＳ７１９）。分割データ４２１は、グリッドノード３（３ａ）が専有できロックの競合は発生しないため、速やかにサブジョブ実行部３０２へ送信され（ステップＳ７２０）、サブジョブ実行部３０２により、分割データ４２１の処理が実行される(ステップＳ７２１)。
【００５０】
続いて、図８に示すように、サブジョブ実行部３０２は、サブジョブ後半部分の共有データ処理を開始して（ステップＳ７２２）、ＤＢサーバ４のデータ制御部４０１を介して共有データ４２２（図１参照）へのアクセスを要求する（ステップＳ７２３）。ここで、共有データ４２２が、他のグリッドノード３（３ｂ，３ｃ）によって、ロック中の場合、ＤＢサーバ４のデータ制御部４０１は、排他制御を行う（ステップＳ７２４）。続いて、データ制御部４０１は、ロックテーブル４２４（図６参照）のロック要求サブジョブ１０１７に、共有データ４２２にアクセスを要求したそのサブジョブに関するジョブＩＤ、サブジョブＩＤ、およびノード名を登録する（ステップＳ７２５）。次に、データ制御部４０１は、共有データ４２２がロックされていることを、グリッドノード３（３ａ）のサブジョブ実行部３０２に、ロック処理待ち通知として送信する（ステップＳ７２６）。
【００５１】
サブジョブ実行部３０２は、ロック処理待ち通知を受信すると、サブジョブの実行を停止し（ステップＳ７２７）、共有データＩ／Ｏ処理待ちキューテーブル３１３（図４参照）のジョブＩＤ１００１、サブジョブＩＤ１００２、キューＩＤ１００７、および共有データＩＤ１００８を登録する（ステップＳ７２８）。そして、サブジョブ実行部３０２は、共有データ処理に失敗したことを示すメッセージを生成し（ステップＳ７２９）、サブジョブ制御部３０１に送信する（ステップＳ７３０）。
【００５２】
次に、サブジョブ制御部３０１は、ステップＳ７３０にて取得した共有データ処理に失敗したサブジョブのジョブＩＤ１００１、サブジョブＩＤ１００２、キューＩＤ１００７、および共有データＩＤ１００８を引数としたサブジョブ登録命令情報を生成し（ステップＳ７３１）、キュー操作部３０３に送信する（ステップＳ７３２）。
【００５３】
続いて、キュー操作部３０３は、ステップＳ７３２のサブジョブ登録命令情報で指定されたサブジョブの実行状態をサスペンドしてキューに保存するために必要な情報、すなわち、チェックポイント１０１２、サブジョブの入力元データ名１０１３、出力先データ名１０１４、およびサブジョブの未出力データ値１０１５を収集する（ステップＳ７３３）。そして、キュー操作部３０３は、ヘッダ部１００９と本体部１０１０からなる情報を生成し、共有データＩ／Ｏ処理待ちキュー３１４（図５参照）として登録する（ステップＳ７３４）。続いて、キュー操作部３０３は、共有データＩ／Ｏ処理待ちキュー３１４への登録処理が完了したことをサブジョブ制御部３０１へ送信する（ステップＳ７３５）。
【００５４】
次に、サブジョブ制御部３０１は、ステップＳ７３５の登録完了の通知を受信すると、サブジョブ進捗管理テーブル３１２（図３参照）のサブジョブ進捗状況１００６を「実行中」から「共有処理待ち」に更新する（ステップＳ７３６）。
【００５５】
以上の処理で、１つのサブジョブが共有データ処理失敗でサスペンドされたので、次の新規サブジョブに対する処理を開始する（ステップＳ７３７）。
【００５６】
図９は、図８のステップＳ７３７において、開始された新規サブジョブに対する処理において、図７のステップＳ７１１からステップＳ７２１までの処理、つまりサブジョブ前半部分の分割データ４２１の処理実行が終了した後の処理について示している。以下、ＤＢサーバ４の共有データ４２２がロックされていない場合の処理について、図９，図１０を用いて説明する。
【００５７】
図９に示すように、サブジョブ実行部３０２は、図７と同様にサブジョブ後半部分の共有データ処理を開始して（ステップＳ７２２）、ＤＢサーバ４のデータ制御部４０１を介して共有データ４２２へのアクセスを要求する（ステップＳ７２３）。ここで、共有データ４２２がロックされていない場合、ＤＢサーバ４のデータ制御部４０１は、ロックテーブル４２４（図６参照）のロック獲得キュー１０１６にグリッドノード３（３ａ）のキューＩＤ１００７を登録する（ステップＳ７３８）。これは、ＤＢサーバ４の共有データ４２２に対してグリッドノード３（３ａ）のキューＩＤ１００７がロックをかけたのと同様であることを意味する。そして、データ制御部４０１は、サブジョブ実行部３０２に共有データ４２２を送信する（ステップＳ７３９）。
【００５８】
共有データ４２２を受信したサブジョブ実行部３０２は、共有データ処理を実行する（ステップＳ７４０）。そして、共有データ処理の完了により、サブジョブが終了すると、サブジョブ実行部３０２は、サブジョブ処理完了メッセージを生成し（ステップＳ７４１）、サブジョブ制御部３０１に送信する（ステップＳ７４２）。
【００５９】
次に、サブジョブ制御部３０１は、サブジョブ進捗管理テーブル３１２（図３参照）のサブジョブ進捗状況１００６を「実行中」から「完了」に更新する（ステップＳ７４３）。そして、サブジョブ制御部３０１は、サブジョブ完了通知を生成し（ステップＳ７４４）、サブジョブ振分装置２のサブジョブ振分部２０２に送信する（ステップＳ７４５）。
【００６０】
続いて、サブジョブ完了通知を受信したサブジョブ振分装置２のサブジョブ振分部２０２は、サブジョブ管理部２０３を介して、サブジョブ管理テーブル２２２（図２参照）の進捗状況１００４を「実行中」から「完了」に更新する（ステップＳ７４６）。
【００６１】
一方、グリッドノード３（３ａ）のサブジョブ制御部３０１は、共有データＩ／Ｏ処理待ちキューテーブル３１３（図４参照）を検索し、共有データＩＤ１００８にステップＳ７３８で取得したものと同一の共有データ４２２に対するアクセス要求が含まれているかを検索する（ステップＳ７４７）。つまり、共有データＩ／Ｏ処理待ちキューテーブル３１３に、処理を終えた共有データ４２２と同一の共有データＩＤ１００８が存在するかを検索する。共有データＩＤ１００８の一致するサブジョブが存在する場合、サブジョブ制御部３０１は、サブジョブ取得命令情報を生成して（ステップＳ７４８）、キュー操作部３０３に送信する（ステップＳ７４９）。なお、サブジョブ取得命令情報は、引数として、ジョブＩＤ、サブジョブＩＤ、キューＩＤ、および共有データＩＤを含む情報である。
【００６２】
次に、キュー操作部３０３は、ステップＳ７４９のサブジョブ取得命令情報で指定されたサブジョブを共有データＩ／Ｏ処理待ちキュー３１４（図５参照）から取得し、実行状態を復元する処理を行う（ステップＳ７５０）。具体的には、共有データＩ／Ｏ処理待ちキュー３１４の本体部１０１０に保存されているチェックポイント１０１２を参照し、ジョブステップの実行位置をサスペンド前までスキップする。そして、本体部１０１０に記憶されているサブジョブの入力元データ名１０１３、出力先データ名１０１４、未出力データ値１０１５を、復元したサブジョブに設定する。そして、キュー操作部３０３は、サブジョブの実行状態の復元処理が完了したことを、サブジョブ制御部３０１に通知する（ステップＳ７５１）。
【００６３】
続いて、図１０に示すように、サブジョブ制御部３０１は、サブジョブの復元処理が完了したことを受信し、この復元したサブジョブをサブジョブ実行部３０２に割り当てるようにキュー操作部３０３に命令を出す（ステップＳ７５２）。これ以降は、前記した図７のステップＳ７１３からＳ７１７および図９のステップＳ７２２〜Ｓ７４６と同様にサブジョブの後半部分の共有データ４２２の実行処理を行う（ステップＳ７５３）。また、ステップＳ７４５において、サブジョブ完了通知を送信後、サブジョブ制御部３０１は、共有データＩ／Ｏ処理待ちキューテーブル３１３（図４参照）から処理が完了したサブジョブを示すレコードを削除する更新を行う（ステップＳ７５４）。
【００６４】
それ以降、共有データＩ／Ｏ処理待ちキューテーブル３１３から該当するサブジョブがなくなるまで、ステップＳ７４７〜Ｓ７５４の共有データＩ／Ｏ処理を繰り返し実行する（ステップＳ７５５）。そして、ステップＳ７４７で共有データＩ／Ｏ処理待ちキューテーブル３１３を検索して、該当するサブジョブが存在しない場合は、共有データＩ／Ｏのループ処理を終了する（ステップＳ７５６）。
続いて、サブジョブ制御部３０１は、共有データ４２２のアンロック命令情報を生成し（ステップＳ７５７）、ＤＢサーバ４のデータ制御部４０１に送信する（ステップＳ７５８）。
【００６５】
次に、データ制御部４０１は、取得したアンロック命令情報に基づき、ロックテーブル４２４（図６参照）を更新する（ステップＳ７５９）。具体的には、データ制御部４０１は、サブジョブがアクセスした共有データＩＤ１００８を示すレコードのロック獲得キュー１０１６をクリアし、ロック要求サブジョブ１０１７からノード名が３ａのサブジョブを削除する。そして、データ制御部４０１は、アンロック処理が完了したことを、グリッドノード３（３ａ）のサブジョブ制御部３０１へ送信する（ステップＳ７６０）。
【００６６】
サブジョブ制御部３０１は、アンロック処理の完了を受信すると、新規サブジョブに対する処理を再開する（ステップＳ７６１）。具体的には、図７のステップＳ７１１に戻り処理を続ける。
【００６７】
なお、サブジョブ振分装置２のサブジョブ振分部２０２は、グリッドノード３のキュー管理部３０４から所定の間隔で、未処理または共有処理待ちのサブジョブ数の確認結果を受信し（ステップＳ７０２）、ステップＳ７０３〜Ｓ７０７のサブジョブの振分処理を繰り返し行う。そして、ステップＳ７０４において、振り分けるサブジョブが存在しない場合、即ち、ジョブの処理が終了した場合には、ジョブの終了通知をジョブ投入装置１に送信し、サブジョブの振分を待つ。
【００６８】
次に、本実施形態に係るジョブ割当プログラムを実行する際における、サブジョブの処理の流れを、各サブジョブに関するデータの存在場所を示して説明する。
図１１は、本実施形態に係るサブジョブの存在場所の時系列変化を説明するための図である。
【００６９】
図１１中のＴ０からＴ１３は、ジョブ割当プログラム実行前であるＴ０から実行終了後であるＴ１３まで続く時間軸を示す。また、図１１中のブロックは、左から順に、サブジョブ振分装置２のサブジョブ保存部２２１、グリッドノード３（３ａ）のサブジョブキュー３１１、共有データＩ／Ｏ処理待ちキュー３１４、サブジョブ実行部３０２を示す。そして、丸囲みの数字は、計算機に保存されるサブジョブを示すものであり、数字はサブジョブＩＤ１００２を表す。
この図１１は、ある時点におけるサブジョブの存在場所をこの丸囲み文字で表現している。以下、時間軸にそって、サブジョブの処理の流れの一例を説明する。
【００７０】
時間Ｔ０では、サブジョブ「１」〜「１０」は、サブジョブ保存部２２１に保存されている、つまり、まだ、サブジョブがグリッドノード３に振り分けられていない状態である。
時間Ｔ１において、サブジョブ「１」，「３」がグリッドノード３（３ａ）に振り分けられ、サブジョブキュー３１１（図１）に保存されたことを示す。
次に、時間Ｔ２において、サブジョブ「１」がサブジョブ実行部３０２により実行され、一方、サブジョブ「５」がさらにサブジョブキュー３１１に保存される。
続いて、時間Ｔ３において、サブジョブ「１」の共有データが処理できなかったため、サスペンドされて共有データＩ／Ｏ処理待ちキュー３１４（図５）に保存される。そして、次に新たなサブジョブ「３」がサブジョブ実行部３０２により処理されることを示す。
時間Ｔ４では、サブジョブ「３」の共有データ４２２が処理できなかったため、サスペンドされて共有データＩ／Ｏ処理待ちキュー３１４に保存される。そして次に新たなサブジョブ「５」がサブジョブ実行部３０２により処理されることを示す。
時間Ｔ５において、サブジョブ「５」が共有データ処理を完了したため消滅し、次にサブジョブ「１」がサブジョブ実行部３０２に再割当されたことを示す。
時間Ｔ６では、サブジョブ「１」が共有データ処理を完了したため消滅する。そして、サブジョブ「３」がサブジョブ実行部３０２により処理され、共有データＩ／Ｏ処理待ちキュー３１４が空になるまで、繰り返し共有データ処理が実行される。
次に時間Ｔ７において、新たにサブジョブ「７」がサブジョブ実行部３０２で処理され、以下、時間Ｔ８〜時間Ｔ１２の処理を行うことで、時間Ｔ１３において、すべてのサブジョブの処理が終了する。
【００７１】
以上のように、本発明に係るジョブ割当装置、ジョブ割当方法およびジョブ割当プログラムによれば、複数のノードで構成される並列型のバッチ処理システムにおいて、同一データへのＩ／Ｏ処理待ちによるボトルネックを回避し、計算ノードの利用効率を向上させることができる。
【符号の説明】
【００７２】
１      ジョブ投入装置
２      ジョブ振分装置
３      グリッドノード（ジョブ割当装置）
４      ＤＢサーバ
５      ジョブ割当システム
６      通信ネットワーク
１０，２０，３０，４０  制御部
１１，２１，３１，４１  メモリ部
１２，２２，３２，４２  記憶部
１３，２３，３３，４３  入出力部
１４，２４，３４，４４  通信部
１０１  ジョブ投入部
１２１  ジョブ保存部
１２２  ジョブネット保存部
２０１  ジョブ分割部
２０２  サブジョブ振分部
２０３  サブジョブ管理部
２２１  サブジョブ保存部
２２２  サブジョブ管理テーブル
３０１  サブジョブ制御部
３０２  サブジョブ実行部
３０３  キュー操作部
３０４  キュー管理部
３１１  サブジョブキュー
３１２  サブジョブ進捗管理テーブル（サブジョブ進捗管理情報）
３２３  共有データＩ／Ｏ処理待ちキューテーブル（共有データＩ／Ｏ処理待ちキュー情報）
３２４  共有データＩ／Ｏ処理待ちキュー
４０１  データ制御部
４２１  分割データ
４２２  共有データ
４２３  データ管理テーブル
４２４  ロックテーブル
【図１】
2011076304.tif 000003
【図２】
2011076304.tif 000004
【図３】
2011076304.tif 000005
【図４】
2011076304.tif 000006
【図５】
2011076304.tif 000007
【図６】
2011076304.tif 000008
【図７】
2011076304.tif 000009
【図８】
2011076304.tif 000010
【図９】
2011076304.tif 000011
【図１０】
2011076304.tif 000012
【図１１】
2011076304.tif 000013
【図１２】
2011076304.tif 000014