(57)【要約】【課題】デッドロックの発生を抑制できる情報処理装置、情報処理方法およびプログラムを提供する。【解決手段】情報処理装置で稼働しているシステムの現在状態と、前記システムの遷移先の状態を示す目標状態と、を記憶する第１記憶手段と、イベント通知手段から、特定の状態に遷移する条件が充足した旨を示すイベント通知を受けた場合、前記現在状態と前記目標状態とが一致するか否かを判定する判定手段と、前記判定手段によって、前記システムの前記現在状態と前記目標状態とが不一致であると判定された場合、前記システムを前記特定の状態に遷移させない排他制御を行う制御手段と、を備える。【選択図】図２
2016177385.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置で稼働しているシステムの現在状態と、前記システムの遷移先の状態を示す目標状態と、を記憶する第１記憶手段と、
イベント通知手段から、特定の状態に遷移する条件が充足した旨を示すイベント通知を受けた場合、前記現在状態と前記目標状態とが一致するか否かを判定する判定手段と、
前記判定手段によって、前記システムの前記現在状態と前記目標状態とが不一致であると判定された場合、前記システムを前記特定の状態に遷移させない排他制御を行う制御手段と、
を備えた情報処理装置。
【請求項２】
前記判定手段は、さらに、前記特定の状態が、前記現在状態または前記目標状態と一致するか否かを判定し、
前記制御手段は、前記判定手段によって、前記特定の状態が、前記現在状態または前記目標状態と一致すると判定された場合、前記排他制御を行う請求項１に記載の情報処理装置。
【請求項３】
前記システムの状態の流れを示す状態遷移情報を記憶する第２記憶手段を、さらに備え、
前記判定手段は、さらに、前記状態遷移情報に基づいて前記システムが前記特定の状態に遷移することが可能であるか否かを判定し、
前記制御手段は、
前記判定手段によって、前記システムの前記現在状態と前記目標状態とが一致していると判定された場合、かつ、前記状態遷移情報に基づいて前記システムが前記特定の状態に遷移することが可能であると判定された場合、前記システムを前記特定の状態に遷移させる遷移動作を行い、
前記遷移動作の開始時に、前記第１記憶手段に記憶された前記目標状態を前記特定の状態で更新し、前記遷移動作の終了時に、前記第１記憶手段に記憶された前記現在状態を前記特定の状態で更新する請求項１または２に記載の情報処理装置。
【請求項４】
前記制御手段は、前記判定手段によって、前記システムの前記現在状態と前記目標状態とが不一致であると判定され、かつ、前記状態遷移情報に基づいて前記システムが前記目標状態の状態であるとした場合に前記特定の状態に遷移することができないと判定された場合、前記特定の状態への遷移は異常と判断して前記排他制御を行う請求項３に記載の情報処理装置。
【請求項５】
前記制御手段は、前記判定手段によって、前記システムの前記現在状態と前記目標状態とが一致していると判定され、かつ、前記状態遷移情報に基づいて前記システムが前記現在状態から前記特定の状態に遷移することができないと判定された場合、前記排他制御を行う請求項３に記載の情報処理装置。
【請求項６】
前記制御手段は、前記排他制御を行うと共に、前記システムを所定の状態に遷移させる請求項４または５に記載の情報処理装置。
【請求項７】
イベント通知手段から、情報処理装置で稼働しているシステムが特定の状態に遷移する条件が充足した旨を示すイベント通知を受けた場合、記憶手段に記憶された前記システムの現在状態と、前記システムの遷移先の状態を示す目標状態とが一致するか否かを判定する判定ステップと、
前記システムの前記現在状態と前記目標状態とが不一致であると判定した場合、前記システムを前記特定の状態に遷移させない排他制御を行う制御ステップと、
を有する情報処理方法。
【請求項８】
イベント通知手段から、コンピュータで稼働しているシステムが特定の状態に遷移する条件が充足した旨を示すイベント通知を受けた場合、記憶手段に記憶された前記システムの現在状態と、前記システムの遷移先の状態を示す目標状態とが一致するか否かを判定する判定手段と、
前記判定手段によって、前記システムの前記現在状態と前記目標状態とが不一致であると判定された場合、前記システムを前記特定の状態に遷移させない排他制御を行う制御手段と、
をコンピュータに実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法およびプログラムに関する。
【背景技術】
【０００２】
システムの状態遷移が行われる際に、状態遷移が完了するまでの過渡状態では移行前および移行後のどちらの状態とも取れない状態になる。そのため、状態遷移中のタイミングでの状態遷移要求によって、異常な状態遷移が発生してしまう可能性がある。これを防ぐために状態遷移中は排他制御を行うことで、状態遷移が完了するまでは状態遷移要求を受け付けないようにすることが既に知られている。このような排他制御を行うために、システムの状態遷移の排他の要否を確認する技術が提案されている（特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかしながら、システムが巨大化するに伴い、状態遷移図も複雑になり、排他制御も複雑になるため、新しい状態が追加されるたびに、デッドロックが発生する可能性が増大してしまうという問題がある。特許文献１に記載された技術では、この問題が解消されない。
【０００４】
本発明は、上記に鑑みてなされたものであって、デッドロックの発生を抑制できる情報処理装置、情報処理方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
上述した課題を解決し、目的を達成するために、本発明は、情報処理装置で稼働しているシステムの現在状態と、前記システムの遷移先の状態を示す目標状態と、を記憶する第１記憶手段と、イベント通知手段から、特定の状態に遷移する条件が充足した旨を示すイベント通知を受けた場合、前記現在状態と前記目標状態とが一致するか否かを判定する判定手段と、前記判定手段によって、前記システムの前記現在状態と前記目標状態とが不一致であると判定された場合、前記システムを前記特定の状態に遷移させない排他制御を行う制御手段と、を備えたことを特徴とする。
【発明の効果】
【０００６】
本発明によれば、デッドロックの発生を抑制できる。
【図面の簡単な説明】
【０００７】
【図１】図１は、実施の形態に係る情報処理装置のハードウェア構成の一例を示す図である。
【図２】図２は、実施の形態に係る情報処理装置の機能ブロック構成の一例を示す図である。
【図３】図３は、排他制御区間を拡張する例を説明する図である。
【図４】図４は、排他制御区間を拡張する前の排他処理の一例を示すフローチャートである。
【図５】図５は、排他制御区間を拡張した後の排他処理の一例を示すフローチャートである。
【図６】図６は、状態遷移図の例を示す図である。
【図７】図７は、状態遷移表の例を示す図である。
【図８】図８は、実施の形態に係る情報処理装置での状態遷移動作を説明する図である。
【図９】図９は、実施の形態に係る情報処理装置での状態遷移中の排他制御の動作の一例を示すシーケンス図である。
【図１０】図１０は、実施の形態に係る情報処理装置での状態遷移中に異常な状態遷移要求を受けた場合の動作の一例を示すシーケンス図である。
【発明を実施するための形態】
【０００８】
以下に、図面を参照しながら、本発明に係る情報処理装置、情報処理方法およびプログラムの実施の形態を詳細に説明する。また、以下の実施の形態によって本発明が限定されるものではなく、以下の実施の形態における構成要素には、当業者が容易に想到できるもの、実質的に同一のもの、およびいわゆる均等の範囲のものが含まれる。さらに、以下の実施の形態の要旨を逸脱しない範囲で構成要素の種々の省略、置換、変更および組み合わせを行うことができる。
【０００９】
（情報処理装置のハードウェア構成）
図１は、実施の形態に係る情報処理装置のハードウェア構成の一例を示す図である。図１を参照しながら、本実施の形態の情報処理装置１のハードウェア構成について説明する。
【００１０】
図１に示すように、情報処理装置１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１１と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１２と、補助記憶装置１３と、通信Ｉ／Ｆ１４と、入力装置１５と、表示装置１６と、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）ドライブ１８と、を備えている。上述の各部は、バス１９によって接続され、互いにデータの通信が可能となっている。
【００１１】
ＣＰＵ１０は、情報処理装置１の各部の動作を制御する演算装置である。ＲＯＭ１１は、ＣＰＵ１０が各機能を制御するために実行するプログラムを記憶する不揮発性記憶装置である。ＲＡＭ１２は、ＣＰＵ１０のワークメモリ等として機能する揮発性記憶装置である。
【００１２】
補助記憶装置１３は、ＣＰＵ１０で実行されるプログラム等の各種データ等を蓄積して記憶する不揮発性記憶装置である。補助記憶装置１３は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、フラッシュメモリまたは光ディスク等の電気的、磁気的または光学的に記憶可能な記憶装置である。
【００１３】
通信Ｉ／Ｆ１４は、外部機器とＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等のネットワークまたは無線ネットワーク等を介して通信するインターフェースである。通信Ｉ／Ｆ１４は、例えば、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）等の通信装置によって実現される。通信Ｉ／Ｆ１４は、例えば、１０Ｂａｓｅ−Ｔ、１００Ｂａｓｅ−ＴＸもしくは１０００Ｂａｓｅ−Ｔ等のＥｔｈｅｒｎｅｔ（登録商標）に対応したインターフェースである。
【００１４】
入力装置１５は、ユーザによってＣＰＵ１０に対して所定の処理を実行させるための操作入力を受け付ける装置である。入力装置１５は、例えば、マウス、キーボード、テンキー、タッチパッド、またはタッチパネルにおける操作入力機能によって実現される。
【００１５】
表示装置１６は、ＣＰＵ１０により実行されているアプリケーション等の画像を表示する装置である。表示装置１６は、例えば、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）ディスプレイ、液晶ディスプレイ、プラズマディスプレイまたは有機ＥＬ（Ｅｌｅｃｔｒｏｌｕｍｉｎｅｓｃｅｎｃｅ）ディスプレイ等である。
【００１６】
ＣＤ−ＲＯＭドライブ１８は、着脱自在な記憶媒体の一例としてのＣＤ−ＲＯＭ１７に対するデータの読み出しおよび書き込みを制御する装置である。なお、上述の着脱可能な記録媒体の他の例として、ＣＤ−Ｒ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅｃｏｒｄａｂｌｅ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）またはブルーレイディスク等のコンピュータで読み取り可能な記録媒体であってもよい。
【００１７】
なお、上述のＣＰＵ１０で実行されるプログラムは、インストール可能な形式または実行可能な形式のファイルで、コンピュータで読み取り可能な記録媒体に記録して流通させてもよい。この記録媒体は、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）またはＳＤメモリカード（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ  ｍｅｍｏｒｙ  ｃａｒｄ)等である。
【００１８】
（情報処理装置のブロック構成）
図２は、実施の形態に係る情報処理装置の機能ブロック構成の一例を示す図である。図２を参照しながら、情報処理装置１の機能ブロック構成について説明する。
【００１９】
図２に示すように、情報処理装置１は、イベントハンドラ部１００（判定手段）と、状態制御部１０１（制御手段）と、状態記憶部１０２（第１記憶手段、第２記憶手段の一例）と、システム部１０３と、を有する。
【００２０】
イベントハンドラ部１００は、外部イベント通知部２００（イベント通知手段の一例）から、システム部１０３が特定の状態に遷移する条件が充足した旨を示すイベント通知を受信した場合、システム部１０３の現在の状態（以下、「現在状態」と称する場合がある）と、システム部１０３が遷移しようとしている遷移先の状態（以下、「目標状態」と称する場合がある）とが一致するか否かは判定する機能部である。また、イベントハンドラ部１００は、システム部１０３の現在状態と目標状態とが一致すると判定した場合、状態制御部１０１に、受信したイベント通知に従って、システム部１０３が特定の状態に遷移することを要求する状態遷移要求を、状態制御部１０１に送る。
【００２１】
状態制御部１０１は、イベントハンドラ部１００から状態遷移要求を受け取ると、システム部１０３の状態を特定の状態に遷移動作させるための遷移命令を、システム部１０３に送る機能部である。また、状態制御部１０１は、状態遷移要求を受け取ると、システム部１０３に記憶された後述する現在状態Ｃを状態遷移要求が示す特定の状態に更新し、システム部１０３の特定の状態への遷移動作が終了すると、システム部１０３に記憶された後述する目標状態Ｔを特定の状態に更新する。また、状態制御部１０１は、情報処理装置１が外部イベント通知部２００からイベント通知を受信しても、イベントハンドラ部１００から状態遷移要求を受け取らなければ、システム部１０３の状態を遷移させない排他制御を行う。なお、イベントハンドラ部１００は、イベント通知に基づいて、状態遷移要求を状態制御部１０１に送らないと判定した場合、明示的に、状態制御部１０１に対して、排他制御を行わせるための排他要求を送るものとしてもよい。
【００２２】
状態記憶部１０２は、図２に示すように、システム部１０３の現在状態および目標状態の情報を、それぞれ現在状態Ｃおよび目標状態Ｔとして記憶する機能部である。状態記憶部１０２は、例えば、図１に示すＲＡＭ１２または補助記憶装置１３によって実現される。
【００２３】
システム部１０３は、図１に示すＣＰＵ１０で実行されるプログラムによって実現される特定の処理を行うためのシステムである。また、システム部１０３は、後述する状態遷移図等で示すように、ある特定の状態を取り得る。また、システム部１０３は、状態制御部１０１から、特定の状態に遷移動作する遷移命令を受けると、特定の状態に遷移動作し、遷移動作が終了すると、遷移動作が完了した旨を示す遷移完了を状態制御部１０１へ送る。ここで、システム部１０３が取り得る特定の状態とは、システム部１０３が、例えば、ある物理量を計測するアプリケーションである場合、「物理量の計測中」、「物理量の計測動作の一時停止中」および「物理量の計測開始の待機中」等の各状態が該当する。
【００２４】
外部イベント通知部２００は、システム部１０３が特定の状態に遷移する条件が充足した旨を示すイベント通知を情報処理装置１に送信する機能部である。なお、外部イベント通知部２００は、図２に示すように、情報処理装置１の外部の機能部として示されているが、これに限定されるものではなく、情報処理装置１の内部の機能部であってもよい。また、イベント通知としては、例えば、システム部１０３であるアプリケーションに対して、特定の状態に遷移（例えば、上述のアプリケーションの例で「物理量の計測開始の待機中」から「物理量の計測中」に遷移）させるためのユーザによる入力装置１５に対する操作入力の信号等が、イベント通知としてイベントハンドラ部１００に送られる。
【００２５】
なお、図２に示すイベントハンドラ部１００、および状態制御部１０１の一部または全部は、ソフトウェアであるプログラムではなく、ハードウェア回路によって実現されてもよい。
【００２６】
また、イベントハンドラ部１００、状態制御部１０１および状態記憶部１０２は、機能を概念的に示したものであって、このような構成に限定されるものではない。例えば、図２で独立した機能部として図示した複数の機能部を、１つの機能部として構成してもよい。一方、図２の１つの機能部が有する機能を複数に分割し、複数の機能部として構成するものとしてもよい。
【００２７】
（排他区間の拡張について）
図３は、排他制御区間を拡張する例を説明する図である。図４は、排他制御区間を拡張する前の排他処理の一例を示すフローチャートである。図５は、排他制御区間を拡張した後の排他処理の一例を示すフローチャートである。図３〜５を参照しながら、排他制御の区間が拡張される前後の排他処理について説明する。
【００２８】
図３に示すように、排他処理αは、特定の区間で排他制御を行う。すなわち、排他処理αは、所定のタイミングでロックを取得することにより、システムが特定の状態に遷移しないようにロックをかける。そして、排他処理αは、ロックをかけてから特定の区間の終了時に、アンロック、すなわちロックを解放する。この排他処理αを、図４に示すように、上述の現在状態Ｃおよび目標状態Ｔを用いて、説明する。特定の区間の前では、現在状態Ｃおよび目標状態Ｔは、アンロック状態であるものとする。
【００２９】
＜ステップＳ１０１＞
排他処理αは、所定のタイミング（特定の区間の開始のタイミング）でロックを取得し、システムが特定の状態に遷移しないようにロックをかける。また、排他処理αは、目標状態Ｔをロック状態Ｌに更新する（Ｔ：Ｌ）。また、排他処理αは、現在状態Ｃと目標状態Ｔとが一致しないことになるので排他制御を行う。そして、ステップＳ１０２へ移行する。
【００３０】
＜ステップＳ１０２＞
排他処理αは、システムに対してロックをかけてから特定の区間の終了のタイミングでアンロック、すなわち、ロックを解放する。また、排他処理αは、目標状態Ｔをアンロック状態Ｕに更新する（Ｔ：Ｕ）。
【００３１】
次に、図３に示すように、排他処理βによって、排他制御を行う特定の区間を拡張した場合を考える。この場合、排他処理αでのロック処理およびアンロック処理は不要となり、デッドロックを回避するために削除、または、すでにロック状態になっている場合には、ロックを取得しないような処理を追加する必要がある。なお、排他制御を行う区間を縮小する場合も同様である。
【００３２】
このように、排他制御を行う区間を変更するたびに処理を修正することは、手間もかかり、かつ、デッドロックが混入する要因となる。この問題は、上述したように、システムについて現在状態Ｃおよび目標状態Ｔの概念を採用することにより回避することができる。すなわち、排他処理βは、現在状態Ｃと目標状態Ｔとが一致しない場合、システムに対して排他制御をかける。また、排他処理βは、目標状態Ｔを変更する場合、既に、目的の状態に設定されている場合は、何も行わないものとする。この排他処理βについて、図５に示すように、現在状態Ｃおよび目標状態Ｔを用いて、説明する。拡張された排他制御の区間の前では、現在状態Ｃおよび目標状態Ｔは、アンロック状態であるものとする。
【００３３】
＜ステップＳ１１１＞
排他処理βは、所定のタイミング（拡張された排他制御の区間の開始のタイミング）でロックを取得し、システムが特定の状態に遷移しないようにロックをかける。また、排他処理βは、目標状態Ｔをロック状態Ｌに更新する（Ｔ：Ｌ）。そして、ステップＳ１１２へ移行する。
【００３４】
＜ステップＳ１１２＞
排他処理αは、本来であれば、目標状態Ｔをロック状態Ｌに更新するが、既に、排他処理βにより目標状態Ｔがロック状態Ｌに更新されているので、何もしない。そして、ステップＳ１１３へ移行する。
【００３５】
＜ステップＳ１１３＞
排他処理αは、本来であれば、目標状態Ｔをアンロック状態Ｕに更新するが、ステップＳ１１２でロックをかける処理をしていないので、何もしない。そして、ステップＳ１１４へ移行する。
【００３６】
＜ステップＳ１１４＞
排他処理βは、システムに対してロックをかけてから、拡張された排他制御の区間の終了のタイミングでアンロック、すなわち、ロックを解放する。また、排他処理βは、目標状態Ｔをアンロック状態Ｕに更新する（Ｔ：Ｕ）。
【００３７】
以上の動作のように、排他処理βでは、排他処理αを意識することなく、排他制御の区間の拡張または縮小を行うことができるので、デッドロックの発生を抑制することができる。
【００３８】
（状態遷移について）
図６は、状態遷移図の例を示す図である。図７は、状態遷移表の例を示す図である。図６および７を参照しながら、システム部１０３における状態遷移について説明する。
【００３９】
本実施の形態に係る情報処理装置１のシステム部１０３は、例えば、図６に示す状態遷移図に基づいて、状態が遷移するものとする。すなわち、システム部１０３は、状態ａである場合、状態ｂおよび状態ｄに遷移することが可能である。また、システム部１０３は、状態ｂである場合、状態ａおよび状態ｃに遷移することが可能である。また、システム部１０３は、状態ｃである場合、状態ｂに遷移することが可能である。そして、システム部１０３は、状態ｄである場合、状態ａに遷移することが可能である。このようなシステム部１０３が遷移し得る状態をイベントハンドラ部１００が認識できるように、例えば、図７に示すような状態遷移表１０００のデータを、状態記憶部１０２に記憶しておくものとする。
【００４０】
（具体的な排他制御の動作）
図８は、実施の形態に係る情報処理装置での状態遷移動作を説明する図である。図９は、実施の形態に係る情報処理装置での状態遷移中の排他制御の動作の一例を示すシーケンス図である。図１０は、実施の形態に係る情報処理装置での状態遷移中に異常な状態遷移要求を受けた場合の動作の一例を示すシーケンス図である。図８〜１０を参照しながら、本実施の形態に係る情報処理装置１の具体的な状態制御の動作について説明する。
【００４１】
図８に示すように、システム部１０３は、図６の状態遷移図に示すような状態遷移が可能である。また、外部イベント通知部２００は、図８に示すように、システム部１０３の状態に関わらず、状態ａから状態ｂ、ｄに遷移する条件、状態ｂから状態ａ、ｃに遷移する条件、状態ｃから状態ｂに遷移する条件、および状態ｄから状態ａに遷移する条件の各条件が充足した場合に、その旨を示すイベント通知を情報処理装置１のイベントハンドラ部１００に送信する。イベントハンドラ部１００は、イベント通知を受信した場合、システム部１０３の現在状態と目標状態とが一致すると判定した場合、状態制御部１０１に、受信したイベント通知に従って、システム部１０３が特定の状態に遷移することを要求する状態遷移要求を、状態制御部１０１に送る。なお、説明を簡潔にするため、図８では状態制御部１０１の記載を略している。
【００４２】
次に、図９を参照しながら、状態遷移中に外部イベント通知部２００からイベント通知が発生した場合として、状態ａから状態ｂに遷移動作中に、状態ｃに遷移する条件が充足した旨を示すイベント通知が発生した場合の動作を例に説明する。初期状態として、状態記憶部１０２に記憶されている現在状態Ｃが状態ａ（すなわち、システム部１０３の現在状態が状態ａ）、目標状態Ｔが状態ａとなっているものとする。
【００４３】
＜ステップＳ１１＞
外部イベント通知部２００は、システム部１０３の状態について、状態ｂへ遷移する条件が充足したことを検知し、充足した旨を示すイベント通知を、情報処理装置１のイベントハンドラ部１００に送信する。
【００４４】
＜ステップＳ１２＞
イベントハンドラ部１００は、状態ｂへ遷移する条件が充足した旨を示すイベント通知を受信すると、システム部１０３が状態ｂに遷移することが可能か否かを判断する。具体的には、イベントハンドラ部１００は、現在状態Ｃと目標状態Ｔとが共に状態ａで一致することを確認し、さらに、状態記憶部１０２の状態遷移表１０００を参照して、システム部１０３が状態ａから状態ｂへ遷移可能であることを確認することによって、システム部１０３が状態ｂに遷移することが可能であると判定する。
【００４５】
＜ステップＳ１３＞
イベントハンドラ部１００は、システム部１０３の状態を状態ｂに遷移することを要求する状態遷移要求を、状態制御部１０１に送る。
【００４６】
＜ステップＳ１４＞
状態制御部１０１は、状態遷移要求を受け取ると、システム部１０３の目標状態Ｔを状態遷移要求が示す状態ｂに更新し、状態ｂに遷移動作させるための遷移命令を、システム部１０３に送る。システム部１０３は、遷移命令に従って、状態ａから状態ｂへの遷移動作を開始する。
【００４７】
＜ステップＳ１５＞
システム部１０３が状態ｂへの遷移動作中に、外部イベント通知部２００は、システム部１０３の状態について、状態ｃへ遷移する条件が充足したことを検知し、充足した旨を示すイベント通知を、イベントハンドラ部１００に送信する。
【００４８】
＜ステップＳ１６＞
イベントハンドラ部１００は、状態ｃへ遷移する条件が充足した旨を示すイベント通知を受信すると、システム部１０３が状態ｃに遷移することが可能か否かを判断する。具体的には、イベントハンドラ部１００は、状態記憶部１０２の状態遷移表１０００を参照して、システム部１０３が状態ｂから状態ｃへ遷移可能であることを確認する。ただし、イベントハンドラ部１００は、現在状態Ｃが状態ａで、目標状態Ｔが状態ｂで不一致であるので、システム部１０３が状態遷移中であるとみなし、イベント通知を無視する。なお、システム部１０３によっては必ずしも無視する必要はなく、状態遷移が完了するまで処理を後回しにしてもよい。
【００４９】
＜ステップＳ１７＞
状態制御部１０１は、システム部１０３の遷移動作が終了し、システム部１０３から遷移完了の旨を受けると、システム部１０３の現在状態Ｃを状態遷移要求が示す状態ｂに更新する。
【００５０】
このように、イベントハンドラ部１００は、現在状態Ｃと目標状態Ｔとの比較で、不一致の場合は、システム部１０３が状態遷移中とみなして、イベント通知を無視または処理を後回しにすることにより、イベント通知を無視するロジックを追加する必要がなく、状態が追加されるたびにそのロジックを追加する必要もないので、ロジックの誤りおよび漏れによる不具合の発生を抑制することができる。
【００５１】
次に、図１０を参照しながら、状態遷移中に外部イベント通知部２００からイベント通知が発生した場合として、状態ａから状態ｂに遷移動作中に、状態ｄに遷移する条件が充足した旨を示すイベント通知が発生した場合の動作を例に説明する。初期状態として、状態記憶部１０２に記憶されている現在状態Ｃが状態ａ（すなわち、システム部１０３の現在状態が状態ａ）、目標状態Ｔが状態ａとなっているものとする。
【００５２】
＜ステップＳ２１＞
外部イベント通知部２００は、システム部１０３の状態について、状態ｂへ遷移する条件が充足したことを検知し、充足した旨を示すイベント通知を、情報処理装置１のイベントハンドラ部１００に送信する。
【００５３】
＜ステップＳ２２＞
イベントハンドラ部１００は、状態ｂへ遷移する条件が充足した旨を示すイベント通知を受信すると、システム部１０３が状態ｂに遷移することが可能か否かを判断する。具体的には、イベントハンドラ部１００は、現在状態Ｃと目標状態Ｔとが共に状態ａで一致することを確認し、さらに、状態記憶部１０２の状態遷移表１０００を参照して、システム部１０３が状態ａから状態ｂへ遷移可能であることを確認することによって、システム部１０３が状態ｂに遷移することが可能であると判定する。
【００５４】
＜ステップＳ２３＞
イベントハンドラ部１００は、システム部１０３の状態を状態ｂに遷移することを要求する状態遷移要求を、状態制御部１０１に送る。
【００５５】
＜ステップＳ２４＞
状態制御部１０１は、状態遷移要求を受け取ると、システム部１０３の目標状態Ｔを状態遷移要求が示す状態ｂに更新し、状態ｂに遷移動作させるための遷移命令を、システム部１０３に送る。システム部１０３は、遷移命令に従って、状態ａから状態ｂへの遷移動作を開始する。
【００５６】
＜ステップＳ２５＞
システム部１０３が状態ｂへの遷移動作中に、外部イベント通知部２００は、システム部１０３の状態について、状態ｄへ遷移する条件が充足したことを検知し、充足した旨を示すイベント通知を、イベントハンドラ部１００に送信する。
【００５７】
＜ステップＳ２６＞
イベントハンドラ部１００は、状態ｄへ遷移する条件が充足した旨を示すイベント通知を受信すると、システム部１０３が状態ｄに遷移することが可能か否かを判断する。具体的には、イベントハンドラ部１００は、現在状態Ｃが状態ａで、目標状態Ｔが状態ｂで不一致であり、かつ、状態記憶部１０２の状態遷移表１０００を参照して、システム部１０３が状態ｂから状態ｄへ遷移することができないことを確認する。したがって、イベントハンドラ部１００は、状態ｄへ遷移する条件が充足した旨を示すイベント通知のように、状態ｂから状態ｄへの状態遷移は異常な遷移であることを検知する。この場合、イベントハンドラ部１００は、状態制御部１０１に対して、状態遷移要求を送らない。なお、イベントハンドラ部１００は、異常な遷移を求めるイベント通知であるものとして、例えば、表示装置１６にその旨を表示させるものとしてもよい。
【００５８】
このように、イベントハンドラ部１００は、現在状態Ｃと目標状態Ｔとの比較で、不一致の場合、状態遷移表１０００から目標状態Ｔの状態から、イベント通知の状態へは遷移できないと確認した場合、異常な遷移であるものとして検知することができる。図９および１０の例のように、現在状態Ｃと目標状態Ｔとを利用し、不一致の場合は、状態遷移中であるものとみなし、状態を遷移させない排他制御を実行することによって、デッドロックの発生を抑制することができる。
【００５９】
なお、イベントハンドラ部１００によって、異常な遷移が検知された場合は、システム部１０３を強制的に特定の状態（例えば、システム部１０３の初期状態）に遷移させ、初期化処理を行うものとしてもよい。これによって、システム部１０３をリカバリーすることができる可能性がある。
【００６０】
また、イベントハンドラ部１００は、外部イベント通知部２００からのイベント通知が示す状態が、現在状態Ｃまたは目標状態Ｔと一致する場合に、システム部１０３の状態を遷移させないようにしてもよい。また、イベントハンドラ部１００は、現在状態Ｃと目標状態Ｔとが一致する場合であっても、状態遷移表１０００の参照により、現在状態Ｃからイベント通知が示す状態には遷移できない場合、状態遷移要求を送らないようにしてもよい。この場合も、上述と同様に、異常な遷移を検知したとして扱うものとしてもよい。
【００６１】
なお、上述のイベントハンドラ部１００、および状態制御部１０１のうち少なくともいずれかがプログラムで実現される場合、情報処理装置１で実行されるそのプログラムは、インストール可能な形式または実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−ＲまたはＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供される。
【００６２】
また、上述の実施の形態に係る情報処理装置１で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、上述の実施の形態に係る情報処理装置１で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。また、上述のプログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【００６３】
また、上述の実施の形態に係る情報処理装置１で実行されるプログラムは、上述したイベントハンドラ部１００、および状態制御部１０１のうち少なくともいずれかを含むモジュール構成となっていてもよく、実際のハードウェアとしてはＣＰＵ１０が上述の記憶媒体からプログラムを読み出して実行することにより、上述の各機能部が主記憶装置上にロードされて生成されるようになっている。
【符号の説明】
【００６４】
１  情報処理装置
１０  ＣＰＵ
１１  ＲＯＭ
１２  ＲＡＭ
１３  補助記憶装置
１４  通信Ｉ／Ｆ
１５  入力装置
１６  表示装置
１７  ＣＤ−ＲＯＭ
１８  ＣＤ−ＲＯＭドライブ
１９  バス
１００  イベントハンドラ部
１０１  状態制御部
１０２  状態記憶部
１０３  システム部
２００  外部イベント通知部
１０００  状態遷移表
Ｃ  現在状態
Ｔ  目標状態
【先行技術文献】
【特許文献】
【００６５】
【特許文献１】特開２００９−１５７７５１号公報
【図１】
2016177385.tif 000003
【図２】
2016177385.tif 000004
【図３】
2016177385.tif 000005
【図４】
2016177385.tif 000006
【図５】
2016177385.tif 000007
【図６】
2016177385.tif 000008
【図７】
2016177385.tif 000009
【図８】
2016177385.tif 000010
【図９】
2016177385.tif 000011
【図１０】
2016177385.tif 000012