[go: up one dir, main page]

JP6201478B2 - 処理順序制御装置、処理順序制御方法及び処理順序制御プログラム - Google Patents

処理順序制御装置、処理順序制御方法及び処理順序制御プログラム Download PDF

Info

Publication number
JP6201478B2
JP6201478B2 JP2013151711A JP2013151711A JP6201478B2 JP 6201478 B2 JP6201478 B2 JP 6201478B2 JP 2013151711 A JP2013151711 A JP 2013151711A JP 2013151711 A JP2013151711 A JP 2013151711A JP 6201478 B2 JP6201478 B2 JP 6201478B2
Authority
JP
Japan
Prior art keywords
lock
control
execution order
control process
processes
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
JP2013151711A
Other languages
English (en)
Other versions
JP2015022626A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013151711A priority Critical patent/JP6201478B2/ja
Publication of JP2015022626A publication Critical patent/JP2015022626A/ja
Application granted granted Critical
Publication of JP6201478B2 publication Critical patent/JP6201478B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、コンピュータにおいて、一連の複数処理を順次実行する技術に関する。
コンピュータにおいて複数処理を実行する技術がある。その一例として、プログラムの1つのメインスレッドに、そのスレッドが現在その資源の使用を必要とするか否かに関わらず、その資源に関連するロックの所有権を与えることにより、他のスレッドにまさる優先権を与える技術が提案されている。当該技術では、メインスレッドは、資源を使用し終え、別のスレッドが資源を使用するために待っていることを検知すると、その資源についての資源ロックを解放する。
ここで、コンピュータにおいて複数処理を順次実行する方法の一例として、処理を実行するプロセス同士で連携し、ある処理が終了すると、当該処理を実行するプロセスが次の実行順序の処理を実行するプロセスに対し処理の開始指示を行う方法がある。また、他の一例として、複数の処理の実行順序を制御する制御プロセスが、各処理を実行するプロセスに対して順次処理の開始指示を行う方法がある。
特開平9−198265号公報
しかし、上記のような方法では、例えばシステムの更新等に伴って処理の実行順序を変更する際に、少なくとも、各処理を実行するプロセスや制御プロセスが行う開始指示の相手先(次に実行する処理)を変更する作業が発生する。また、例えば、各処理を実行するプロセス構成やコンピュータを変更する際等にも、必要に応じて各処理を実行するプロセスや制御プロセスの開始指示の相手先の詳細設定等を変更する作業が発生する。このため、システムの更新を柔軟に行うことが難しい。
そこで、本技術は、1つの側面において、複数の処理を順次実行するシステムにおけるシステムの更新を容易にすることを目的とする。
本技術における1つの側面では、1又は複数のコンピュータで動作する複数のプロセスが夫々実行する処理の実行順序を制御する制御プロセスが、当該制御プロセス及び前記プロセスによりアクセス可能な記憶手段に含まれる所定の記憶領域の複数の箇所に対してロックを実行する。そして、プロセスが、制御プロセスによりロックが実行された記憶領域のうち、各プロセスの自処理の実行順序に対応する箇所に対してロックを要求する。さらに、制御プロセスが、プロセスからのロックの要求を実行順序に対応する箇所毎にロックが解放されるまで待機状態とする。制御プロセスが、プロセスによりロックが要求された箇所のロックを、上記処理の実行順序と対応させて順次解放する。
本技術における1つの側面によれば、複数の処理を順次実行するシステムにおけるシステムの更新を容易にすることができる。
コンピュータにおいて複数の処理を実行するシステム構成の一例を示す図である。 処理の実行順序の制御の概要の説明図である。 処理の実行順序の制御の一例の説明図である。 処理の実行順序の制御の一例の説明図である。 制御プロセス及び各処理が実行する、処理の実行順序の制御処理の一例のフローチャートである。 ファイルの領域における各処理に対応する箇所の配置の一例の説明図である。 コンピュータにおいて複数の処理を実行するシステム構成の一例を示す図である。 コンピュータにおいて複数の処理を実行するシステム構成の一例を示す図である。 処理の実行順序の制御の一例の説明図である。 処理の実行順序の制御の一例の説明図である。 処理の実行順序の制御の一例の説明図である。 処理の実行順序の制御の一例の説明図である。 処理の実行順序の制御の一例の説明図である。 制御プロセス及び各処理が実行する、処理の実行順序の制御処理の一例のフローチャートである。 ハードウェア構成の一例の説明図である。 複数処理の実行順序の制御を行う技術の一例の説明図である。 複数処理の実行順序の制御を行う技術の一例の説明図である。
本明細書で説明する技術は、複数処理を順次実行するシステムにおける処理の実行順序の制御を、記憶手段の任意の領域に対してロックをかけて排他制御を行うことができるファイルロックの技術を用いて行うことで、処理の実行順序の変更等を容易にする。なお、本明細書において「システム」とは、コンピュータを用いて処理を実行する構成全般を示し、処理を実行するコンピュータは1台であっても複数であってもよい。また、本明細書で説明するプロセスと処理との関係は全て一例に過ぎず、各処理を実行するプロセス構成は任意である。
[各種処理方法の問題点等]
まず、コンピュータによって複数処理を順次実行する複数の方法の例についていくつか列挙し、その問題点について説明する。ここでは、プロセスAの処理A、プロセスBの処理B、プロセスCの処理Cの順で処理を実行する場合における種々の方法について説明する。
例えば、図16に示すように、処理を実行するプロセス同士が連携する方法1がある。方法1では、プロセスA901は、処理Aの実行が完了すると、処理Bを実行するプロセスB902に対して通信を行い、処理Bの開始指示を通知する(911)。プロセスB902は、当該開始指示を受けて処理Bを実行し、処理Bの実行が完了すると、処理Cを実行するプロセスC903に対して通信を行い、処理Cの開始指示を通知する(912)。
しかし、この方法では、処理の実行順序を変更したい場合に、順序の変更を柔軟に行うことが難しい。例えば、処理Aと処理Bの間に、新たにプロセスDが実行する処理Dを追加するような場合、原則としてプロセスA901の通信論理の変更が必要となる。なお、「通信論理の変更」には、例えば、次に開始指示をする処理の変更をはじめ、変更後において次に実行される処理が変更前と異なるコンピュータで実行される場合には、通信先のコンピュータの変更を含め、必要に応じた通信プロトコル等の変更が含まれる。
さらに他の方法として、同じく図16に示すように、制御プロセス904が、夫々の処理の実行順序や処理を実行するプロセスの情報を把握し、各プロセスと通信を行う方法2がある。方法2では、制御プロセス904は、プロセスA901に対して通信を行い、処理Aの開始指示を通知する(921)。プロセスA901は、処理Aが完了すると、制御プロセス904に対して処理Aの完了を通知する(922)。すると、制御プロセス904は、プロセスB902に対して処理Bの開始指示を通知する(923)。以下同様にして、図16に示す924〜926を経て、処理Bの次に処理Cが実行される。
しかし、この方法2でも、処理の実行順序を変更したい場合に、順序の変更を柔軟に行うことが難しい。処理の実行順序を変更するには、原則として少なくとも制御プロセスの通信論理の変更が必要となるからである。
また、プロセス間における通信を不要とする方法として、図17に示すように、管理テーブル906において各処理の実行順序を一元管理し、各プロセスが、夫々管理テーブル906を参照しながら順次処理の実行を開始する方法3がある。方法3では、プロセスA901〜プロセスC903の夫々が管理テーブルにアクセスし、自プロセスが実行する処理の実行可否フラグが「true」であることを検出すると、実行を開始する。例えば、処理Aの実行可否フラグが「true」の場合、プロセスA901が、処理Aの実行を開始する(931)。そして、プロセスA901は、処理Aの完了後に管理テーブルにおける処理Aに対応する実行可否フラグを「false」にし、次の実行順序の処理Bに対応する実行可否フラグを「true」にする(932)。するとプロセスB902が、処理Bの実行可否フラグが「true」になったことを検出して実行を開始する(933)。以下同様にして、図17に示す934〜936を経て、処理Bの次に処理Cが実行される。
この方法Cでは、プロセス同士が直接通信を行わないため、処理の実行順序を変更する場合に、プロセスの通信論理の変更が原則として不要である。しかし、方法Cでは、管理テーブル904に情報が集中するため、ファイル破壊等により管理テーブル904のデータに不具合が生じると、各処理の実行順序の制御が困難になる。また、複数のプロセスが管理テーブル904に同時にアクセスするため、データの不整合が発生し易い。さらには、処理実行中に管理テーブル904のデータを変更して処理の実行順序を変更する場合、実行中の処理と管理テーブル904のデータとの不整合も発生し易く、処理に誤動作が生じることもある。
以下に説明する技術は、上記のような問題点を解決するものである。以下、実施例を示して説明する。
[第1実施例]
<システム構成>
図1は、第1実施例におけるシステム構成を示す。本実施例では、システムが、サーバ1を備える。サーバ1では、プログラムがロードされて実行されることによって実現される、制御プロセス実行部10が実行する制御プロセス11が動作するとともに、処理実行部20が実行するプロセスA21、プロセスB22及びプロセスC23が動作している。プロセスA21は処理Aを、プロセスB22は処理Bを、プロセスC23は処理Cを夫々実行する。
また、サーバ1が備える記憶手段30が、ファイル31を備える。記憶手段30には、制御プロセス11及びプロセスA21〜プロセスC23がアクセスすることができ、ファイル31には、制御プロセス11及びプロセスA21〜プロセスC23が、ファイル31に含まれる所定の領域に対してロックを実行することができる。当該所定の領域は、ユーザ等が任意に設定することができる。
<処理の実行順序の制御の概要>
ここで、第1実施例で実現する処理の実行順序の制御の概要について、図2〜図4を参照して説明する。本説明では、プロセスAの処理A、プロセスBの処理B、プロセスCの処理Cの順に実行する例を示して説明する。また、当該制御において、処理A、処理B、処理Cは、夫々、ファイル31の1バイト目、2バイト目、3バイト目を、実行順序の制御の対象領域として使用するものとする。換言すれば、ファイル31のうち、処理A、処理B、処理Cに対応する箇所が夫々1バイト目、2バイト目、3バイト目であり、これらの箇所は処理A、処理B、処理Cの実行順序に対応させて配置されている。図2〜図4に示す101〜109では、ファイル31に対してロックをする処理及びロックをしている状態を実線矢印、ロック要求がWait(待機)状態となる処理及びWait状態を破線矢印、アンロックをする処理をブロック矢印(白色矢印)で示す。また、以下、本明細書において、「処理」が行うこととして記載している内容は、「処理を実行するプロセス」が行うことと同義とする。
(101)制御プロセス11は、ファイル31の1バイト目〜3バイト目をロックする。
(102)処理A〜処理Cが、夫々ファイル31の1バイト目〜3バイト目に対してロックを要求する。しかし、すでに(101)で制御プロセス11によりロックされているため、処理A〜処理Cによるロック要求はWait状態となる。
(103)制御プロセス11が、ファイル31の1バイト目をアンロックする。すると、処理Aによる1バイト目のロック要求のWait状態が解除される。
(104)処理Aは、(103)でファイル31の1バイト目のロック要求のWait状態が解除されると即時に1バイト目をロックする。そして、処理Aは、処理A本体の実行を開始する。
(105)制御プロセス11は、ファイル31の1バイト目に対して再度ロックを要求する。しかし、1バイト目は(104)ですでに処理Aによりロックされているため、制御プロセス11によるロック要求はWait状態となる。
(106)処理Aは、処理A本体の実行が終了すると、1バイト目をアンロックする。すると、制御プロセス11による1バイト目のロック要求のWait状態が解除される。
(107)制御プロセス11は、(106)でファイル31の1バイト目のロック要求のWait状態が解除されると、即時に1バイト目をロックする。
(108)制御プロセス11は、次に2バイト目をアンロックする。すると、処理Bによる2バイト目のロック要求のWait状態が解除される。
(109)処理Bは、(108)で2バイト目のロック要求のWait状態が解除されると、即時に2バイト目をロックする。そして、処理Bは、処理B本体の実行を開始する。
以降、同様にして、処理Bに続いて処理Cが実行される。
<処理フローチャートの説明>
図5は、制御プロセス11及び各処理のうちの1つの処理である処理nが実行する、処理の実行順序の制御処理の一例につき、フローチャート及びファイル31の領域例を用いて説明した図である。ステップS1〜ステップS7が制御プロセス11による処理を示し、ステップS11〜ステップS14が処理nによる処理を示す。当該説明では、処理nは、ファイル31のうちnバイト目に対してロックをかけるものとして説明する。なお、図5では、処理nを実行するプロセスの図示は省略する。
ステップS1で、制御プロセス11が、処理の実行順序の制御に用いるファイル31の対象領域の全バイトをロックする。
一方、ステップS11で、処理nが、自処理の実行順序に対応するnバイト目に対してロックを要求する。しかし、制御プロセス11がすでにnバイト目を含めた対象領域の全バイトをロックしているため、処理nのロック要求はWait状態となる。
ステップS2で、制御プロセス11が、変数iに1をセットする。なお、ステップS2とステップS11とはどちらが先でもよい。
ステップS3で、制御プロセス11が、iバイト目をアンロックする。
ここで、iがnに等しいとき、処理nは、nバイト目に対するロック要求のWait状態が解除され、ステップS12で、nバイト目のロックに成功する。そして、処理nは、ステップS13で、処理n本体の処理を実行する。
一方、ステップS4で、制御プロセス11が、iバイト目(=nバイト目)に対してロックを要求する。しかし、処理nがすでにnバイト目をロックしているため、制御プロセス11によるiバイト目に対するロック要求はWait状態となる。なお、ステップS13とステップS4とはどちらが先でもよい。
処理nは、処理n本体の処理の実行が終了すると、ステップS14で、領域のnバイト目をアンロックする。
すると、制御プロセス11は、iバイト目に対するロックのWait状態が解除され、ステップS5で、iバイト目のロックに成功する。
ステップS6で、制御プロセス11は、変数iが最大値(max)であるか否かを判定する。この最大値は、実行順序の制御対象となる処理の数の最大数として見込まれる値であり、例えばユーザが予め指定しておくことができる。変数iが最大値であれば(Yes)、処理を終了し、変数iが最大値でなければ(No)、ステップS7に進む。
ステップS7で、制御プロセス11は、変数iに1を加算してステップS3に戻り、ファイル31の次の箇所の処理を開始する。
なお、処理nがiバイト目に対してロックをかけない場合、制御プロセス11はステップS4でiバイト目にロック要求をかけ、すぐにステップS5でロックに成功することができる。この場合、制御プロセスは、ステップS6〜ステップS7を経て、ファイルの次の箇所の処理を開始する。
<本実施例による効果、変形例等>
本技術では、このように複数の処理を順次実行するときに、ファイルロックの機能を用いて処理の実行順序を制御することにより、次のような効果を奏する。すなわち、本技術では、各処理を実行するプロセスは、記憶手段30のファイル31の対象領域のうち、自プロセスが実行する処理の実行順序に対応する箇所に対してロック又はアンロックを行うだけであり、他の処理やプロセスとの通信を行わない。一方、制御プロセス11も同様であり、ファイル31の対象領域に各処理の実行順序に対応させて配置された箇所に対して、実行順序と対応させて順次ロック又はアンロックを行うだけである。このように、各プロセスが疎に連携しているため、システムの更新によりプロセスの構成や処理の実行順序等を変更する場合に、変更作業が容易となる。具体的には、例えば、プロセスの構成を変更する場合であっても、実行順序の制御に伴うプロセスの通信論理を変更する必要がない。また、例えば、処理の実行順序を変更する場合には、各処理がロックをする領域を必要に応じて変更するだけでよい。
ここで、各処理に対応する箇所は、予め少なくとも1つの処理の実行順序に対応する箇所分の間隔を空けておいてもよい。そして、新たな処理を途中に追加する場合に、新たな処理がその空いている領域のうちの1箇所に対応するようにすれば(すなわち、新たな処理を実行するプロセスがその空いている領域のうちの1箇所にロックをかけるようにすれば)、他のプロセスや処理に対する変更が一切必要ない。その具体例を図6に示す。この例では、処理の実行順序の制御に用いる対象領域として、ファイル31の1バイト目〜10バイト目を確保しておき、処理Aが1バイト目、処理Bが5バイト目、処理Cが10バイト目にロックをかけるように、各処理に対応する箇所を配置する。この状態において、処理Bと処理Cとの間に新たにプロセスD24の処理Dを追加する場合、例えば、処理Dが7バイト目をロックするようにする。このようにすれば、制御プロセス11やプロセスA21〜プロセスC23の処理A〜処理Cに一切変更を加えることなく、処理A、処理B、処理D、処理Cの順に処理が実行されることとなる。
また、各処理がロックをする箇所を必要に応じて変更するだけで処理の実行順序を変更できるため、処理の実行中に他の処理の実行順序を変更しても、不整合が発生しづらい。
さらに、当該処理の実行順序の制御において使用する記憶領域は、単にロック又はアンロックされるだけであって、処理の実行順序を制御するための情報を持つ必要がないため、データの内容が破壊されることによる不整合も発生しづらい。
このため、本技術によれば、処理の実行順序の変更が容易になり、システムの更新にかかる工数を大幅に削減することができる。
なお、各処理の実行順序の制御に用いる記憶手段の対象領域は、ファイル形式に限らず、いかなる態様であってもよい。
ここで、上記説明では、1つのサーバ1内で制御プロセス11並びにプロセスA21の処理A、プロセスB22の処理B及びプロセスC23の処理Cが動作し、かつ、ファイル31も同一サーバにある例を用いて説明した。しかし、システム構成の変形例として、複数のサーバから参照可能な共有ファイルを設けることにより、各プロセスや処理が複数の異なるサーバで動作していても、同様の処理を実現することができる。そのようなシステムの一例を、図7に示す。図7に示すシステムでは、制御プロセス11が動作するサーバ1−1と、プロセスA21の処理A、プロセスB22の処理Bが動作するサーバ1−2と、プロセスC23の処理Cが動作するサーバ1−3とを備える。そして、サーバ1−1〜サーバ1−3と夫々ネットワーク接続され、制御プロセス11及び各プロセスが夫々アクセス可能な記憶手段32が、制御プロセス11及び各プロセスによる共有ファイル33を備える。このようなシステムにおいても、共有ファイル33を上記説明のファイル31と同様に用いることにより、上記と同様の処理を実現することができる。また、図示を省略するが、共有ファイルが、制御プロセス11又はいずれかの処理が実行されるサーバ内に存在しても、上記と同様の処理を実現することができる。
[第2実施例]
第2実施例は、第1実施例と異なり、実行順序の制御対象となる処理を実行する全てのプロセスが共通してアクセスする記憶手段を設けることができない場合であっても、処理の実行順序の制御を実現するものである。
図8は、第2実施例におけるシステム構成を示す。本実施例では、システムが、マスターサーバ2、サーバ3−1及びサーバ3−2を備える。
マスターサーバ2では、サーバ3−1及びサーバ3−2で夫々動作する制御プロセス15と通信可能であり制御プロセス15の夫々に対して動作指示を行う、総合制御プロセス実行部12が実行する総合制御プロセス13が動作する。
サーバ3−1では、制御プロセス実行部14−1が実行する制御プロセス15−1が動作するとともに、処理実行部20−1が実行するプロセスA21及びプロセスC23が動作している。プロセスAは処理Aを、プロセスCは処理Cを夫々実行する。さらに、サーバ3−1が備える記憶手段30−1が、ファイル31−1を備える。制御プロセス15−1、プロセスA21で動作する処理A及びプロセスC23で動作する処理Cが、夫々ファイル31−1にアクセスすることができ、ファイル31−1に含まれる特定の箇所に対してロックをすることができる。
サーバ3−2では、同様に、制御プロセス実行部14−2が実行する制御プロセス15−2が動作するとともに、処理実行部20−2が実行するプロセスB22が動作している。プロセスB22は処理Bを実行する。さらに、サーバ3−2が備える記憶手段30−2が、ファイル31−2を備える。制御プロセス15−2、プロセスB22で動作する処理Bが、ファイル31−2にアクセスすることができ、ファイル31−2に含まれる特定の箇所に対してロックをすることができる。
ここで、第2実施例で実現する処理の概要について、図9〜図13を参照して説明する。本説明では、処理A、処理B、処理Cの順に実行する例を示して説明する。また、当該制御において、処理A及び処理Cは夫々ファイル31−1の1バイト目及び3バイト目を、処理Bは、ファイル31−2の2バイト目を、実行順序の制御に使用するものとする。換言すれば、処理A及び処理Cに対応する箇所が、ファイル31−1のうち、夫々1バイト目及び3バイト目であり、処理Bに対応する箇所が、ファイル31−2のうち、2バイト目である。これらの箇所は処理A、処理B、処理Cの実行順序に対応させて配置されている。図9〜図13に示す111〜123では、ファイル31−1又はファイル31−2に対してロックをする処理及びロックをしている状態を実線矢印、ロックがWait(待機)状態となる処理及びWait状態を破線矢印、アンロックをする処理をブロック矢印(白色矢印)で示す。さらに、マスターサーバ2の総合制御プロセス13から各サーバ3の制御プロセス15への指示を、一点鎖線矢印で示す。
(111)サーバ3−1の制御プロセス15−1は、ファイル31−1の1バイト目〜3バイト目をロックする。また、サーバ3−2の制御プロセス15−2も同様に、ファイル31−2の1バイト目〜3バイト目をロックする。
(112)サーバ3−1で動作する処理A及び処理Cが、夫々ファイル31−1の1バイト目及び3バイト目に対してロックを要求する。しかし、すでに(111)で制御プロセス15−1によりロックされているため、処理A及び処理Cによるロック要求はWait状態となる。一方、サーバ3−2で動作する処理Bも、ファイル31−2の2バイト目に対してロックを要求する。しかし、同様に、すでに(111)で制御プロセス15−2によりロックされているため、処理Bによるロック要求はWait状態となる。
(113)ここで、マスターサーバ2の総合制御プロセス13が、全サーバの制御プロセス15に対し、各サーバのファイル31の1バイト目をアンロックするように指示を送信する。その後、総合制御プロセス13は、全サーバからファイル31の1バイト目の再ロックが成功した旨の通知を受信するまで待機する。
(114)サーバ3−1の制御プロセス15−1が、ファイル31−1の1バイト目をアンロックする。すると、処理Aによる1バイト目のロック要求のWait状態が解除される。一方、サーバ3−2の制御プロセス15−2も、ファイル31−2の1バイト目をアンロックする。
(115)サーバ3−1の処理Aは、(114)で1バイト目のロック要求のWait状態が解除されると即時にファイル31−1の1バイト目をロックする。そして、処理Aは、処理A本体の実行を開始する。
(116)サーバ3−1の制御プロセス15−1が、ファイル31−1の1バイト目に対して再度ロックを要求する。しかし、1バイト目は(115)ですでに処理Aによりロックされているため、制御プロセス15−1によるロック要求はWait状態となる。一方、サーバ3−2の制御プロセス15−2が、ファイル31−2の1バイト目に対して再度ロックを要求する。ファイル31−2の1バイト目は他の処理によってロックされていないため、制御プロセス15−2は、再ロックに成功する。
(117)サーバ3−2の制御プロセス15−2は、ファイル31−2の1バイト目の再ロックに成功したことを、マスターサーバ2の総合制御プロセス13に通知する。
(118)サーバ3−1の処理Aは、処理A本体の実行が終了すると、ファイル31−1の1バイト目をアンロックする。すると、制御プロセス15−1によるファイル31−1の1バイト目のロック要求のWait状態が解除される。
(119)サーバ3−1の制御プロセス15−1は、(118)でファイル31−1の1バイト目のロック要求のWait状態が解除されると、即時にファイル31−1の1バイト目をロックする。
(120)サーバ3−1の制御プロセス15−1は、ファイル31−1の1バイト目の再ロックに成功したことを、マスターサーバ2の総合制御プロセス13に通知する。
(121)マスターサーバ2の総合制御プロセス13が、全サーバの制御プロセスに対し、各サーバのファイル31の2バイト目をアンロックするように指示を送信する。その後、総合制御プロセス13は、全サーバからファイル31の2バイト目の再ロックが成功したことの通知を受信するまで待機する。
(122)サーバ3−1の制御プロセス15−1が、ファイル31−1の2バイト目をアンロックする。一方、サーバ3−2の制御プロセス15−2も、ファイル31−2の2バイト目をアンロックする。すると、処理Bによるファイル31−2の2バイト目のロック要求のWait状態が解除される。
(123)サーバ3−2の処理Bは、(122)でファイル31−2の2バイト目のロック要求のWait状態が解除されると即時にファイル31−2の2バイト目をロックする。そして、処理Bは、処理B本体の実行を開始する。
以降、同様にして、サーバ3−2の処理Bに続いて、サーバ3−1の処理Cが実行される。
なお、制御プロセスは、上記(111)の処理も、総合制御プロセス13の指示によって行ってもよい。
<処理フローチャートの説明>
図14は、マスターサーバ2の総合制御プロセス13、各サーバ3の制御プロセス15及び各処理のうちの1つの処理である処理nが実行する処理の一例につき、フローチャート及びファイルの領域例を用いて説明した図である。ステップS31〜ステップS35が総合制御プロセス13による処理を示す。また、ステップS41〜ステップS46が制御プロセス15による処理を示し、ステップS51〜ステップS54が処理nによる処理を示す。当該説明では、処理nは、ファイルのうちnバイト目に対してロックをかけるものとして説明する。なお、図13及び図13を参照した説明では、処理nが含まれるプロセスについての記載は省略する。
ステップS41で、制御プロセス15が、処理の実行順序の制御に用いるファイル31の対象領域の全バイトをロックする。
一方、ステップS51で、処理nが、処理nの実行順序に対応するnバイト目に対してロックを要求する。しかし、制御プロセス15がすでにnバイト目を含めた対象領域の全バイトをロックしているため、処理nのロック要求はWait状態となる。
ステップS31で、総合制御プロセス13が、変数iに1をセットする。なお、ステップS41及びステップ51と、ステップS31とはどちらが先になってもよい。
ステップS32で、マスターサーバ2の総合制御プロセス13が、全サーバの制御プロセス15に対し、各サーバのファイル31のiバイト目をアンロックするように指示を送信する。その後、総合制御プロセス13は、全サーバからファイル31のiバイト目の再ロックが成功したことの通知を受信するまで待機する。
一方、ステップS42で、制御プロセス15が、マスターサーバ2の総合制御プロセス13からのステップS32の指示を受信する。当該指示を受け、ステップS43で、制御プロセス15が、iバイト目をアンロックする。
ここで、iがnに等しいとき、処理nは、nバイト目に対するロック要求のWait状態が解除され、ステップS52で、nバイト目のロックに成功する。そして、処理nは、ステップS53で、処理n本体の処理を実行する。
一方、ステップS44で、制御プロセス15が、iバイト目(=nバイト目)に対してロックを要求する。しかし、処理nがすでにnバイト目をロックしているため、制御プロセス15によるiバイト目に対するロック要求はWait状態となる。なお、ステップS53とステップS44とはどちらが先になってもよい。
処理nは、処理n本体の処理の実行が終了すると、ステップS54で、領域のnバイト目をアンロックする。
すると、制御プロセス15は、iバイト目に対するロック要求のWait状態が解除され、ステップS45で、iバイト目のロックに成功する。そして、ステップS46で、総合制御プロセス13に対し、iバイト目のロックが成功したことを通知する。
ステップS34で、総合制御プロセス13は、変数iが最大値(max)であるか否かを判定する。変数iが最大値であれば(Yes)、処理を終了し、変数iが最大値でなければ(No)、ステップS35に進む。
ステップS35で、総合制御プロセス13は、変数iに1を加算してステップS32に戻り、ファイル31の次の箇所の処理を開始する。
<本実施例による効果等>
第2実施例によれば、第1実施例で説明した効果に加えて、次のような効果を奏する。すなわち、複数の異なるサーバで処理が実行されている場合において、各処理からアクセス可能な記憶手段や共有ファイルが存在しないシステム構成であっても、ファイルロックの機能を用いた処理の実行順序の制御が可能となる。
<本実施例による効果、変形例等>
なお、上記説明では、総合制御プロセス13が、各処理を実行するサーバ3とは別のマスターサーバ2で動作していたが、各処理を実行する全てのサーバ3と通信可能であれば、総合制御プロセス13は、例えばサーバ3のうちのいずれかで動作していてもよい。
その他の変形例等については、第1実施例と同様である。
[ハードウェア構成]
図15は、前述の各実施例のサーバやマスターサーバとして機能する情報処理装置のハードウェア構成の一例を示す。本情報処理装置は、プロセッサ101、メモリ102、ストレージ103、可搬記憶媒体駆動装置104、入出力装置105及び通信インタフェース106を備える。
プロセッサ101は、制御ユニット、演算ユニット及び命令デコーダ等を含み、実行ユニットが、命令デコーダで解読されたプログラムの命令に従い、制御ユニットより出力される制御信号に応じ、演算ユニットを用いて算術・論理演算を実行する。かかるプロセッサ101は、制御に用いる各種情報が格納される制御レジスタ、既にアクセスしたメモリ2等の内容を一時的に格納可能なキャッシュ、及び、仮想記憶のページテーブルのキャッシュとしての機能を果たすTLBを備える。なお、プロセッサ101は、CPU(Central Processing Unit)コアが複数設けられている構成でもよい。
メモリ102は、例えばRAM(Random Access Memory)等の記憶装置であり、プロセッサ101で実行されるプログラムがロードされるとともに、プロセッサ101の処理に用いるデータが格納されるメインメモリである。また、ストレージ103は、例えばHDD(Hard Disk Drive)やフラッシュメモリ等の記憶装置であり、プログラムや各種データが格納される。可搬記憶媒体駆動装置104は、可搬記憶媒体107に記憶されたデータやプログラムを読み出す装置である。可搬記憶媒体107は、例えば磁気ディスク、光ディスク、光磁気ディスク又はフラッシュメモリ等である。プロセッサ101は、メモリ102やストレージ103と協働しつつ、ストレージ103や可搬記憶媒体107に格納されたプログラムを実行する。なお、プロセッサ101が実行するプログラムや、アクセス対象となるデータは、当該情報処理装置と通信可能な他の装置に格納されていてもよい。なお、上記各実施例で記載した記憶手段30とは、メモリ102、ストレージ103及び可搬記憶媒体107若しくは当該情報処理装置と通信可能な他の装置の少なくともいずれかを示す。
入出力装置105は例えばキーボード等やディスプレイ等であり、ユーザ操作等による動作命令を受け付ける一方、情報処理装置による処理結果を出力する。通信インタフェース106は例えばLAN(Local Area Network)カード等であり、外部とのデータ通信を可能にする。前述した情報処理装置の各構成要素は、バス108で接続されている。
[その他]
本明細書で説明した情報処理装置の機能的構成及び物理的構成は、上述の態様に限るものではなく、例えば、各機能や物理資源を統合して実装したり、逆に、さらに分散して実装したりすることも可能である。
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
1又は複数のコンピュータで動作する1又は複数のプロセスが実行する複数の処理の実行順序を制御する制御プロセスが、当該制御プロセス及び前記プロセスがアクセス可能な記憶手段に含まれる所定の記憶領域に対してロックを実行し、
前記プロセスが、前記制御プロセスによりロックが実行された前記記憶領域のうち、前記複数の処理の実行順序に対応した箇所に対してロックを要求し、
前記制御プロセスが、前記プロセスによりロックが要求された箇所のロックを、前記複数の処理の実行順序と対応させて順次解放し、
前記プロセスが、要求していたロックが実行できると、当該箇所に対応する処理を実行する
処理を含んだ処理順序制御方法。
(付記2)
前記プロセスが、処理の実行を終了したときに、当該処理に対応する箇所に対するロックを解放し、
前記ロックを順次解放する処理は、前記制御プロセスが、前記プロセスにより実行を終了した処理に対応する箇所に対するロックが解放されると、当該箇所に対するロックを再実行し、当該箇所に対応する実行順序の次の実行順序に対応する箇所のロックを解放する、付記1記載の処理順序制御方法。
(付記3)
前記複数の処理が複数のコンピュータで実行され、前記制御プロセスが前記複数のコンピュータの夫々で動作し、
前記制御プロセスの夫々と通信可能な総合制御プロセスが、前記制御プロセスの夫々に対し、前記記憶領域のうち前記制御プロセスの夫々が実行順序を制御する処理の実行順序に対応する箇所のロックを順次解放する指示を行い、
前記ロックを順次解放する処理は、前記制御プロセスの夫々が、前記総合制御プロセスによる指示に応じて、少なくとも前記記憶領域のうち自制御プロセスが実行順序を制御する処理の実行順序に対応する箇所のロックを順次解放する、付記1又は2に記載の処理順序制御方法。
(付記4)
前記ロックを順次解放する指示を行う処理は、総合制御プロセスが、前記制御プロセスの夫々に対し、同時に同一の実行順序に対応する箇所のロックを解放する指示を行い、
前記ロックを順次解放する処理は、前記制御プロセスの夫々が、前記総合制御プロセスによる指示に応じて、他の制御プロセスと同一の実行順序に対応する箇所のロックを順次解放する、付記3記載の処理順序制御方法。
(付記5)
前記記憶領域のうち前記複数の処理の実行順序の夫々に対応する箇所には、少なくとも1つの処理の実行順序に対応する箇所分の間隔を空けて前記複数の処理が夫々対応付けられている、付記1又は2に記載の処理順序制御方法。
(付記6)
1又は複数のコンピュータで動作する1又は複数のプロセスが実行する複数の処理の実行順序を制御する制御プロセスが、当該制御プロセス及び前記プロセスがアクセス可能な記憶手段に含まれる所定の記憶領域に対してロックを実行し、
前記プロセスが、前記制御プロセスによりロックが実行された前記記憶領域のうち、前記複数の処理の実行順序に対応した箇所に対してロックを要求し、
前記制御プロセスが、前記プロセスによりロックが要求された箇所のロックを、前記複数の処理の実行順序と対応させて順次解放し、
前記プロセスが、要求していたロックが実行できると、当該箇所に対応する処理を実行する
処理をコンピュータに実行させる処理順序制御プログラム。
(付記7)
複数の処理を実行する1又は複数のプロセスを実行する処理実行部と、
前記複数の処理の実行順序を制御する制御プロセスを実行する制御プロセス実行部と
を含み、
前記制御プロセスが、当該制御プロセス及び前記プロセスがアクセス可能な記憶手段に含まれる所定の記憶領域に対してロックを実行し、
前記プロセスが、前記制御プロセスによりロックが実行された前記記憶領域のうち、前記複数の処理の実行順序に対応した箇所に対してロックを要求し、
前記制御プロセスが、前記プロセスによりロックが要求された箇所のロックを、前記複数の処理の実行順序と対応させて順次解放し、
前記プロセスが、要求していたロックが実行できると、当該箇所に対応する処理を実行する
処理順序制御装置。
1、3…サーバ、2…マスターサーバ、10…制御プロセス実行部、11…制御プロセス、20…処理実行部、21…プロセス、30、32…記憶手段、31、33…ファイル

Claims (7)

  1. 1又は複数のコンピュータで動作する複数のプロセスが夫々実行する処理の実行順序を制御する制御プロセスが、当該制御プロセス及び前記プロセスによりアクセス可能な記憶手段に含まれる所定の記憶領域の複数の箇所に対してロックを実行し、
    前記プロセスが、前記制御プロセスによりロックが実行された前記記憶領域のうち、各プロセスの自処理の実行順序に対応する箇所に対してロックを要求し、
    前記制御プロセスが、前記プロセスからの前記ロックの要求を前記実行順序に対応する前記箇所毎に前記ロックが解放されるまで待機状態とし、
    前記制御プロセスが、前記プロセスによりロックが要求された箇所のロックを、前記処理の前記実行順序と対応させて順次解放する
    処理を含んだ処理順序制御方法。
  2. 記ロックを順次解放する処理は、前記制御プロセスが、前記プロセスにより実行を終了した処理に対応する箇所に対するロックが解放されると、当該箇所に対するロックを再実行し、当該箇所に対応する実行順序の次の実行順序に対応する箇所のロックを解放する、請求項1記載の処理順序制御方法。
  3. 記処理が複数の異なるコンピュータで実行され、前記制御プロセスが前記複数の異なるコンピュータの夫々で動作し、
    前記制御プロセスの夫々と通信可能な総合制御プロセスが、前記制御プロセスの夫々に対し、前記複数の異なるコンピュータの夫々に設けられた前記記憶領域のうち前記制御プロセスの夫々が実行順序を制御する処理の実行順序に対応する箇所のロックを順次解放する指示を行い、
    前記ロックを順次解放する処理は、前記制御プロセスの夫々が、前記総合制御プロセスによる指示に応じて、少なくとも前記記憶領域のうち自制御プロセスが実行順序を制御する処理の実行順序に対応する箇所のロックを順次解放する、請求項1又は2に記載の処理順序制御方法。
  4. 前記ロックを順次解放する指示を行う処理は、総合制御プロセスが、前記制御プロセスの夫々に対し、同時に同一の実行順序に対応する箇所のロックを解放する指示を行い、
    前記ロックを順次解放する処理は、前記制御プロセスの夫々が、前記総合制御プロセスによる指示に応じて、他の制御プロセスと同一の実行順序に対応する箇所のロックを順次解放する、請求項3記載の処理順序制御方法。
  5. 前記制御プロセスは、前記実行順序の夫々に対応する箇所と当該実行順序を規定する通し番号のいずれかの値とを対応付け、当該通し番号のうちでより小さい前記値が対応付けられている処理から前記ロックを解放するようにし、
    記実行順序の夫々に対応する箇所には、新たな処理を実行するプロセスが空いている領域の箇所にロックをかけられるように、少なくとも1つの処理の実行順序に対応する箇所分の間隔を空けて前記値が夫々対応付けられている、請求項1又は2に記載の処理順序制御方法。
  6. ンピュータで動作する複数のプロセスが夫々実行する処理の実行順序を制御する制御プロセスが、当該制御プロセス及び前記プロセスによりアクセス可能な記憶手段に含まれる所定の記憶領域の複数の箇所に対してロックを実行し、
    前記プロセスが、前記制御プロセスによりロックが実行された前記記憶領域のうち、各プロセスの自処理の実行順序に対応する箇所に対してロックを要求し、
    前記制御プロセスが、前記プロセスからの前記ロックの要求を前記実行順序に対応する前記箇所毎に前記ロックが解放されるまで待機状態とし、
    前記制御プロセスが、前記プロセスによりロックが要求された箇所のロックを、前記処理の前記実行順序と対応させて順次解放する
    処理をコンピュータに実行させる処理順序制御プログラム。
  7. 複数のプロセスが夫々処理を実行する処理実行部と、
    前記処理の実行順序を制御する制御プロセスを実行する制御プロセス実行部と
    を含み、
    前記制御プロセスが、当該制御プロセス及び前記プロセスによりアクセス可能な記憶手段に含まれる所定の記憶領域の複数の箇所に対してロックを実行し、
    前記プロセスが、前記制御プロセスによりロックが実行された前記記憶領域のうち、各プロセスの自処理の実行順序に対応する箇所に対してロックを要求し、
    前記制御プロセスが、前記プロセスからの前記ロックの要求を前記実行順序に対応する前記箇所毎に前記ロックが解放されるまで待機状態とし、
    前記制御プロセスが、前記プロセスによりロックが要求された箇所のロックを、前記処理の前記実行順序と対応させて順次解放する
    処理順序制御装置。
JP2013151711A 2013-07-22 2013-07-22 処理順序制御装置、処理順序制御方法及び処理順序制御プログラム Expired - Fee Related JP6201478B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013151711A JP6201478B2 (ja) 2013-07-22 2013-07-22 処理順序制御装置、処理順序制御方法及び処理順序制御プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013151711A JP6201478B2 (ja) 2013-07-22 2013-07-22 処理順序制御装置、処理順序制御方法及び処理順序制御プログラム

Publications (2)

Publication Number Publication Date
JP2015022626A JP2015022626A (ja) 2015-02-02
JP6201478B2 true JP6201478B2 (ja) 2017-09-27

Family

ID=52486988

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013151711A Expired - Fee Related JP6201478B2 (ja) 2013-07-22 2013-07-22 処理順序制御装置、処理順序制御方法及び処理順序制御プログラム

Country Status (1)

Country Link
JP (1) JP6201478B2 (ja)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04127322A (ja) * 1990-09-19 1992-04-28 Fujitsu Ltd ジョブ実行制御装置
US6598068B1 (en) * 1996-01-04 2003-07-22 Sun Microsystems, Inc. Method and apparatus for automatically managing concurrent access to a shared resource in a multi-threaded programming environment
JPH1165863A (ja) * 1997-08-26 1999-03-09 Hitachi Ltd 共有資源管理方法
US6779090B2 (en) * 2002-05-21 2004-08-17 International Business Machines Corporation Spinlock for shared memory
JP2011118587A (ja) * 2009-12-02 2011-06-16 Hitachi Ltd 複数サーバによる連携サービス実行システム
JP2011129024A (ja) * 2009-12-21 2011-06-30 Renesas Electronics Corp データ処理システム及びデータ処理方法
US9058205B2 (en) * 2011-10-24 2015-06-16 Symantec Corporation Automatically performing operations on applications based on dependencies on other applications

Also Published As

Publication number Publication date
JP2015022626A (ja) 2015-02-02

Similar Documents

Publication Publication Date Title
EP3701377B1 (en) Method and apparatus for updating shared data in a multi-core processor environment
EP3138013B1 (en) System and method for providing distributed transaction lock in transactional middleware machine environment
US10579413B2 (en) Efficient task scheduling using a locking mechanism
US11294737B2 (en) Self-managed lock access
EP3230860B1 (en) Technologies for efficient synchronization barriers with work stealing support
US9378069B2 (en) Lock spin wait operation for multi-threaded applications in a multi-core computing environment
CN108369507A (zh) 用于使用存储器中处理来处理指令的方法和设备
JPH1115793A (ja) 資源の保全性を保護する方法
KR102450133B1 (ko) 분산 잠금 관리를 하는 분산 시스템 및 그것의 동작 방법
US10372352B2 (en) Concurrent virtual storage management
CN113806031A (zh) 通过对象锁保护资源的方法和装置
JP6201478B2 (ja) 処理順序制御装置、処理順序制御方法及び処理順序制御プログラム
US10324902B2 (en) Method and apparatus for locking file in memory
JP6036692B2 (ja) 情報処理装置、情報処理システム、情報処理方法および制御プログラム記録媒体
CN111367682B (zh) 一种资源操作锁的控制方法、系统、装置及可读存储介质
JP7183384B2 (ja) 分散コンピューティングシステムにおける共有リソースの管理
US20090307442A1 (en) Memory Access Control
KR101789933B1 (ko) 데이터 일관성을 위한 컴퓨팅 시스템 및 방법
JP5890194B2 (ja) 情報処理装置、及び、情報処理方法
CN112947677B (zh) 一种计时器读取方法、计算设备及可读存储介质
JP7595553B2 (ja) アプリケーションプログラム実行方法
US11775337B2 (en) Prioritization of threads in a simultaneous multithreading processor core
JP3063658B2 (ja) 排他制御処理装置
JP2926873B2 (ja) 計算機システム
JP2009026292A (ja) データ分配方法、データ分配プログラム、及び並列データベースシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160405

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170417

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: 20170801

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170814

R150 Certificate of patent or registration of utility model

Ref document number: 6201478

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees