(57)【特許請求の範囲】
【請求項１】
複数のプロセスを所定の順序で実行するタスクをｎ個（ｎはｎ＞１となる整数）同時に実行可能なマルチタスクＯＳ（オペレーティングシステム）に対し、プロセス間の排他実行制御を行う排他実行制御装置であって、
排他実行制御用のデータをタスクごとに格納可能な記憶領域を記憶装置内に設定する記憶領域設定部と、
ｎ個のタスクのそれぞれで実行される第１の排他実行制御用のプロセスＰ１を生成する第１の排他実行制御用プロセス生成部であって、タスクＴで起動されると当該起動時刻を示すデータを当該タスクＴの排他実行制御用のデータとして前記記憶領域に格納するプロセスＰ１であり、前記記憶領域に格納されている排他実行制御用のデータのうち、当該タスクＴの排他実行制御用のデータが最先の時刻を示すデータになった後に終了するプロセスＰ１を生成する第１の排他実行制御用プロセス生成部と、
ｎ個のタスクのそれぞれで実行される第２の排他実行制御用のプロセスＰ２を生成する第２の排他実行制御用プロセス生成部であって、タスクＴで起動されると当該タスクＴの排他実行制御用のデータを前記記憶領域から削除した後に終了するプロセスＰ２を生成する第２の排他実行制御用プロセス生成部と、
ｎ個のタスクのそれぞれにて、排他実行制御の対象となるプロセスの前に、前記第１の排他実行制御用プロセス生成部が生成したプロセスＰ１を前記マルチタスクＯＳに実行させ、当該排他実行制御の対象となるプロセスの後に、前記第２の排他実行制御用プロセス生成部が生成したプロセスＰ２を前記マルチタスクＯＳに実行させることで、前記マルチタスクＯＳにより同時に実行されるタスクにてプロセスＰ１の終了後に排他実行制御の対象となるプロセスが起動され、当該排他実行制御の対象となるプロセスの終了後にプロセスＰ２が起動されるように制御する排他実行制御部とを備えることを特徴とする排他実行制御装置。
【請求項２】
前記排他実行制御装置は、さらに、
実行中のタスクを示すタスクリストを記憶装置内で管理するタスクリスト管理部と、
一定の時間ごとに、前記タスクリスト管理部が管理しているタスクリストを参照し、前記記憶領域に格納されている排他実行制御用のデータのうち、最先の時刻を示すデータが当該タスクリストにて実行中のタスクとして示されていないタスクの排他実行制御用のデータである場合には、当該タスクが異常終了したと判断し、当該タスクの排他実行制御用のデータを前記記憶領域から削除するタスク監視部とを備えることを特徴とする請求項１に記載の排他実行制御装置。
【請求項３】
前記排他実行制御部は、ｎ個のタスクのそれぞれにて、排他実行制御の対象となるプロセスの直前にプロセスＰ１を前記マルチタスクＯＳに実行させ、当該排他実行制御の対象となるプロセスの直後にプロセスＰ２を前記マルチタスクＯＳに実行させることを特徴とする請求項１又は２に記載の排他実行制御装置。
【請求項４】
前記記憶領域は、複数のファイルを格納可能なフォルダであり、
プロセスＰ１は、タスクＴで起動されると当該起動時刻と当該タスクＴの識別子とを組み合わせた名前をもつファイルを当該タスクＴの排他実行制御用のデータとして前記フォルダに格納するプロセスであることを特徴とする請求項１から３までのいずれかに記載の排他実行制御装置。
【請求項５】
複数のプロセスを所定の順序で実行するタスクをｎ個（ｎはｎ＞１となる整数）同時に実行可能なマルチタスクＯＳ（オペレーティングシステム）に対し、プロセス間の排他実行制御を行う排他実行制御プログラムであって、
排他実行制御用のデータをタスクごとに格納可能な記憶領域を記憶装置内に設定する記憶領域設定処理と、
ｎ個のタスクのそれぞれで実行される第１の排他実行制御用のプロセスＰ１を生成する第１の排他実行制御用プロセス生成処理であって、タスクＴで起動されると当該起動時刻を示すデータを当該タスクＴの排他実行制御用のデータとして前記記憶領域に格納するプロセスＰ１であり、前記記憶領域に格納されている排他実行制御用のデータのうち、当該タスクＴの排他実行制御用のデータが最先の時刻を示すデータになった後に終了するプロセスＰ１を生成する第１の排他実行制御用プロセス生成処理と、
ｎ個のタスクのそれぞれで実行される第２の排他実行制御用のプロセスＰ２を生成する第２の排他実行制御用プロセス生成処理であって、タスクＴで起動されると当該タスクＴの排他実行制御用のデータを前記記憶領域から削除した後に終了するプロセスＰ２を生成する第２の排他実行制御用プロセス生成処理と、
ｎ個のタスクのそれぞれにて、排他実行制御の対象となるプロセスの前に、前記第１の排他実行制御用プロセス生成処理が生成したプロセスＰ１を前記マルチタスクＯＳに実行させ、当該排他実行制御の対象となるプロセスの後に、前記第２の排他実行制御用プロセス生成処理が生成したプロセスＰ２を前記マルチタスクＯＳに実行させることで、前記マルチタスクＯＳにより同時に実行されるタスクにてプロセスＰ１の終了後に排他実行制御の対象となるプロセスが起動され、当該排他実行制御の対象となるプロセスの終了後にプロセスＰ２が起動されるように制御する排他実行制御処理とをコンピュータに実行させることを特徴とする排他実行制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、排他実行制御装置及び排他実行制御プログラムに関するものである。本発明は、特に、マルチタスクＯＳ（オペレーティングシステム）での相互並行実行ができないプロセスを含む複数のプロセスが分離不可能な形式で組み合わされたタスクが複数存在する場合における、異なるタスク内の、相互並行実行ができないプロセス同士の排他制御機能に関するものである。
【背景技術】
【０００２】
従来、複数のプログラムを直列的に実行するように構成しているスクリプトを解析し、並列的に実行可能なプログラムを検出し、検出したプログラムについては並列的に実行するように当該スクリプトを再構成する技術があった（例えば、特許文献１、２参照）。
【特許文献１】特表２００３−５２９８０８号公報
【特許文献２】特開２００１−１２５８７２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
マルチタスクＯＳ（オペレーティングシステム）は、複数のプロセスを所定の順序で実行するタスクを２個以上同時に実行可能なＯＳである。ここで、タスクの一例を図１（ｉ）に示す。また、マルチタスクＯＳが備える既存のジョブスケジューラ（「タスクスケジューラ」ともいう）が、図１（ｉ）に示したタスクを実行制御した場合の各プロセスの実行タイミングを図２に示す。
【０００４】
図１（ｉ）において、タスクαはプロセスＡ１、Ｂ１、Ｃ１を含み、タスクβはプロセスＡ２、Ｂ２、Ｃ２を含み、タスクγはプロセスＡ３、Ｂ３、Ｃ３を含む。タスクαでは各プロセスがＡ１、Ｂ１、Ｃ１の順番に実行される。プロセスＡ１、Ｂ１、Ｃ１を別々のタスクに分離したり、順番を入れ替えたりすることはできないものとする。つまり、プロセスＡ１、Ｂ１、Ｃ１は分離不可能なプロセスである。タスクβでも分離不可能なプロセスがＡ２、Ｂ２、Ｃ２の順番に実行され、タスクγでも分離不可能なプロセスがＡ３、Ｂ３、Ｃ３の順番に実行されるものとする。図中、プロセスを示すブロックの幅はプロセスの実行時間を示している。また、ブロック内の文字列（例えば「Ａ１」）はプロセス名称を示している。プロセス名称を白抜きで表しているものがあるが（例えば「Ｂ１」）、これは、当該プロセスが同時に実行できないものであること、即ち、相互に排他制御の必要なプロセスであることを示している。
【０００５】
例えば、プロセスＡ１とＢ１が、あるデータを第１のシステムから第２のシステムへ移行する際に、共通の変数を利用して当該データの形式の変換処理を行うプロセスである場合、これらは分離不可能なプロセスである。同様に、プロセスＡ２とＢ２が、あるデータを第３のシステムから第４のシステムへ移行する際に、共通の変数を利用して当該データの形式の変換処理を行うプロセスである場合、これらは分離不可能なプロセスである。このとき、プロセスＢ１とＢ２が、それぞれの変換処理を行う際に、メモリ内の同じ領域を利用してデータの書き込みなどを行う場合、これらは相互に排他制御の必要なプロセスに該当する。
【０００６】
図２において、ジョブスケジューラは、同時並行稼働が不可能なプロセスＢ１、Ｂ２、Ｂ３について排他実行制御を行うのにあわせて、同時並行稼働が可能なプロセスＡ１、Ａ２、Ａ３、Ｃ１、Ｃ２、Ｃ３も含むタスクα１、β１、γ１全体について排他実行制御を行っている（なお、タスクαが複数回実行されるとき、１番目に実行されたタスクαをα１、２番目に実行されたタスクαをα２、・・・とする。タスクβ、γについても同様である）。具体的には、ジョブスケジューラは、タスクα１、β１、γ１が直列的に実行されるように実行制御を行っている。この場合、排他実行制御の必要なプロセスが含まれるタスクの数が多いと、全てのタスクを実行するのにかかる時間が増大し、システム性能が劣化する。
【０００７】
前述した従来の技術は、スクリプトで直列的に実行するように構成された複数のプログラムのうち、並列的に実行可能なものについては並列的に実行するように当該スクリプトを再構成するものであったが、分離不可能なプロセス、及び、分離不可能なプロセスを含むタスクについて利用できるものではなかった。一方、分離不可能なプロセス（例えばプロセスＡ１とＢ１）を変更して独立プロセス化し、タスクの構成を変更することにより、既存のジョブスケジューラを用いた実行制御のみでも一部のプロセスが並列的に実行されるように構成することは可能である。しかしながら、この場合、各プロセスを独立プロセス化するためのプロセス自体の修正、タスクの組み直し、ジョブスケジューラ上でのタスクの再登録など、煩雑な作業が必要になるという課題があった。
【０００８】
本発明は、例えば、相互並行実行ができないプロセスを含む複数のプロセスが分離不可能な形式で組み合わされたタスクが複数存在する場合に、異なるタスク内の、相互並行実行ができないプロセス同士の排他制御を行って、プロセスの修正、タスクの組み直しなどを行うことなく、一部のプロセスを並列的に実行し、全てのタスクを実行するのにかかる時間を短縮することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一の態様に係る排他実行制御装置は、
複数のプロセスを所定の順序で実行するタスクをｎ個（ｎはｎ＞１となる整数）同時に実行可能なマルチタスクＯＳ（オペレーティングシステム）に対し、プロセス間の排他実行制御を行う排他実行制御装置であって、
排他実行制御用のデータをタスクごとに格納可能な記憶領域を記憶装置内に設定する記憶領域設定部と、
ｎ個のタスクのそれぞれに追加される第１の排他実行制御用のプロセスＰ１であって、タスクＴに追加されたプロセスＰ１が起動されると当該起動時刻を示すデータを当該タスクＴの排他実行制御用のデータとして前記記憶領域に格納し、前記記憶領域に格納されている排他実行制御用のデータのうち、当該タスクＴの排他実行制御用のデータが最先の時刻を示すデータに該当するまで待機した後に終了するプロセスＰ１を生成する第１の排他実行制御用プロセス生成部と、
ｎ個のタスクのそれぞれに追加される第２の排他実行制御用のプロセスＰ２であって、タスクＴに追加されたプロセスＰ２が起動されると当該タスクＴの排他実行制御用のデータを前記記憶領域から削除した後に終了するプロセスＰ２を生成する第２の排他実行制御用プロセス生成部と、
ｎ個のタスクのそれぞれにて排他実行制御の対象となるプロセスの前に、前記第１の排他実行制御用プロセス生成部が生成したプロセスＰ１を追加し、当該排他実行制御の対象となるプロセスの後に、前記第２の排他実行制御用プロセス生成部が生成したプロセスＰ２を追加することで、前記マルチタスクＯＳにより同時に実行されるタスクにてプロセスＰ１の終了後に排他実行制御の対象となるプロセスが起動され、当該排他実行制御の対象となるプロセスの終了後にプロセスＰ２が起動されるように制御する排他実行制御部とを備えることを特徴とする。
【００１０】
前記排他実行制御装置は、さらに、
実行中のタスクを示すタスクリストを記憶装置内で管理するタスクリスト管理部と、
一定の時間ごとに、前記タスクリスト管理部が管理しているタスクリストを参照し、前記記憶領域に格納されている排他実行制御用のデータのうち、最先の時刻を示すデータが当該タスクリストにて実行中のタスクとして示されていないタスクの排他実行制御用のデータである場合には、当該タスクが異常終了したと判断し、当該タスクの排他実行制御用のデータを前記記憶領域から削除するタスク監視部とを備えることを特徴とする。
【００１１】
前記排他実行制御部は、ｎ個のタスクのそれぞれにて排他実行制御の対象となるプロセスの直前にプロセスＰ１を追加し、当該排他実行制御の対象となるプロセスの直後にプロセスＰ２を追加することを特徴とする。
【００１２】
前記記憶領域は、複数のファイルを格納可能なフォルダであり、
プロセスＰ１は、タスクＴに追加されたプロセスＰ１が起動されると当該起動時刻と当該タスクＴの識別子とを組み合わせた名前をもつファイルを当該タスクＴの排他実行制御用のデータとして前記フォルダに格納するものであることを特徴とする。
【００１３】
本発明の一の態様に係る排他実行制御プログラムは、
複数のプロセスを所定の順序で実行するタスクをｎ個（ｎはｎ＞１となる整数）同時に実行可能なマルチタスクＯＳ（オペレーティングシステム）に対し、プロセス間の排他実行制御を行う排他実行制御プログラムであって、
排他実行制御用のデータをタスクごとに格納可能な記憶領域を記憶装置内に設定する記憶領域設定処理と、
ｎ個のタスクのそれぞれに追加される第１の排他実行制御用のプロセスＰ１であって、タスクＴに追加されたプロセスＰ１が起動されると当該起動時刻を示すデータを当該タスクＴの排他実行制御用のデータとして前記記憶領域に格納し、前記記憶領域に格納されている排他実行制御用のデータのうち、当該タスクＴの排他実行制御用のデータが最先の時刻を示すデータに該当するまで待機した後に終了するプロセスＰ１を生成する第１の排他実行制御用プロセス生成処理と、
ｎ個のタスクのそれぞれに追加される第２の排他実行制御用のプロセスＰ２であって、タスクＴに追加されたプロセスＰ２が起動されると当該タスクＴの排他実行制御用のデータを前記記憶領域から削除した後に終了するプロセスＰ２を生成する第２の排他実行制御用プロセス生成処理と、
ｎ個のタスクのそれぞれにて排他実行制御の対象となるプロセスの前に、前記第１の排他実行制御用プロセス生成処理が生成したプロセスＰ１を追加し、当該排他実行制御の対象となるプロセスの後に、前記第２の排他実行制御用プロセス生成処理が生成したプロセスＰ２を追加することで、前記マルチタスクＯＳにより同時に実行されるタスクにてプロセスＰ１の終了後に排他実行制御の対象となるプロセスが起動され、当該排他実行制御の対象となるプロセスの終了後にプロセスＰ２が起動されるように制御する排他実行制御処理とをコンピュータに実行させることを特徴とする。
【発明の効果】
【００１４】
本発明の一の態様によれば、例えば、相互並行実行ができないプロセスを含む複数のプロセスが分離不可能な形式で組み合わされたタスクが複数存在する場合に、異なるタスク内の、相互並行実行ができないプロセス同士の排他制御を行って、プロセスの修正、タスクの組み直しなどを行うことなく、一部のプロセスを並列的に実行し、全てのタスクを実行するのにかかる時間を短縮することが可能となる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態について、図を用いて説明する。
【００１６】
実施の形態１．
図３は、本実施の形態に係る排他実行制御装置１００の構成を示すブロック図である。
【００１７】
図３において、排他実行制御装置１００は、記憶領域設定部１０１、第１の排他実行制御用プロセス生成部１０２、第２の排他実行制御用プロセス生成部１０３、排他実行制御部１０４を備える。排他実行制御装置１００の各部の動作については後述する。
【００１８】
また、排他実行制御装置１００は、処理装置１５１、記憶装置１５２、入力装置１５３、出力装置１５４などのハードウェアを備える。ハードウェアは排他実行制御装置１００の各部によって利用される。例えば、処理装置１５１は、排他実行制御装置１００の各部でデータや情報の演算、加工、読み取り、書き込みなどを行うために利用される。記憶装置１５２は、そのデータや情報を記憶するために利用される。入力装置１５３は、そのデータや情報を入力するために、出力装置１５４は、そのデータや情報を出力するために利用される。
【００１９】
図４は、排他実行制御装置１００のハードウェア構成の一例を示す図である。
【００２０】
図４において、排他実行制御装置１００は、コンピュータであり、ＣＲＴ（Ｃａｔｈｏｄｅ・Ｒａｙ・Ｔｕｂｅ）やＬＣＤ（液晶ディスプレイ）の表示画面を有する表示装置９０１、キーボード９０２（Ｋ／Ｂ）、マウス９０３、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ・Ｄｉｓｋ・Ｄｒｉｖｅ）、ＣＤＤ９０５（Ｃｏｍｐａｃｔ・Ｄｉｓｃ・Ｄｒｉｖｅ）、プリンタ装置９０６などのハードウェアを備え、これらはケーブルや信号線で接続されている。
【００２１】
排他実行制御装置１００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ）を備えている。ＣＰＵ９１１は、処理装置１５１の一例である。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３（Ｒｅａｄ・Ｏｎｌｙ・Ｍｅｍｏｒｙ）、ＲＡＭ９１４（Ｒａｎｄｏｍ・Ａｃｃｅｓｓ・Ｍｅｍｏｒｙ）、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、ＦＤＤ９０４、ＣＤＤ９０５、プリンタ装置９０６、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置９２０の代わりに、光ディスク装置、メモリカードリーダライタなどの記憶媒体が用いられてもよい。
【００２２】
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置１５２の一例である。通信ボード９１５、キーボード９０２、マウス９０３、ＦＤＤ９０４、ＣＤＤ９０５などは、入力装置１５３の一例である。また、通信ボード９１５、表示装置９０１、プリンタ装置９０６などは、出力装置１５４の一例である。
【００２３】
通信ボード９１５は、ＬＡＮ（ローカルエリアネットワーク）などに接続されている。通信ボード９１５は、ＬＡＮに限らず、インターネット、あるいは、ＩＰ−ＶＰＮ（Ｉｎｔｅｒｎｅｔ・Ｐｒｏｔｏｃｏｌ・Ｖｉｒｔｕａｌ・Ｐｒｉｖａｔｅ・Ｎｅｔｗｏｒｋ）、広域ＬＡＮ、ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ・Ｔｒａｎｓｆｅｒ・Ｍｏｄｅ）ネットワークなどのＷＡＮ（ワイドエリアネットワーク）などに接続されていても構わない。ＬＡＮ、インターネット、ＷＡＮは、ネットワークの一例である。
【００２４】
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、オペレーティングシステム９２１、ウィンドウシステム９２２により実行される。オペレーティングシステム９２１は、複数のプロセスを所定の順序で実行するタスクをｎ個（ｎはｎ＞１となる整数）同時に実行可能なマルチタスクＯＳである。プログラム群９２３には、本実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。また、ファイル群９２４には、本実施の形態の説明において、「〜データ」、「〜情報」、「〜ＩＤ（識別子）」、「〜フラグ」、「〜結果」として説明するデータや情報や信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」や「〜テーブル」の各項目として記憶されている。「〜ファイル」や「〜データベース」や「〜テーブル」は、ディスクやメモリなどの記憶媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶されたデータや情報や信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・制御・出力・印刷・表示などのＣＰＵ９１１の処理（動作）に用いられる。抽出・検索・参照・比較・演算・計算・制御・出力・印刷・表示などのＣＰＵ９１１の処理中、データや情報や信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【００２５】
また、本実施の形態の説明において用いるブロック図やフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号は、ＲＡＭ９１４などのメモリ、ＦＤＤ９０４のフレキシブルディスク（ＦＤ）、ＣＤＤ９０５のコンパクトディスク（ＣＤ）、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク（ＭＤ）、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｃ）などの記録媒体に記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体により伝送される。
【００２６】
また、本実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜工程」、「〜手順」、「〜処理」であってもよい。即ち、「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。あるいは、ソフトウェアのみ、あるいは、素子・デバイス・基板・配線などのハードウェアのみ、あるいは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実現されていても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤなどの記録媒体に記憶される。このプログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。即ち、プログラムは、本実施の形態の説明で述べる「〜部」としてコンピュータを機能させるものである。あるいは、本実施の形態の説明で述べる「〜部」の手順や方法をコンピュータに実行させるものである。
【００２７】
以下では、排他実行制御装置１００の動作について説明する。
【００２８】
排他実行制御装置１００は、マルチタスクＯＳであるオペレーティングシステム９２１に対し、プロセス間の排他実行制御を行う。以下の説明では、オペレーティングシステム９２１が同時に実行可能なｎ個のタスクをタスクＪ１、・・・、Ｊｎと表記する。
【００２９】
図５及び図６は、排他実行制御装置１００の動作（本実施の形態に係る排他実行制御プログラムの処理手順）を示すフローチャートである。
【００３０】
ステップＳ１０１（記憶領域設定処理）において、記憶領域設定部１０１は、排他実行制御用のデータをタスクごとに格納可能な記憶領域を記憶装置１５２（例えば、ＲＡＭ９１４や磁気ディスク装置９２０）内に設定する。ここでは、記憶領域設定部１０１は、記憶領域の一例として、複数のファイルを格納可能な固定フォルダＦを作成し、記憶装置１５２内に保存するものとする。フォルダＦは初期状態では空であるが、後述するように、フォルダＦには、タスクＪ１、・・・、Ｊｎのうち、１個又は２個以上のタスクの排他実行制御用のデータが、それぞれ１つのファイルとして格納されることになる。
【００３１】
ステップＳ１０２において、オペレーティングシステム９２１が備えるジョブスケジューラは、タスクＪ１、・・・、Ｊｎの実行スケジュールＳを設定する。
【００３２】
ステップＳ１０３〜Ｓ１１８（排他実行制御処理）において、排他実行制御部１０４は、タスクＪ１、・・・、Ｊｎのそれぞれにて排他実行制御の対象となるプロセスの前に、第１の排他実行制御用のプロセスＰ１を追加し、当該排他実行制御の対象となるプロセスの後に、第２の排他実行制御用のプロセスＰ２を追加する。これにより、排他実行制御部１０４は、タスクＪ１、・・・、Ｊｎのうち、２個以上のタスクがオペレーティングシステム９２１により同時に実行される場合に、それぞれのタスクにてプロセスＰ１の終了後に排他実行制御の対象となるプロセスが起動され、当該排他実行制御の対象となるプロセスの終了後にプロセスＰ２が起動されるように制御することができる。ここで、図１（ｉ）に示したタスクα、β、γに排他実行制御部１０４がプロセスＰ１、Ｐ２を追加した例を図１（ｉｉ）に示す。また、オペレーティングシステム９２１が備えるジョブスケジューラが、図１（ｉｉ）に示したタスクを実行制御した場合の各プロセスの実行タイミングを図７に示す。
【００３３】
図１（ｉｉ）において、タスクα内では、プロセスＡ１とＢ１の間にプロセスＰ１が追加され、プロセスＢ１とＣ１の間にプロセスＰ２が追加されている。同様に、タスクβ内では、プロセスＡ２とＢ２の間にプロセスＰ１が追加され、プロセスＢ２とＣ２の間にプロセスＰ２が追加され、タスクγ内では、プロセスＡ３とＢ３の間にプロセスＰ１が追加され、プロセスＢ３とＣ３の間にプロセスＰ２が追加されている。排他実行制御を行うためには、プロセスＰ１は、排他実行制御の対象となるプロセスの前に追加されていればよいため、例えば、タスクα内ではプロセスＡ１の前に追加されてもよいが、図１（ｉｉ）に示したように、排他実行制御の対象となるプロセスの直前に追加されることが望ましい。同様に、プロセスＰ２は、排他実行制御の対象となるプロセスの後に追加されていればよいため、例えば、タスクα内ではプロセスＣ１の後に追加されてもよいが、図１（ｉｉ）に示したように、排他実行制御の対象となるプロセスの直後に追加されることが望ましい。
【００３４】
以下、図５から図７までを用いて、排他実行制御処理の詳細について説明する。排他実行制御処理はタスクＪ１、・・・、Ｊｎ全体に対して実行される処理であるが、説明の便宜上、１つのタスクＪｉ（ｉは１≦ｉ≦ｎとなる整数）に対して実行される処理のみについて説明する。よって、実際の排他実行制御処理では、以下で説明する処理と同様の処理が他のｎ−１個のタスクに対しても実行されることになる。
【００３５】
ステップＳ１０３において、タスクＪｉ内で次に実行されるプロセスがない場合（タスクＪｉの実行が終了した場合）、排他実行制御処理は終了する。一方、タスクＪｉ内で次に実行されるプロセスＸｊがある場合、ステップＳ１０４へ進む。
【００３６】
ステップＳ１０４において、排他実行制御部１０４は、タスクＪｉ内のプロセスＸｊが排他実行制御の対象であるか否かを処理装置１５１（例えばＣＰＵ９１１）により判定する。具体的な判定方法としては、例えばプロセスＸｊが他のプロセスと同時に実行可能なものかどうかを示す変数を予め記憶装置１５２に記憶しておき、排他実行制御部１０４が、この変数を参照することにより当該判定を行うという方法をとることができる。プロセスＸｊが排他実行制御の対象ではない場合、ステップＳ１０５へ進む。一方、プロセスＸｊが排他実行制御の対象である場合、ステップＳ１０６へ進む。
【００３７】
ステップＳ１０５において、オペレーティングシステム９２１によりタスクＪｉ内のプロセスＸｊが実行された後（図７では例えばタスクα１内のプロセスＡ１が時刻ｔｓ００〜ｔｓ０４で実行されている）、ステップＳ１０３へ戻る。
【００３８】
ステップＳ１０６（第１の排他実行制御用プロセス生成処理）において、第１の排他実行制御用プロセス生成部１０２は、第１の排他実行制御用のプロセスＰ１を生成する。
【００３９】
ステップＳ１０７において、排他実行制御部１０４は、タスクＪｉ内のプロセスＸｊの直前に、ステップＳ１０６で第１の排他実行制御用プロセス生成部１０２が生成したプロセスＰ１を処理装置１５１により追加する（図７では例えばタスクα１内のプロセスＢ１の直前にプロセスＰ１が追加されている）。具体的なプロセスＰ１の追加方法としては、例えば排他実行制御部１０４が、プロセスＸｊの起動前にオペレーティングシステム９２１によりプロセスＰ１を起動させるという方法をとることができる。あるいは、例えばタスクＪｉがどのプロセスをどのような順番で実行するものかを定義するデータを予め記憶装置１５２に記憶しておき、排他実行制御部１０４が、このデータに対してプロセスＸｊの直前にプロセスＰ１を実行するという定義を追記するという方法をとることができる。
【００４０】
ステップＳ１０８において、オペレーティングシステム９２１によりタスクＪｉ内のプロセスＰ１が起動されると（図７では例えばタスクα１内のプロセスＰ１が時刻ｔｓ０５で起動されている）、ステップＳ１０９へ進む。
【００４１】
ステップＳ１０９において、タスクＪｉ内のプロセスＰ１は、タスクＪｉの排他実行制御用のデータとして、プロセスＰ１の起動時刻を示す時刻情報Ｔｋとタスク名称Ｊｉ（タスクＪｉの識別子）を組み合わせたＴｋ−Ｊｉをファイル名とするファイルを処理装置１５１により生成する（図７ではタスクα１のファイルとして「ｔｓ０５−α」という文字列をファイル名とするファイルが生成される）。そして、プロセスＰ１は、そのファイルを、ステップＳ１０１で記憶領域設定部１０１が作成したフォルダＦに格納する。タスクＪｉの排他実行制御用のデータはファイル以外の形式としてもよいが、ファイル形式とすることでシステム管理者がファイル名を目視で確認して排他実行制御処理を監視することが可能になり、利便性が向上する。ここで、排他実行制御用のデータとして生成されるファイルの一例を図８に示す。
【００４２】
図８において、フォルダＦには、タスクβの排他実行制御用のデータとして、「２００８０１０１＿１０１５２００００＿β」というファイル名（タスクβ内のプロセスＰ１の起動時刻が２００８年１月１日１０時１５分２０秒であることを示している）をもつファイルが格納されている。また、フォルダＦには、タスクαの排他実行制御用のデータとして、「２００８０１０１＿１０１５５５０００＿α」というファイル名（タスクα内のプロセスＰ１の起動時刻が２００８年１月１日１０時１５分５５秒であることを示している）をもつファイルが格納されている。また、フォルダＦには、タスクγの排他実行制御用のデータとして、「２００８０１０１＿１０１６１５０００＿γ」というファイル名（タスクγ内のプロセスＰ１の起動時刻が２００８年１月１日１０時１６分１５秒であることを示している）をもつファイルが格納されている。
【００４３】
ステップＳ１１０において、タスクＪｉ内のプロセスＰ１は、一定の時間間隔Ｈ（例えば数秒間隔）でフォルダＦのファイルリストＬをファイル名にて昇順にソートして内容を処理装置１５１により確認する（図７では例えばタスクα１内のプロセスＰ１が１単位時間ｔｓごとにファイルリストＬを昇順にソートして内容を確認しており、例えば時刻ｔｓ０６のとき、ファイルリストＬ内で１番目のファイルは「ｔｓ０４−β」をファイル名とするタスクβ１のファイル、２番目のファイルは「ｔｓ０５−α」をファイル名とするタスクα１のファイルとなっている）。なお、ファイルリストＬとしては、オペレーティングシステム９２１が備えるファイルシステムにより管理されているものを利用することができる。
【００４４】
ステップＳ１１１において、ファイル名Ｔｋ−ＪｉのファイルがファイルリストＬ内で１番目のファイルでない場合（図７では例えば時刻ｔｓ０６のとき、「ｔｓ０５−α」をファイル名とするタスクα１のファイルではなく、「ｔｓ０４−β」をファイル名とするタスクβ１のファイルが１番目のファイルとなっている）、タスクＪｉ内のプロセスＰ１は待機する。一方、ファイル名Ｔｋ−ＪｉのファイルがファイルリストＬ内で１番目のファイルである場合（図７では、明示していないが、例えば時刻ｔｓ０８のとき、「ｔｓ０４−β」をファイル名とするタスクβ１のファイルがタスクβ１内のプロセスＰ２によって削除されるため、「ｔｓ０５−α」をファイル名とするタスクα１のファイルが１番目のファイルとなる）、ステップＳ１１２へ進む。
【００４５】
ステップＳ１１２において、タスクＪｉ内のプロセスＰ１は終了し（図７では例えばタスクα１内のプロセスＰ１が時刻ｔｓ０８で終了している）、ステップＳ１１３へ進む。
【００４６】
このように、ステップＳ１１０〜Ｓ１１２において、タスクＪｉ内のプロセスＰ１は、タスクＪｉの排他実行制御用のデータとしてフォルダＦに格納されたファイルがフォルダＦ内で最先の時刻を示すファイルに該当するまで待機した後に終了する。
【００４７】
ステップＳ１１３において、オペレーティングシステム９２１によりタスクＪｉ内のプロセスＸｊが実行されると（図７では例えばタスクα１内のプロセスＢ１が時刻ｔｓ０９〜ｔｓ１１で実行されている）、ステップＳ１１４へ進む。
【００４８】
ステップＳ１１４（第２の排他実行制御用プロセス生成処理）において、第２の排他実行制御用プロセス生成部１０３は、第２の排他実行制御用のプロセスＰ２を生成する。
【００４９】
ステップＳ１１５において、排他実行制御部１０４は、タスクＪｉ内のプロセスＸｊの直後に、ステップＳ１１４で第２の排他実行制御用プロセス生成部１０３が生成したプロセスＰ２を処理装置１５１により追加する（図７では例えばタスクα１内のプロセスＢ１の直後にプロセスＰ２が追加されている）。具体的なプロセスＰ２の追加方法としては、前述したプロセスＰ１の追加方法と同様の方法をとることができる。
【００５０】
ステップＳ１１６において、オペレーティングシステム９２１によりタスクＪｉ内のプロセスＰ２が起動されると（図７では例えばタスクα１内のプロセスＰ２が時刻ｔｓ１２で起動されている）、ステップＳ１１７へ進む。
【００５１】
ステップＳ１１７において、タスクＪｉ内のプロセスＰ２は、ファイル名Ｔｋ−ＪｉのファイルをフォルダＦから処理装置１５１により削除する（図７では例えばタスクα１内のプロセスＰ２が時刻ｔｓ１２で「ｔｓ０５−α」をファイル名とするタスクα１のファイルをフォルダＦから削除する）。
【００５２】
ステップＳ１１８において、タスクＪｉ内のプロセスＰ２は終了し（図７では例えばタスクα１内のプロセスＰ２が時刻ｔｓ１２で終了している）、ステップＳ１０３へ戻る。
【００５３】
このように、ステップＳ１１７、Ｓ１１８において、タスクＪｉ内のプロセスＰ２は、タスクＪｉの排他実行制御用のデータとしてフォルダＦに格納されたファイルをフォルダＦから削除した後に終了する。
【００５４】
図５及び図６のフローチャートに示した処理は、必ずしも図示された通りの順序で実行されなければならないわけではない。例えば、ステップＳ１０６、Ｓ１１４にて排他実行制御用のプロセスＰ１、Ｐ２を生成する処理やステップＳ１０７、Ｓ１１５にて排他実行制御用のプロセスＰ１、Ｐ２をタスクに追加する処理は、当該タスクの実行の開始前に予め実行しておいてもよいものである。
【００５５】
以上のように、本実施の形態によれば、同時並行実行可能なプロセスと排他実行制御を行う必要のあるプロセスを組み合わせたタスクが複数存在し、個々のプロセスを独立してタスク化することができない場合に、これを既存のジョブスケジューラを利用して、マルチタスクＯＳにて並列的に実行することが可能となる。そのために、本実施の形態では、排他実行制御を行うプロセスの直前・直後に、自らファイルを利用した排他実行制御を行うプロセスを対象タスク全てに一律に組み入れることで、同時並行実行可能なプロセスは同時並行実行し、排他実行制御が必要なプロセスのみ排他実行制御する。本実施の形態では、タスクの実行順には関係なく、同時並行実行可能なプロセスについては、その到着順に実行することができるため、タスク群全体のスループットが向上し、全てのタスクを実行するのにかかる時間を短縮することができる。
【００５６】
実施の形態２．
本実施の形態について、主に実施の形態１との差異を説明する。
【００５７】
図９は、本実施の形態に係る排他実行制御装置１００の構成を示すブロック図である。
【００５８】
図９において、排他実行制御装置１００は、実施の形態１と同様に、図３に示した記憶領域設定部１０１、第１の排他実行制御用プロセス生成部１０２、第２の排他実行制御用プロセス生成部１０３、排他実行制御部１０４を備えるほか、さらに、タスクリスト管理部１０５、タスク監視部１０６を備える。排他実行制御装置１００の各部の動作については後述する。
【００５９】
ここで、実施の形態１の説明で図７に示した例において、タスクα１内のプロセスＢ１が異常終了した場合の各プロセスの実行タイミングを図１０に示す。
【００６０】
図１０において、タスクα１内のプロセスＢ１は時刻ｔｓ１１で異常終了している。そのため、本来、タスクα１内でプロセスＢ１の終了後に起動されるべきプロセスＰ２が起動されず、時刻ｔｓ１２以降もフォルダＦのファイルリストＬの１番目には「ｔｓ０５−α」をファイル名とするタスクα１のファイルが残ったままとなる。
【００６１】
タスクγ１内では、プロセスＰ１が時刻ｔｓ０９で起動されている。このプロセスＰ１は、１単位時間ｔｓごとにフォルダＦのファイルリストＬをファイル名にて昇順にソートして内容を確認しており、時刻ｔｓ１０のとき、ファイルリストＬ内で１番目のファイルは「ｔｓ０５−α」をファイル名とするタスクα１のファイル、２番目のファイルは「ｔｓ０９−γ」をファイル名とするタスクγ１のファイルとなっている。時刻ｔｓ１４のとき、実際にはタスクα１内のプロセスＢ１は既に終了しているため、ファイルリストＬ内で「ｔｓ０９−γ」をファイル名とするタスクγ１のファイルが１番目になっていなければならないが、「ｔｓ０５−α」をファイル名とするタスクα１のファイルが１番目に残ったままである。そのため、タスクγ１内のプロセスＰ１は待機し続け、いつまでも終了することができない。同様に、タスクβ２内では、プロセスＰ１が時刻ｔｓ１９で起動されているが、このプロセスＰ１も待機し続け、いつまでも終了することができない。その結果、システムが停止状態に陥ってしまう。
【００６２】
以下では、排他実行制御装置１００の動作について説明する。
【００６３】
排他実行制御装置１００は、実施の形態１と同様に、図５及び図６に示した動作を行う。図１０を用いて説明したような状態の発生を防ぐために、本実施の形態では、排他実行制御装置１００は、さらに、タスクの監視・制御を繰り返し実行することで、安定稼働を図っている。
【００６４】
図１１は、排他実行制御装置１００の動作（本実施の形態に係る排他実行制御プログラムの処理手順）を示すフローチャートである。
【００６５】
ステップＳ２０１〜Ｓ２０８（タスク監視処理）において、タスク監視部１０６は、一定の時間ごとに、タスクリスト管理部１０５が管理しているタスクリストを参照し、フォルダＦに格納されているファイルのうち、１番目のファイルが当該タスクリストにて実行中のタスクとして示されていないタスクのファイルである場合には、当該タスクが異常終了したと判断し、当該タスクのファイルをフォルダＦから削除する。実施の形態１の説明で図７に示した例において、タスクα１内のプロセスＢ１が異常終了した場合の本実施の形態における各プロセスの実行タイミングを図１２に示す。なお、本実施の形態では、同じタスクが同時に２つ以上実行されないようにジョブスケジューラにて制御されているものとする。図１２では例えばタスクβ１とβ２は同時に実行されないようにジョブスケジューラにて制御されている。これは、タスクβ１とβ２をタスクリスト内で区別できないからであるが、区別可能な形態をとるのであれば、このような制御は不要である。
【００６６】
以下、図１１及び図１２を用いて、タスク監視処理の詳細について説明する。タスク監視処理は、排他実行制御処理と並行して実行される処理である。
【００６７】
ステップＳ２０１において、タスク監視部１０６は、一定の時間間隔Ｈ´（実施の形態１におけるＨと同じであってもよいが、Ｈより長い時間間隔であることが望ましい）でフォルダＦのファイルリストＬをファイル名にて昇順にソートして内容を処理装置１５１により確認する（図１２では例えば時刻ｔｓ０２からタスク監視部１０６が４単位時間ごとにファイルリストＬを昇順にソートして内容を確認しており、例えば時刻ｔｓ１４のとき、ファイルリストＬ内で１番目のファイルは「ｔｓ０５−α」をファイル名とするタスクα１のファイル、２番目のファイルは「ｔｓ０９−γ」をファイル名とするタスクγ１のファイルとなっている）。
【００６８】
ステップＳ２０２において、タスク監視部１０６は、フォルダＦのファイルリストＬから１番目のファイルのファイル名Ｎ１を取得する（図１２では例えば時刻ｔｓ１４でタスク監視部１０６がファイル名Ｎ１として「ｔｓ０５−α」を取得する）。
【００６９】
ステップＳ２０３において、タスク監視部１０６は、タスクリスト管理部１０５が管理しているタスクリストを参照し、ファイル名Ｎ１にタスク名称が含まれるタスクが当該タスクリストに存在するか否かを処理装置１５１により判定する。ファイル名Ｎ１にタスク名称が含まれるタスクが当該タスクリストに存在する場合には（図１２では例えば時刻ｔｓ１０でファイル名Ｎ１は「ｔｓ０５−α」であり、タスクリストにはタスクαが含まれている）、ステップＳ２０１へ戻る。一方、ファイル名Ｎ１にタスク名称が含まれるタスクが当該タスクリストに存在しない場合には（図１２では例えば時刻ｔｓ１４でファイル名Ｎ１は「ｔｓ０５−α」であるが、はタスクαが含まれていない）、ステップＳ２０４へ進む。なお、タスクリストとしては、オペレーティングシステム９２１により管理されているものがあれば、それを利用してもよいし、それとは別のタスクリストを予め生成しておき、これを独自に管理し、利用してもよい。
【００７０】
ステップＳ２０４において、タスク監視部１０６は、再度フォルダＦのファイルリストＬをファイル名にて昇順にソートして内容を処理装置１５１により確認する（図１２では例えば時刻ｔｓ１４のとき、ファイルリストＬ内で１番目のファイルは「ｔｓ０５−α」をファイル名とするタスクα１のファイル、２番目のファイルは「ｔｓ０９−γ」をファイル名とするタスクγ１のファイルとなっている）。
【００７１】
ステップＳ２０５において、タスク監視部１０６は、フォルダＦのファイルリストＬから１番目のファイルのファイル名Ｎ２を取得する（図１２では例えば時刻ｔｓ１４でタスク監視部１０６がファイル名Ｎ２として「ｔｓ０５−α」を取得する）。
【００７２】
ステップＳ２０６において、タスク監視部１０６がステップＳ２０２で取得したファイル名Ｎ１とステップＳ２０５で取得したファイル名Ｎ２が同じでない場合、ステップＳ２０１へ戻る。一方、タスク監視部１０６がステップＳ２０２で取得したファイル名Ｎ１とステップＳ２０５で取得したファイル名Ｎ２が同じである場合、タスク監視部１０６は、ファイル名Ｎ１にタスク名称が含まれるタスクが異常終了したと処理装置１５１により判断し、ステップＳ２０７へ進む。
【００７３】
ステップＳ２０７において、タスク監視部１０６は、運用系アラームを出力装置１５４（例えば表示装置９０１）により発信し、システム管理者に異常があったことを通報する。
【００７４】
ステップＳ２０８において、タスク監視部１０６は、ファイル名Ｎ１（Ｎ２も同じ）のファイルをフォルダＦから処理装置１５１により削除する。
【００７５】
なお、ステップＳ２０４〜Ｓ２０６の処理は、ステップＳ２０２でファイルリストＬからファイル名Ｎ１を取得した後、ステップＳ２０３でタスクリストを参照するまでの間に、ファイル名Ｎ１にタスク名称が含まれるタスクが正常終了した場合に、誤って運用系アラームを発信しないようにするためのものである。したがって、ステップＳ２０１、Ｓ２０２でファイルリストＬを取得するのと同時又は直前にタスクリストを参照し、実行中のタスクのタスク名称を全て事前に特定しておくのであれば、ステップＳ２０３でファイル名Ｎ１に含まれるタスク名称が事前に特定しておいたタスク名称に含まれるか否かを判定するだけで、ステップＳ２０４〜Ｓ２０６の処理は省略してもよい。
【００７６】
以上のように、本実施の形態によれば、タスクリストを利用して、排他実行制御処理を常時監視することで、円滑かつ安定的にプロセス及びタスクを動作させることが可能となる。
【００７７】
以上、本発明の実施の形態について説明したが、これらのうち、２つ以上の実施の形態を組み合わせて実施しても構わない。あるいは、これらのうち、１つの実施の形態を部分的に実施しても構わない。あるいは、これらのうち、２つ以上の実施の形態を部分的に組み合わせて実施しても構わない。
【図面の簡単な説明】
【００７８】
【図１】プロセスの一例を示す図である。
【図２】プロセスの実行タイミングの一例を示す図である。
【図３】実施の形態１に係る排他実行制御装置の構成を示すブロック図である。
【図４】実施の形態１に係る排他実行制御装置のハードウェア構成の一例を示す図である。
【図５】実施の形態１に係る排他実行制御装置の動作を示すフローチャートである。
【図６】実施の形態１に係る排他実行制御装置の動作を示すフローチャートである。
【図７】実施の形態１におけるプロセスの実行タイミングの一例を示す図である。
【図８】実施の形態１における排他実行制御用のデータの一例を示す図である。
【図９】実施の形態２に係る排他実行制御装置の構成を示すブロック図である。
【図１０】プロセスの実行タイミングの一例を示す図である。
【図１１】実施の形態２に係る排他実行制御装置の動作を示すフローチャートである。
【図１２】実施の形態２におけるプロセスの実行タイミングの一例を示す図である。
【符号の説明】
【００７９】
１００  排他実行制御装置、１０１  記憶領域設定部、１０２  第１の排他実行制御用プロセス生成部、１０３  第２の排他実行制御用プロセス生成部、１０４  排他実行制御部、１０５  タスクリスト管理部、１０６  タスク監視部、１５１  処理装置、１５２  記憶装置、１５３  入力装置、１５４  出力装置、９０１  表示装置、９０２  キーボード、９０３  マウス、９０４  ＦＤＤ、９０５  ＣＤＤ、９０６  プリンタ装置、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  磁気ディスク装置、９２１  オペレーティングシステム、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群。
【図１】
0004611397.tif 000002
【図２】
0004611397.tif 000003
【図３】
0004611397.tif 000004
【図４】
0004611397.tif 000005
【図５】
0004611397.tif 000006
【図６】
0004611397.tif 000007
【図７】
0004611397.tif 000008
【図８】
0004611397.tif 000009
【図９】
0004611397.tif 000010
【図１０】
0004611397.tif 000011
【図１１】
0004611397.tif 000012
【図１２】
0004611397.tif 000013