JP5227604B2 - 情報処理システム、ファイルの排他制御方法、及び排他制御プログラム - Google Patents

情報処理システム、ファイルの排他制御方法、及び排他制御プログラム Download PDF

Info

Publication number
JP5227604B2
JP5227604B2 JP2008033648A JP2008033648A JP5227604B2 JP 5227604 B2 JP5227604 B2 JP 5227604B2 JP 2008033648 A JP2008033648 A JP 2008033648A JP 2008033648 A JP2008033648 A JP 2008033648A JP 5227604 B2 JP5227604 B2 JP 5227604B2
Authority
JP
Japan
Prior art keywords
exclusive
job
information
identifier
file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008033648A
Other languages
English (en)
Other versions
JP2009193362A (ja
Inventor
昌明 細内
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2008033648A priority Critical patent/JP5227604B2/ja
Publication of JP2009193362A publication Critical patent/JP2009193362A/ja
Application granted granted Critical
Publication of JP5227604B2 publication Critical patent/JP5227604B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

本発明は情報処理システムにおけるファイルの排他制御方法に係り、特に、ジョブ間で複数のファイルを同時に排他する情報処理システム及びそのファイルのジョブ間排他制御方法に適用しても好適なものである。
従来の排他制御方法では、ジョブ間でファイルを排他する場合、オペレーティングシステムが提供する排他制御機構を使用して、ファイル名を指定してオペレーティングシステムに排他制御要求を行い、ファイルを排他制御機構の制御単位である資源として排他制御を行っていた。例えば、特許文献1記載の方法では、ENQマクロが排他制御機構であり、ファイルであるデータセットの名称をENQ資源名としており、1つないし複数のデータセット名を指定してENQマクロを発行することで、ジョブ間でファイルの排他制御を行う。ENQと同様の排他制御機構としてセマフォがある。
特開平1−9544号公報
従来の排他制御方法では、ファイルを資源としてオペレーティングシステムの排他制御機構の制御単位とするため、デッドロックを起こさずに複数のファイルを排他するには、すべてのファイルを同時に指定して、オペレーティングシステムの排他制御機構が提供するインタフェースを呼び出す必要がある。
しかしながら、オペレーティングシステムの排他制御機構が提供するインタフェースの中には、全体の資源の数や同時指定可能な資源の数に制限があるものがある。例えば、セマフォでは、これらはインタフェース上では“65535”に制限される。セマフォ数に比例して排他制御のための管理テーブルの領域を消費するため、オペレーティングの仕様や初期設定指定により、実際はこれらよりも少ない値、例えば全体の資源の数が“4096”、同時指定可能な資源数が“1024”に制限される。また、初期設定指定の場合、設定変更には再起動を要するオペレーティングもある。
ジョブ内プログラムが入出力するファイル数は、ジョブによって数がまちまちであり、なかにはファイル数が“100”近くに及ぶことがある。同時に実行するジョブの数が多くなると、ジョブのプログラムが入出力するファイルの数も多くなり、セマフォ数の上限を超えてしまう可能性がある。
このためオペレーティングシステムの排他制御機構を使わずに排他制御を行った場合、主記憶装置上の領域にファイルの排他状態を記憶する必要があるが、ジョブが異常終了した場合に、排他状態が残ってしまうという問題がある。
本発明の目的は、以上の点を考慮してなされたもので、ジョブが異常終了しても排他状態を削除可能な信頼性と、排他制御対象のファイル数がオペレーティングシステムが提供する排他制御機構の制限を受けないスケーラビリティを両立可能なジョブ間のファイル排他制御を行なうことができる情報処理システムファイルの排他制御方法、及び排他制御プログラムを提供することである。
上記目的達成のため、本発明は、ファイルの排他制御を行なう情報処理システムにおいて、1つないし複数の前記ファイルを他のジョブと排他的に入出力する第一のジョブが終了するときに排他状態が解除される第一の排他情報を設定し、前記第一の排他情報を一意に識別する排他情報識別子と前記第一のジョブを一意に識別するジョブ識別子とを含む排他情報管理情報を記憶し、前記ファイルを一意に識別するファイル識別子と前記ジョブ識別子とを含む第二の排他情報を記憶し、前記第一の排他情報が排他解除状態である場合に、前記排他情報管理情報に基づき、前記第一の排他情報を一意に識別する排他情報識別子に対応して記憶されたジョブ識別子を求め、前記求められたジョブ識別子を含む前記第二の排他情報を消去し、ジョブ識別子を含む前記排他情報管理情報を消去することを含むものである。
本発明によれば、排他制御対象のファイル数が、オペレーティングシステムが提供する排他制御機構の制限の影響を受けず、ジョブが異常終了しても排他状態を確実に削除することができる情報処理システムファイルの排他制御方法、及び排他制御プログラムを提供できる。
以下、各図を参照しながら本発明の実施例について説明する。なお、以下の各実施形態は、特許請求の範囲を限定するものではなく、また各実施形態で説明されている特徴の全てが発明の解決手段に必須であるとは限らない。
(第1の実施形態)
以下、本発明の第1の実施形態を、図面を参照して詳細に説明する。図1は、本発明の情報処理システムが適用される計算機システムのハードウェア構成を示した図である。計算機システム10は、計算機1及び記憶装置2を含んで構成されている。
計算機1には、本発明のジョブ管理プログラム1000や、オペレーティングシステム(Operating System)2000(以下、OS2000と記述する)の命令コードを格納した主記憶装置11、ジョブ管理プログラム1000やOS2000の命令コードをロードして解釈実行するCPU(Central Processing Unit)12、入出力インタフェース13が含まれる。
また、計算機1には、ジョブ管理プログラム1000の設定ファイル22や、ジョブ管理プログラム1000が解析可能な1つないし複数のジョブ定義ファイル21が格納された記憶装置2が通信路3を介して接続されており、ジョブ管理プログラム1000の命令コードをロードして解釈実行するCPU12は、入出力インタフェース13と通信路3を介してジョブ定義ファイル21を入出力する。
主記憶装置11には、ジョブ管理プログラム1000やOS2000の命令コードのほか、ファイル排他管理テーブル100、セマフォ割当状態管理テーブル200、セマフォ管理テーブル300、セマフォUNDOテーブル400が含まれる。
ファイル排他管理テーブル100およびセマフォ割当状態管理テーブル200は、ジョブ管理プログラム1000が参照し、セマフォ管理テーブル300およびセマフォUNDOテーブル400は、OS2000が参照するテーブルである。
セマフォ管理テーブル300およびセマフォUNDOテーブル400は、主記憶装置11のなかで、OS2000のみが参照可能なOS内領域に格納され、プログラム1000は参照することができない。ファイル排他管理テーブル100およびセマフォ割当状態管理テーブル200は、主記憶装置11のなかで、プログラム1000が参照可能なOS外領域に格納される。
OS2000は、セマフォと呼ばれる共有資源の排他制御機構を有する。セマフォは、排他する共有資源ごとにセマフォ変数を持つ。セマフォ変数の値(整数値)をセマフォ値と呼ぶ。また、複数のセマフォから構成される集合をセマフォ集合と呼ぶ。同一セマフォ集合内のセマフォは、同時かつアトミック(不可分)に値を変更することができる。
セマフォ値が“0”であれば“0”以外の値になるまで待ち状態となり、“0”以外であれば“−1”する操作をP操作と呼ぶ。セマフォ値が“0”であれば“0”以外の値になるまで待ち状態となり、“0”以外であれば待たずに終了する操作をP´操作と定義する。また、セマフォ値を“+1”する操作をV操作と呼ぶ。
これらセマフォ値の操作は、OS2000に対して以下の関数を発行することで実行される。
semop(int semid, struct sembuf *sops, unsigned nsops);
“semid”はセマフォ集合の識別子、“nsops”は、同時に操作するセマフォの個数である。“sops”は、以下のメンバをもつ構造体のアドレスである。
unsigned short sem_num;
short sem_op;
“sem_num”は、セマフォ集合内のセマフォの識別子であるセマフォ番号である。“sem_op”は、セマフォ値に加える数である。“sem_op”が“−1”のときがP操作であり、“+1”のときがV操作であり、“0”のときがP´操作である。
セマフォ集合内の各セマフォ変数のセマフォ値は、OS2000に対して以下の関数の実行結果として参照することができる。
semctl(int semid, int semnum, GETVAL);
“semid”はセマフォ集合の識別子、“semnum”は参照するセマフォ変数のセマフォ番号である。
セマフォ集合は、OS2000に対して以下の関数を発行することで割り当てられる。
semget(key_t key, int nsems, int semflg);
“key”は、セマフォ集合を識別するためのキーである。“nsems”は、セマフォ集合内のセマフォ変数の数である。
図2に、ジョブ管理プログラム1000の設定ファイル22の記述例を示す。“MAXJOBS=”に続く“5”が、同時に実行可能なジョブ数である最大ジョブ多重度を示す。ジョブは、ジョブ管理プログラム1000がユーザプログラムを実行する単位であり、ジョブは同時に複数実行することが可能である。
図3(a),(b)に、ジョブ定義ファイル21の記述例を示す。図3(a)に示すファイル21A、図3(b)に示すファイル21Bには、ジョブの名称やユーザプログラムが入出力するファイルの定義が記述される。
ジョブ定義ファイル21A,21Bの先頭行はジョブ定義文である。“JOB ID=”に続く“JOBa”,“JOBb”がジョブを一意に識別する識別子であるジョブIDを示している。2行目は、ジョブのユーザプログラムが入出力するファイル(以下、ジョブファイルと記述する。)のファイル定義文である。“DD FILE=”に続く“/dir/file1”はジョブファイルを一意に識別する名称であるパス名を示している。ファイル定義文は、ジョブ定義ファイル21A,21Bのように複数記述してもよい。
図4に、初期化状態におけるファイル排他管理テーブル100、セマフォ割当状態管理テーブル200、セマフォ管理テーブル300及びセマフォUNDOテーブル400の状態11Aを示す。
ファイル排他管理テーブル100は、ジョブファイルを複数のジョブが同時に入出力できないようにするために、ジョブファイルの排他状態を管理するテーブルである。ファイル排他管理テーブル100内には、ジョブファイルごとにエントリ110を割り当てる。各エントリ110は、次エントリ番号101、ジョブファイルのパス名102、ジョブファイルを排他しているジョブの識別子であるロックジョブID103を有する。
次エントリ番号101は、使用中のエントリ110のキューと未使用のエントリ110のキュー内における次のエントリ110の識別子を格納する。未使用エントリ110のキューの先頭エントリ110の番号120と、使用中エントリ110のキューの先頭エントリ110の番号121も、ファイル排他管理テーブル100内に保持する。これらの情報は、エントリ数の多いファイル排他管理テーブル100の未使用エントリを高速に割り当てるために使用する。
また、ファイル排他管理テーブル100内には、ファイル排他管理テーブル100が更新中か否かを識別するためのテーブル更新フラグ122を設ける。ジョブ管理プログラム1000は、ファイル排他管理テーブル100を更新する前に“ON”を、更新が完了したのちに“OFF”を、テーブル更新フラグ122に代入する。テーブル更新フラグ122は、異常終了したときにファイル排他管理テーブル100の内容を検証する必要があるか否かを判別するために利用する。
セマフォ割当状態管理テーブル200は、ジョブとセマフォ変数との対応関係を管理するためのテーブルである。セマフォ割当状態管理テーブル200の各エントリ210には、エントリが管理するセマフォ変数のセマフォ番号201と、セマフォを割り当てたジョブのジョブID202が含まれる。
エントリ210の管理対象のセマフォ変数は、複数のジョブの完了を同時に待ち合わせる必要があるため、すべて同一セマフォ集合内のセマフォ変数である。エントリ210は、少なくとも設定ファイル22で指定された最大ジョブ多重度+1の数を割り当てる。セマフォ番号0のセマフォ変数は、ファイル排他管理テーブル100の排他に使うため、エントリ210は、セマフォ番号1のセマフォから管理する。
セマフォ管理テーブル300は、セマフォ集合内のセマフォ変数のセマフォ値を管理するためのテーブルである。セマフォ管理テーブル300の各エントリ310には、セマフォ番号301とセマフォ値302を保持する。セマフォ番号0のセマフォ値は“0”に、それ以外のセマフォ値は“1”に初期化する。
セマフォUNDOテーブル400は、ジョブが実行されるプロセスが終了したときに、OS2000が、セマフォ値をプログラム実行前の状態に戻すために参照するテーブルである。セマフォUNDOテーブル400はプロセスごとに設けられ、セマフォ数分のエントリ410を持つ。
各エントリ410には、セマフォ番号401と、プロセス内で実行したセマフォ操作によるセマフォ値の合計であるセマフォUNDO値402を保持する。ジョブが終了するとプロセスが終了し、プロセスが終了すると、OS2000は、セマフォ値302からUNDO値402を減算し、セマフォ値をプログラム実行前の状態に戻す。
図5に、本発明の処理の概要のブロック図を示す。ジョブ管理プログラム1000は、OS2000に対して、セマフォ集合割当要求であるsemget関数を実行すると、OS2000は、セマフォ管理テーブル300とセマフォUNDOテーブル400を割り当て、ジョブ管理プログラム1000に応答を返す。応答後、ジョブ管理プログラム1000は、セマフォ割当状態管理テーブル200とファイル排他管理テーブル100を割り当て、初期化する。
ジョブ実行が要求された場合は、ジョブ管理プログラム1000は、OS2000に、実行するジョブのロック操作であるP操作(semop関数発行)を行う。OS2000は、セマフォ値が“0”であれば“0”以外になるまでプログラム1000を待たせ、“0”以外であればセマフォ管理テーブル300およびセマフォUNDOテーブル400を参照更新し応答を返す。
応答後、ジョブ管理プログラム1000は、セマフォ割当状態管理テーブル200を更新し、ジョブ定義ファイル21を読込・解析してファイル排他管理テーブル100を更新する。ジョブ管理プログラム1000は、実行するジョブの各ジョブファイルのエントリ110がファイル排他管理テーブル100内に1つでも存在すれば、他のジョブがファイルをロック中であるため、P´操作を行い、ロック中のジョブが終了するまで待つ。ロック中のジョブが終了後、再びジョブファイルのエントリ110をチェックする。
セマフォは共有資源の排他機構であり、ジョブの共有資源はジョブファイルであるが、ジョブファイルの排他状態は、ファイル排他管理テーブル100を用いてジョブ管理プログラム1000が管理する。セマフォは、ファイルを排他しているジョブの完了待ちを確実に行うために利用する。ジョブごとにセマフォ変数を割り当て、ジョブを共有資源として排他させる。
ジョブが正常終了する直前に、ジョブ管理プログラム1000は、OS2000にV操作を要求したのち、ファイル排他管理テーブル100とセマフォ割当状態管理テーブル200のエントリ消去を行い、セマフォ値や各テーブルをジョブ実行前の状態に戻す。ジョブが異常終了した場合は、セマフォ値だけはOS2000がジョブ実行前の状態に戻るが、ファイル排他管理テーブル100やセマフォ割当状態管理テーブル200は実行中と同じ状態となる。このため、次のジョブを実行するためにCPU12がジョブ管理プログラム1000を実行するときに、CPU12は、OS2000からセマフォ値を取得してジョブが終了したかをチェックする。
セマフォ割当状態管理テーブル200にエントリがあるにもかかわらずジョブが終了している場合、ジョブ管理プログラム1000は、ジョブが異常終了したとみなして、ファイル排他管理テーブル100とセマフォ割当状態管理テーブル200のエントリ消去を行い、セマフォ値や各テーブルをジョブ実行前の状態に戻す。
セマフォ数やセマフォ変数の管理に必要なOS内領域の大きさは、多数のジョブファイルではなく少数のジョブの数に依存する。このため、その少数のジョブの記憶されるOS内領域(セマフォ数やセマフォ管理テーブル300)で排他制御を行うことができる。また、ジョブ実行前に、OS内領域に保持する情報(セマフォ値)とOS外領域に保持する情報(ファイル排他管理テーブル100およびセマフォ割当状態管理テーブル200)を照合して回復処理を行うことで、OS2000のみによる排他制御と同等の信頼性を保つことができる。このようにして、ジョブ間のファイルの排他制御を、信頼性とスケーラビリティを両立させることころに特徴がある。
図6に、初期化処理のフローチャートを示す。この初期化処理は、ジョブ管理プログラム1000がCPU12に実行されて行なわれる処理である。
まず、CPU12は、設定ファイル22を読み込み解析して最大多重度を抽出し(ステップ1101)、最大ジョブ多重度+1以上のセマフォ数のセマフォ集合の割り当てをOS2000に要求する(ステップ1102)。
次に、CPU12は、semop関数を発行してOS2000に要求し、セマフォ集合内のセマフォ番号0以外のすべてのセマフォ値302を“1”に初期化する(ステップ1103)。セマフォ番号0のセマフォ値は“0”に初期化する。
続いて、CPU12は、OS外領域に、割り当てたセマフォ集合内のセマフォ数−1のエントリ210をもつセマフォ割当状態管理テーブル200の領域を割り当てる(ステップ1104)。そして、CPU12は、セマフォ割当状態管理テーブル200内の全エントリ210を初期化する。すなわち、セマフォ番号201にエントリ210が管理するセマフォの番号を代入し、ジョブID202をクリアする(ステップ1105)。
続いて、CPU12は、OS外領域に、一定数のエントリ110を有するファイル排他管理ファイル排他管理テーブル100を割り当て、各エントリ110を初期化する(ステップ1106)。すなわち、パス名102とロックジョブID103をクリアし、次エントリ番号101に次のエントリの番号を代入し、未使用番号120に“1”、番号121に“0”、フラグ122に“OFF”を代入する。これにより、全エントリが未使用キューにキューイングされる。
図7に、初期化直後の図4の状態11Aから、ジョブ定義ファイル21Aのジョブに対して、排他処理を実行したのち、ジョブのユーザプログラムを起動する前の各テーブルの状態11Bを示す。
ジョブ定義ファイル21Aの“/dir1/file1”と“/dir1/file2”に対するエントリ110はどちらも存在しないので、図7に示すように、エントリ110が新たに割り当てられ、他のジョブを待つことなくジョブのプログラムは起動される。“JOBa”に対するセマフォ番号1とエントリ210が割り当てられ、P操作によりセマフォ管理テーブル300のセマフォ番号1のエントリの値が“0”に、セマフォUNDOテーブル400のセマフォ番号1のエントリの値が“1”になる。
図8に、図7の状態11Bに対して、さらにジョブ定義ファイル21Bのジョブに対する排他処理を実行した後の各テーブルの状態11Cを示す。
ジョブ定義ファイル21Bのジョブ“JOBb”は、ファイル21aのジョブ“JOBa”と同じジョブファイル“/dir1/file1”を入出力するためジョブ“JOBa”の終了を待つ(セマフォ番号1のセマフォ値が1になるのを待つ)。デッドロックを避けるため、“/dir1/file3”に対するエントリは、ジョブ“JOBa”が終了するまで割り当てない。
図9に、ジョブ間のファイル排他処理のフローチャートを示す。この排他処理は、ジョブ管理プログラム1000がCPU12に実行されて行なわれる処理である。
まず、CPU12は、ジョブ定義ファイル21を読み込み、ジョブIDとファイルのパス名を抽出する(ステップ1201)。次に、CPU12は、ファイル排他管理テーブル100とセマフォ割当状態管理テーブル200を他のジョブの排他処理で同時に更新しないようにするため、セマフォ番号0のセマフォ変数に対してP操作を行い、ファイル排他管理テーブル100とセマフォ割当状態管理テーブル200をロックする(ステップ1202)。異常終了したジョブが排他中のジョブファイルを排他解除するため、異常終了検出回復処理1400を実行する。この異常終了検出回復処理については後述する。
次に、CPU12は、セマフォ割当状態管理テーブル200内の未使用のエントリ210を割り当て、ジョブ定義ファイル21から抽出したジョブIDをジョブID202に代入する(ステップ1203)。そして、CPU12は、エントリ210のセマフォ番号201が示すセマフォ変数のP操作をOS2000に要求し、自己ジョブをロックする(ステップ1204)。
次に、CPU12は、ジョブ定義ファイル21から抽出したすべてのジョブファイルに対し、ジョブファイルのパス名とパス名102が一致するエントリ110をファイル排他管理テーブル100から探す(ステップ1205)。CPU12は、一致するエントリ110が1つでも存在すれば(ステップ1206)、一致したすべてのエントリ110に対して、ロックジョブID103とジョブID202が一致するエントリ210をセマフォ割当状態管理テーブル200から探し(ステップ1207)、すべてのエントリ210のセマフォ番号201に対する一括V操作をOS2000に要求し、ジョブID202が示すすべてのジョブの排他解除を待つ(ステップ1208)。そして、ステップ1205に戻り、CPU12は、ジョブファイルのチェックから再実行する。
一致するエントリがなければ、CPU12は、ファイル排他管理テーブル100を更新中に異常終了した後の異常終了検出回復処理1400において更新中であることを識別できるように、テーブル更新フラグ122を“ON”にする(ステップ1209)。そして、CPU12は、番号120が示す未使用エントリ110を割り当て、番号120に、次の未使用エントリである割り当てたエントリ110の番号101を代入する(ステップ1210)。続いて、CPU12は、ジョブファイルのパス名をパス名102に、ジョブIDをロックジョブID103に代入する(ステップ1211)。
最後に、CPU12は、ファイル排他管理テーブル100の更新が完了したのでフラグ122を“OFF”に戻し(ステップ1212)、セマフォ番号0のセマフォ変数に対してV操作を行い、ファイル排他管理テーブル100とセマフォ割当状態管理テーブル200をアンロックする(ステップ1213)。
図10に、ジョブ管理プログラム1000におけるジョブ間ファイル排他の解除処理のフローチャートを示す。この解除処理は、ジョブ管理プログラム1000がCPU12に実行されて行なわれる処理である。
まず、CPU12は、ファイル排他管理テーブル100とセマフォ割当状態管理テーブル200を他のジョブの排他処理で同時に更新しないようにするため、セマフォ番号0のセマフォ変数に対してP操作を行い、ファイル排他管理テーブル100とセマフォ割当状態管理テーブル200をロックし(ステップ1301)、テーブル更新フラグ122を“ON”にする(ステップ1302)。
そして、CPU12は、排他解除するジョブのジョブIDと、ジョブID102が一致するエントリ110をすべて探し(ステップ1302)、一致するすべてのエントリ110に対して、パス名102およびロックジョブID103をクリアし、未使用キューに戻し、番号120や番号121を更新する(ステップ1304)。
次に、CPU12は、排他解除するジョブのジョブIDとジョブID202が一致するエントリ210を探し、ジョブID202を消去してエントリ210を解放する(ステップ1305)。CPU12は、ファイル排他管理テーブル100の更新が完了したのでテーブル更新フラグ122を“OFF”にし(ステップ1306)、エントリ210のセマフォ番号201が示すセマフォのV操作をOS2000に要求して自己ジョブのロックを解除する(ステップ1307)。セマフォ番号0のセマフォ変数に対してV操作を行い、ファイル排他管理テーブル100とセマフォ割当状態管理テーブル200をアンロックする(ステップ1308)。
図11に、図7の状態11Cからジョブ定義ファイル21Aのジョブ“JOBa”が異常終了した後の各テーブルの状態11Dを示す。
セマフォ管理テーブル300は、ジョブ“JOBa”が異常終了した時に、OS2000がセマフォUNDOテーブル400の値を減算し、ジョブ“JOBa”が実行される前の状態(図4)に戻るが、ファイル排他管理テーブル100やセマフォ割当状態管理テーブル200は図7と同じ状態である。異常終了検出回復処理1400では、ファイル排他管理テーブル100やセマフォ割当状態管理テーブル200を図7の状態から図4の状態に戻す。
図12に、図9における異常終了検出回復処理1400のフローチャートを示す。
CPU12は、テーブル更新フラグ122の値が“ON”であれば(ステップ1401)、ファイル排他管理テーブル100が更新中であるため、ステップ1402〜ステップ1403を実行し、ファイル排他管理テーブル100を再構築して回復する。すなわち、CPU12は、パス名102をクリアし、ロックジョブID103がクリアされていないエントリ110のロックジョブID103をクリアし(ステップ1402)、ロックジョブID103が記録されたエントリ110を使用中キューに、記録されていないエントリ110を未使用キューに接続し、キューを再構築する(ステップ1403)。
次に、CPU12は、異常終了したジョブを検出するため、エントリ210が割り当ててあるにもかかわらずセマフォ値が“0”であるジョブを検索する。すなわち、CPU12は、ジョブID202が設定されているすべてのエントリ210のセマフォ番号201のセマフォ変数に対して、OS2000に対してsemctl関数を実行してセマフォ値302を取得する(ステップ1404)。
セマフォ値302が“0”でないセマフォ変数があれば(ステップ1405)、CPU12は、そのセマフォ変数のセマフォ番号とセマフォ番号201が一致するエントリ210のジョブID202の一覧を求め(ステップ1406)、一覧中のジョブID202とロックジョブID103が一致するエントリをファイル排他管理テーブル100から求め、パス名101をクリアし、ジョブID102をクリアし、未使用キューに戻す(ステップ1407)。
この実施形態の計算機システム10によると、上述した図6,図9,図10,図12の処理をCPU12が実行することにより、排他制御対象のファイル数が、OS2000が提供する排他制御機構の制限の影響を受けず、ジョブが異常終了しても排他状態を確実に削除することができる。
(他の実施形態)
上記実施の形態では、本発明を、計算機システム10において、1つないし複数のファイルを他のジョブと排他的に入出力する第一のジョブが終了するときに排他状態が解除されるセマフォ値と、そのセマフォ値をセマフォ管理テーブル300に設定し、セマフォ値を一意に識別するセマフォ番号と第一のジョブを一意に識別するジョブIDとを含む排他情報管理情報をセマフォ割当状態管理テーブル200に記憶し、ファイルを一意に識別するファイルパス名と前記ジョブIDとを含む第二の排他情報をファイル排他管理テーブル100に記憶し、セマフォ値が排他解除状態である場合に、セマフォ番号の第一の排他情報を求め(ステップ1405,1406)、ジョブIDを含む第二の排他情報を消去し、ジョブIDを含む排他情報管理情報を消去する場合(ステップ1407)について説明したが、本発明はこれに限るものではない。
また、本発明を、計算機システム10において、1つないし複数のファイルを第一のジョブと排他的に入出力する第二のジョブを一意に識別するジョブIDとを含む排他情報管理情報をセマフォ割当状態管理テーブル200に記憶し、すべてのファイルに対して、ファイルを一意に識別するファイルパスを含む第二の排他情報が記憶されているか判別し(ステップS1206)、ファイルに対する第二の排他情報が1つでも記憶されている場合に、第一のジョブに対して設定された第一の排他情報の排他状態解除を要求する場合(ステップ1208)について説明したが、本発明はこれに限るものではない。
さらに、本発明を、計算機システム10において、第一のジョブが終了するときに、まず、第一のジョブを一意に識別するジョブIDを含むすべての第二の排他情報を消去し(ステップ1305)、続いて、第一のジョブを一意に識別するジョブIDを含む排他情報管理情報を消去し、第一のジョブに対して設定された第一の排他情報を解除する場合(ステップ1307)について説明したが、本発明はこれに限るものではない。
さらに、本発明を、計算機システム10において、すべての第二の排他情報を記憶する前に、第二の排他情報の領域を更新することを記憶するテーブル更新フラグ122が設定されているか否かを判別し(ステップ1401)、テーブル更新フラグ122が“ON”となっていれば、第二の排他情報に矛盾がないかを検証し、矛盾があればその矛盾を解消した後、前記フラグの設定を解除する場合(ステップ1402)について説明したが、本発明はこれに限られるものではない。
本発明は、情報処理システム及びそのファイルのジョブ間排他制御方法に広く適用することができる。
本発明の実施の形態に係わるハードウェア構成の形態を示した図である。 同実施の形態におけるハードウェア構成の形態を示した図である。 同実施の形態におけるジョブ定義ファイルの記述例を示した図である。 同実施の形態における初期化状態におけるテーブルである。 同実施の形態におけるブロック図である。 同実施の形態における初期化処理のフローチャートである。 同実施の形態におけるジョブ定義ファイル21Aのジョブに対する排他獲得処理実行後のテーブルである。 同実施の形態におけるジョブ定義ファイル21Aと21Bのジョブに対する排他獲得処理実行後のテーブルである。 同実施の形態における排他処理のフローチャートである。 同実施の形態における排他解除処理のフローチャートである。 同実施の形態におけるジョブ定義ファイル21Aのジョブが異常終了した後のテーブルである。 同実施の形態における異常終了検出回復処理のフローチャートである。
符号の説明
1:計算機、2:記憶装置、3:通信路、10:計算機システム、11:主記憶装置、11A〜11D:各テーブルの状態、12:CPU、13:入出力インタフェース、21:ジョブ定義ファイル、22:設定ファイル、100:ファイル排他管理テーブル、200:セマフォ割当状態管理テーブル、300:セマフォ管理テーブル、400:セマフォUNDOテーブル、2000:オペレーティングシステム、1000:ジョブ管理プログラム

Claims (15)

  1. 情報処理システムにおけるファイルの排他制御方法において、
    1つないし複数の前記ファイルを他のジョブと排他的に入出力する第一のジョブが終了するときに排他状態が解除される第一の排他情報を設定するステップと、
    前記第一の排他情報を一意に識別する排他情報識別子と前記第一のジョブを一意に識別するジョブ識別子とを含む排他情報管理情報を記憶するステップと、
    前記ファイルを一意に識別するファイル識別子と前記ジョブ識別子とを含む第二の排他情報を記憶するステップと、
    前記第一の排他情報が排他解除状態である場合に、前記排他情報管理情報に基づき、前記第一の排他情報を一意に識別する排他情報識別子に対応して記憶されたジョブ識別子を求めるステップと、
    前記求められたジョブ識別子を含む前記第二の排他情報を消去し、ジョブ識別子を含む前記排他情報管理情報を消去するステップと、
    を含むことを特徴とするファイルの排他制御方法。
  2. 請求項1記載の排他制御方法において、
    前記第一の排他情報がセマフォ値であり、前記排他情報識別子がセマフォ番号であることを特徴とするファイルの排他制御方法。
  3. 請求項1記載の排他制御方法において、
    1つないし複数の前記ファイルを前記第一のジョブと排他的に入出力する第二のジョブを一意に識別する前記ジョブ識別子とを含む排他情報管理情報を記憶するステップと、
    すべての前記ファイルに対して、前記ファイルを一意に識別するファイル識別子を含む前記第二の排他情報が記憶されているか判別するステップと、
    前記ファイルに対する前記第二の排他情報が1つでも記憶されている場合に、前記第一のジョブに対して設定された前記第一の排他情報の排他状態解除を要求するステップと、
    を含むことを特徴とするファイルの排他制御方法。
  4. 請求項1記載の排他制御方法において、
    前記第一のジョブが終了するときに、
    まず、前記第一のジョブを一意に識別する前記ジョブ識別子を含むすべての第二の排他情報を消去し、
    続いて、前記第一のジョブを一意に識別する前記ジョブ識別子を含む排他情報管理情報を消去し、前記第一のジョブに対して設定された第一の排他情報を解除するステップと、
    を含むことを特徴とするファイルの排他制御方法。
  5. 請求項1記載の排他制御方法において、
    すべての前記第二の排他情報を記憶する前に、前記第二の排他情報の領域を更新することを記憶するフラグが設定されているか否かを判別するステップと、
    前記フラグが設定されていれば、前記第二の排他情報に矛盾がないかを検証し、矛盾があれば矛盾を解消した後、前記フラグの設定を解除するステップと、
    を含むことを特徴とするファイルの排他制御方法。
  6. ファイルの排他制御を行なう情報処理システムにおいて、
    1つないし複数の前記ファイルを他のジョブと排他的に入出力する第一のジョブが終了するときに排他状態が解除される第一の排他情報を設定する第一のテーブルと、
    前記第一の排他情報を一意に識別する排他情報識別子と前記第一のジョブを一意に識別するジョブ識別子とを含む排他情報管理情報を記憶する第二テーブルと、
    前記ファイルを一意に識別するファイル識別子と前記ジョブ識別子とを含む第二の排他情報を記憶する第のテーブルと、
    前記第一の排他情報が排他解除状態である場合に、前記排他情報管理情報に基づき、前記第一の排他情報を一意に識別する排他情報識別子に対応して記憶されたジョブ識別子を求める算出部と、
    前記算出部によって求められたジョブ識別子を含む前記第二の排他情報を消去し、ジョブ識別子を含む前記排他情報管理情報を消去する消去部と、
    を含むことを特徴とする情報処理システム。
  7. 請求項6記載の情報処理システムにおいて、
    前記第一の排他情報がセマフォ値であり、前記排他情報識別子がセマフォ番号であることを特徴とする情報処理システム。
  8. 請求項6記載の情報処理システムにおいて、
    前記第2のテーブルは、1つないし複数の前記ファイルを前記第一のジョブと排他的に入出力する第二のジョブを一意に識別する前記ジョブ識別子とを含む排他情報管理情報を記憶し、
    すべての前記ファイルに対して、前記ファイルを一意に識別するファイル識別子を含む前記第二の排他情報が記憶されているか判別する判別部と、
    前記ファイルに対する前記第二の排他情報が1つでも記憶されている場合に、前記第一のジョブに対して設定された前記第一の排他情報の排他状態解除を要求する要求部と、
    を含むことを特徴とする情報処理システム。
  9. 請求項6記載の情報処理システムにおいて、
    前記第一のジョブが終了するときに、前記第一のジョブを一意に識別する前記ジョブ識別子を含むすべての第二の排他情報を消去する第二の排他情報消去部と、
    前記第一のジョブを一意に識別する前記ジョブ識別子を含む排他情報管理情報を消去し、前記第一のジョブに対して設定された第一の排他情報を解除する解除部と、
    を含むことを特徴とする情報処理システム。
  10. 請求項6記載の情報処理システムにおいて、
    すべての前記第二の排他情報を記憶する前に、前記第二の排他情報の領域を更新することを記憶するフラグが設定されているか否かを判別するフラグ判別部と、
    前記フラグが設定されていれば、前記第二の排他情報に矛盾がないかを検証し、矛盾があれば矛盾を解消した後、前記フラグの設定を解除するフラグ解除部と、
    を含むことを特徴とする情報処理システム。
  11. ファイルの排他制御を行う情報処理システムにおけるコンピュータに、
    1つないし複数の前記ファイルを他のジョブと排他的に入出力する第一のジョブが終了するときに排他状態が解除される第一の排他情報を設定するステップと、
    前記第一の排他情報を一意に識別する排他情報識別子と、前記第一のジョブを一意に識別するジョブ識別子と、を含む排他情報管理情報を記憶するステップと、
    前記ファイルを一意に識別するファイル識別子と前記ジョブ識別子とを含む第二の排他情報を記憶するステップと、
    前記第一の排他情報が排他解除状態である場合に、前記排他情報管理情報に基づき、前記第一の排他情報を一意に識別する排他情報識別子に対応して記憶されたジョブ識別子を求めるステップと、
    前記求めたジョブ識別子を含む前記第二の排他情報を消去し、該ジョブ識別子を含む前記排他情報管理情報を消去するステップと、
    を実行させることを特徴とする排他制御プログラム。
  12. 前記第一の排他情報がセマフォ値であり、前記排他情報識別子がセマフォ番号であることを特徴とする請求項11記載の排他制御プログラム。
  13. 前記コンピュータに、
    1つないし複数の前記ファイルを前記第一のジョブと排他的に入出力する第二のジョブを一意に識別する前記ジョブ識別子とを含む排他情報管理情報を記憶するステップと、
    すべての前記ファイルに対して、前記ファイルを一意に識別するファイル識別子を含む前記第二の排他情報が記憶されているか判別するステップと、
    前記ファイルに対する前記第二の排他情報が1つでも記憶されている場合に、前記第一のジョブに対して設定された前記第一の排他情報の排他状態解除を要求するステップと、
    を実行させることを特徴とする請求項11記載の排他制御プログラム。
  14. 前記コンピュータに、
    前記第一のジョブが終了するときに、前記第一のジョブを一意に識別する前記ジョブ識別子を含むすべての第二の排他情報を消去し、該第二の排他情報を消去する処理の後に、前記第一のジョブを一意に識別する前記ジョブ識別子を含む排他情報管理情報を消去し、前記第一のジョブに対して設定された第一の排他情報を解除するステップ
    を実行させることを特徴とする請求項11記載の排他制御プログラム。
  15. 前記コンピュータに、
    すべての前記第二の排他情報を記憶する前に、前記第二の排他情報の領域を更新することを記憶するフラグが設定されているか否かを判別するステップと、
    前記フラグが設定されていれば、前記第二の排他情報に矛盾がないかを検証し、矛盾があれば該矛盾を解消した後、前記フラグの設定を解除するステップと、
    を実行させることを特徴とする請求項11記載の排他制御プログラム。
JP2008033648A 2008-02-14 2008-02-14 情報処理システム、ファイルの排他制御方法、及び排他制御プログラム Expired - Fee Related JP5227604B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008033648A JP5227604B2 (ja) 2008-02-14 2008-02-14 情報処理システム、ファイルの排他制御方法、及び排他制御プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008033648A JP5227604B2 (ja) 2008-02-14 2008-02-14 情報処理システム、ファイルの排他制御方法、及び排他制御プログラム

Publications (2)

Publication Number Publication Date
JP2009193362A JP2009193362A (ja) 2009-08-27
JP5227604B2 true JP5227604B2 (ja) 2013-07-03

Family

ID=41075311

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008033648A Expired - Fee Related JP5227604B2 (ja) 2008-02-14 2008-02-14 情報処理システム、ファイルの排他制御方法、及び排他制御プログラム

Country Status (1)

Country Link
JP (1) JP5227604B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8099538B2 (en) * 2006-03-29 2012-01-17 Intel Corporation Increasing functionality of a reader-writer lock
JP6948021B2 (ja) * 2016-04-08 2021-10-13 大日本印刷株式会社 電子情報記憶媒体、情報処理方法、及び情報処理プログラム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6491246A (en) * 1987-10-01 1989-04-10 Nec Corp Pool semaphore control system
JPH05108450A (ja) * 1991-10-11 1993-04-30 Pfu Ltd フアイル資源獲得処理方式
JPH0651999A (ja) * 1992-08-04 1994-02-25 Hitachi Ltd 資源排他制御機能を有する情報処理システム
JPH07121421A (ja) * 1993-10-25 1995-05-12 Nec Corp ファイルの排他制御システム及びそのシステムを用いたファイルの排他制御方法
JP3056038B2 (ja) * 1994-03-30 2000-06-26 日本電気株式会社 ボリューム管理テーブル障害復旧方式
JPH09330240A (ja) * 1996-06-10 1997-12-22 Nec Corp 資源排他制御方式
US6237019B1 (en) * 1998-03-18 2001-05-22 International Business Machines Corporation Method and apparatus for performing a semaphore operation
JP2005055961A (ja) * 2003-08-05 2005-03-03 Toshiba Solutions Corp タスク間通信プログラム及びタスク間通信方法
JP2007179190A (ja) * 2005-12-27 2007-07-12 Mitsubishi Electric Corp セマフォ管理方法、およびセマフォ管理プログラム
JP3976065B2 (ja) * 2006-01-16 2007-09-12 セイコーエプソン株式会社 マルチプロセッサシステム及びマルチプロセッサシステムの割込み制御方法をコンピュータに実行させるためのプログラム

Also Published As

Publication number Publication date
JP2009193362A (ja) 2009-08-27

Similar Documents

Publication Publication Date Title
US8117641B2 (en) Control device and control method for information system
US11334408B2 (en) Big data distributed processing and secure data transferring with fault handling
JPH0836513A (ja) データ管理方法及びデータ管理エラー回復方法
JP5168112B2 (ja) パッチ適用装置、パッチ適用方法およびパッチ適用プログラム
US9542226B2 (en) Operating programs on a computer cluster
US8132174B2 (en) Concurrency management in cluster computing of business applications
WO2018092206A1 (ja) 情報処理装置、デバイス割り当て方法およびデバイス割り当てプログラム
US11321430B2 (en) Big data distributed processing and secure data transferring with obfuscation
US11363029B2 (en) Big data distributed processing and secure data transferring with hyper fencing
US12001570B2 (en) Big data distributed processing and secure data transferring with resource allocation and rebate
JP5227604B2 (ja) 情報処理システム、ファイルの排他制御方法、及び排他制御プログラム
US7987225B2 (en) Method for remembering resource allocation in grids
US20110225463A1 (en) Detecting and recovering from process failures
CN110377614B (zh) 一种分布式环境下的订单处理锁系统
US9727381B2 (en) Image forming apparatus and resource management method
CN110019057B (zh) 请求处理方法及装置
US20130086013A1 (en) System and method of saving files to a version control system ("vcs") repository
JP5907292B2 (ja) 設備備品予約システム、情報処理装置、制御方法、及びプログラム
US9753775B2 (en) Resource management apparatus and resource management method
US20150046414A1 (en) Computer product, managing apparatus, and managing method
JP5471606B2 (ja) 検疫システム、検疫方法、及び検疫プログラム
US11379603B2 (en) Big data distributed processing and secure data transferring with fallback control
US9607006B2 (en) Temporary distributed file persistence
KR20170020290A (ko) 사물 인터넷에서의 연관된 트랜잭션 처리 방법, 이를 위한 사물 인터넷 통신 노드, 및 이들을 이용한 사물 인터넷 망
JP5397076B2 (ja) ジョブ実行装置、ジョブ実行方法およびジョブ実行プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100816

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120704

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120710

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120831

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130219

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130318

R150 Certificate of patent or registration of utility model

Ref document number: 5227604

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160322

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees