(57)【要約】【課題】情報処理装置の内部でソフトウェアの異常動作を高い信頼性を持って検出することのできる情報処理装置を提供する。【解決手段】この情報処理装置は、ハードウェア・リソースを複数に分割した複数の論理パーティションを管理する仮想化部（２４）と、ユーザ・アプリケーションがゲストＯＳを介して稼動する仮想マシン（３３）と、ユーザ・アプリケーション内の照合対象の処理の照合を行う演算照合モジュール（４１５）とを備える。そして、仮想マシン（３３）は、ユーザ・アプリケーション内の照合要求コードに基づいて、照合対象の処理が実行される際に、照合要求、照合対象の処理を特定する特定情報、及び照合対象の処理の結果を、ゲストＯＳ（３２）から仮想化部（２４）へ送り、演算照合モジュール（４１５）は、照合要求に基づいて特定情報により特定される照合用処理を実行し、照合用処理の結果と照合対象の処理の結果とを照合する。【選択図】図５
2018160197.tif 000002
【特許請求の範囲】
【請求項１】
中央演算処理装置、メモリ及び表示装置を含むハードウェアと、
前記ハードウェアのリソースを複数に分割した第１論理パーティションと第２論理パーティションとを含む複数の論理パーティションを管理する仮想化部と、
ユーザ・アプリケーションがゲストＯＳを介して稼動され、前記第１論理パーティションで動作する仮想マシンと、
前記第２論理パーティションで動作し、前記ユーザ・アプリケーション内の照合対象の処理の照合を行う演算照合モジュールと、
を備え、
前記ユーザ・アプリケーションは、前記照合対象の処理を指定するための照合要求コードを含み、
前記仮想マシンは、前記照合対象の処理が実行される際、前記照合要求コードに基づいて、照合要求、前記照合対象の処理を特定する特定情報、及び前記照合対象の処理の結果を、前記ゲストＯＳから前記仮想化部へ送る機能を有し、
前記演算照合モジュールは、前記仮想化部から受けた前記照合要求に基づいて、前記特定情報により特定されかつ前記照合対象の処理に相当する照合用処理を実行し、前記照合用処理の結果と前記照合対象の処理の結果とを照合することを特徴とする情報処理装置。
【請求項２】
複数種類の演算プログラムが前記演算照合モジュールにより読出し可能に格納された演算プログラム格納部をさらに備え、
前記演算照合モジュールは、前記演算プログラム格納部に格納された複数種類の演算プログラムの中から前記特定情報により特定される演算プログラムを用いて前記照合用処理を実行することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記照合用処理は、前記照合対象の処理と異なるアルゴリズムを有することを特徴とする請求項１又は請求項２に記載の情報処理装置。
【請求項４】
前記第２論理パーティションで動作し、前記演算照合モジュールによる照合の結果が異常である場合に、前記ハードウェアを用いて異常を報知する報知モジュールを備えることを特徴とする請求項１から請求項３のいずれか一項に記載の情報処理装置。
【請求項５】
前記第２論理パーティションで動作し、前記ユーザ・アプリケーションの動作確認を繰り返し行う動作確認モジュールをさらに備えることを特徴とする請求項１から請求項４のいずれか一項に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、鉄道分野などの高い安全性が要求される分野で使用されるタブレット端末などの情報処理装置に関する。
【背景技術】
【０００２】
鉄道の分野では、例えば鉄道設備の保守作業において、タブレット端末を用いて係員へ様々な情報支援を行うことがある。このような場合、タブレット端末が異常動作し、係員が異常動作に気付かないと、作業の継続が困難になるばかりでなく、係員の安全、列車の安全又は列車の安定した運行に支障が生じる恐れがある。
このような事態を防ぐため、従来、２台のタブレット端末を係員に所持させ、これらに同じ処理を実行させるという対策が採られることがある。この対策によれば、一方のタブレット端末が異常動作した場合に、２台のタブレット端末の動作に差異が生じる。従って、係員は、これらを見比べることによって異常動作に気付くことができる。異常動作に気付くことができれば、係員は、作業の安全を確保するなど、フェールセーフを実現する動作へ移行することができる。
【０００３】
特許文献１には、１台の端末装置を用いて使用者が端末装置の異常に速やかに気付けるようにした技術が提案されている。特許文献１の端末装置では、１台の端末装置の中で情報処理が二重に行われ、二重の処理結果の表示が時分割で交互に出力される。これにより、一方の情報処理に異常動作があれば、交互の表示出力に差異が生じ、使用者は、異常動作に速やかに気付くことができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平６−１６１７９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
同じ処理を実行する２台のタブレット端末を用いて係員を支援する構成では、タブレット端末の異常動作の発見が容易になる一方、係員が同一のタブレット端末を２台所持しなければならないという煩雑さが生じる。また、タブレット端末に何らかの情報を入力する場合、２台のタブレット端末に同じ入力を行わなければならないという煩雑さが生じる。
【０００６】
一方、特許文献１の技術は、１台の端末装置の中で二重に情報処理を行うことで、同じ処理を実行する２台の端末装置を所持するのと同様の効果が得られることを期待している。しかしながら、１台の端末装置で情報処理を二重に行う場合、具体的には、１つのＯＳ（Operating System）上に２つの情報処理モジュールを並列処理により動作させることになる。端末装置で生じる異常はＯＳの異常動作に起因することがあり、この場合、２つの情報処理モジュールの両方に異常動作が波及する。そして、２つの情報処理モジュールの両方に異常動作が生じて、両者の表示出力に差異が生じないと、使用者は、異常動作に気付くことが困難になる。例えば、ＯＳの異常により２つの情報処理モジュールが停止し、両方の表示出力が更新されない場合、同じ表示出力が継続されて、使用者は異常動作に気付くことが難しい。
【０００７】
さらに、特許文献１の技術では、端末装置の中で動作するソフトウェアは、二重に情報処理を行う部分と、入力処理、データ送信処理およびデータ受信処理など二重に行わない部分とが混在する（特許文献１の図１を参照）。従って、仮に既存のアプリケーション・プログラム（以下、「アプリケーション」と略す。）があって、これを特許文献１の技術に対応させようとしても、一重の処理と二重の処理とを切り分け、これらを適切に対応付けるプログラムの改変が必要となる。すなわち、特許文献１の技術では、既存のアプリケーションがあっても、アプリケーションの多くの改変が必要になり、既存のアプリケーションを流用することが難しいという課題がある。
【０００８】
本発明は、情報処理装置の内部でアプリケーションの異常動作を高い信頼性を持って検出することのできる情報処理装置を提供することを目的とする。さらに、本発明は、既存のアプリケーションがある場合に、既存のアプリケーションを少ない改変で流用して、異常動作の検出の対象とすることのできる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、上記目的を達成するため、
中央演算処理装置、メモリ及び表示装置を含むハードウェアと、
前記ハードウェアのリソースを複数に分割した第１論理パーティションと第２論理パーティションとを含む複数の論理パーティションを管理する仮想化部と、
ユーザ・アプリケーションがゲストＯＳを介して稼動され、前記第１論理パーティションで動作する仮想マシンと、
前記第２論理パーティションで動作し、前記ユーザ・アプリケーション内の照合対象の処理の照合を行う演算照合モジュールと、
を備え、
前記ユーザ・アプリケーションは、前記照合対象の処理を指定するための照合要求コードを含み、
前記仮想マシンは、前記照合対象の処理が実行される際、前記照合要求コードに基づいて、照合要求、前記照合対象の処理を特定する特定情報、及び前記照合対象の処理の結果を、前記ゲストＯＳから前記仮想化部へ送る機能を有し、
前記演算照合モジュールは、前記仮想化部から受けた前記照合要求に基づいて、前記特定情報により特定されかつ前記照合対象の処理に相当する照合用処理を実行し、前記照合用処理の結果と前記照合対象の処理の結果とを照合することを特徴とする情報処理装置である。
【００１０】
この構成によれば、複数の論理パーティションのうち、第１論理パーティションで動作する仮想マシン上で、ゲストＯＳとユーザ・アプリケーションとが稼動する。さらに、第２論理パーティションで動作する演算照合モジュールが、ユーザ・アプリケーションに含まれる照合要求コードに基づいて、照合対象の処理に相当する照合用処理を行い、これらの処理の結果を照合する。この照合により、ユーザ・アプリケーションに異常動作が生じていないかが検出される。また、上記構成によれば、ゲストＯＳの異常に起因してユーザ・アプリケーションに異常動作が生じた場合でも、ゲストＯＳの異常は演算照合モジュールに波及しないので、ユーザ・アプリケーションの異常動作を検出できる。そして、この異常動作の検出により情報処理装置又は使用者にフェールセーフを実現する処理を行わせることができる。
さらに、上記構成によれば、ユーザ・アプリケーションに照合対象の処理を指定するための照合要求コードを含ませることで、演算照合モジュールに照合対象の処理の照合を行わせることができる。従って、ゲストＯＳ上で動作する既存のユーザ・アプリケーションがある場合に、照合要求コードを付加すると言った少ない改変を行うだけで、ユーザ・アプリケーションを流用して、演算照合モジュールの照合処理に対応させることができる。
【００１１】
ここで、本発明に係る情報処理装置は、複数種類の演算プログラムが前記演算照合モジュールにより読出し可能に格納された演算プログラム格納部をさらに備え、
前記演算照合モジュールは、前記演算プログラム格納部に格納された複数種類の演算プログラムの中から前記特定情報により特定される演算プログラムを用いて前記照合用処理を実行するように構成されてもよい。
この構成によれば、予め複数種類の演算プログラムを設けておくことで、様々な照合対象の処理に対応する照合用処理を行うことができる。また、同一種類の照合用処理を実行する演算プログラムを共通化できるので、演算プログラムを格納する領域の縮小化が図れる。
【００１２】
さらに、前記照合用処理は、前記照合対象の処理と異なるアルゴリズムを有する構成としてもよい。
この構成によれば、演算照合モジュールは照合対象の処理と異なるアルゴリズムを用いて異常動作が生じていないか照合するので、照合対象の処理がアルゴリズムに起因して異常動作が生じるような場合でも、この異常動作を検出することができる。
【００１３】
また、本発明に係る情報処理装置は、前記第２論理パーティションで動作し、前記演算照合モジュールによる照合の結果が異常である場合に、前記ハードウェアを用いて異常を報知する報知モジュールを備えてもよい。
この構成によれば、ユーザ・アプリケーションに異常動作が生じた場合に、使用者に異常が報知されて、使用者にフェールセーフを実現するような動作を行わせることができる。また、報知モジュールは、ユーザ・アプリケーションが実行される第１論理パーティションとは異なる第２論理パーティションで動作するので、ゲストＯＳに起因する異常動作があっても、この異常動作の影響を受けずに異常の報知を行うことができる。
【００１４】
さらに、本発明に係る情報処理装置は、前記第２論理パーティションで動作し、前記ユーザ・アプリケーションの動作確認を繰り返し行う動作確認モジュールをさらに備えてもよい。
この構成によれば、動作確認モジュールにより、ユーザ・アプリケーションが停止してしまうような異常動作を検出し、これに対処することができる。また、動作確認モジュールは、ユーザ・アプリケーションが実行される第１論理パーティションと異なる第２論理パーティションで動作するので、ゲストＯＳに起因する異常動作があっても、この異常動作の影響を受けずにユーザ・アプリケーションの動作確認を行うことができる。
【発明の効果】
【００１５】
本発明によれば、情報処理装置の内部でアプリケーションの異常動作を高い信頼性を持って検出することができる。さらに、本発明によれば、既存のアプリケーションがある場合に、既存のアプリケーションを少ない改変で流用して、異常動作の検出処理に対応させることができるという効果が奏される。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態に係る情報処理装置を示す構成図である。
【図２】本発明の実施形態に係る情報処理装置の論理構造を示す構成図である。
【図３】ユーザ・アプリケーションに含まれる照合要求コードを説明するもので、（Ａ）は既存の処理コードの一例を示す図、（Ｂ）は照合要求コードが付加された処理コードの一例を示す図である。
【図４】図３（Ｂ）の処理の手順を説明するフローチャートである。
【図５】演算照合処理の正常時の流れの一例を示すシーケンス図である。
【図６】演算照合処理の異常時の流れの一例を示すシーケンス図である。
【図７】演算照合モジュールが実行する演算照合処理の手順の一例を示すフローチャートである。
【図８】動作確認処理の流れの一例を示すシーケンス図である。
【図９】動作確認処理の問い合わせに対して応答を行うユーザ・アプリケーションのメッセージ処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１７】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
図１は、本発明の実施形態に係る情報処理装置を示す構成図である。図２は、本発明の実施形態に係る情報処理装置の論理構造を示す構成図である。
本発明の実施形態に係る情報処理装置１は、例えばタブレット端末であり、図１に示すように、ＣＰＵ（Central Processing Unit：中央演算処理装置）１１、不揮発性メモリ１２、メモリ１６、表示装置１７、タッチパネル１８及び通信装置１９を備える。表示装置１７は、例えば液晶ディスプレイなどの画像表示が可能な装置である。タッチパネル１８は表示装置１７上に設けられ、指又はデジタルペンなどを近接させることで近接した位置の情報を入力できる入力装置である。
【００１８】
不揮発性メモリ１２には、仮想化環境を構築する仮想化ＯＳプログラム１３が格納され、さらに、仮想マシン記憶部１４と、監視パーティション記憶部１５とが設けられる。仮想マシン記憶部１４には、ゲストＯＳプログラム３２ａとユーザ・アプリケーション３１とが格納される。監視パーティション記憶部１５には、監視ソフトウェア４１が格納され、さらに、演算プログラム格納部４１５ａが設けられる。
【００１９】
＜仮想化システムの構成＞
情報処理装置１の起動時、ＣＰＵ１１は、先ず、仮想化ＯＳプログラム１３を実行する。これにより、図２に示すように、仮想化部２４、仮想化部インタフェース５２、サービス・ソフトウェア５１、仮想マシン３３及び高信頼型アプリケーション・インタフェース４２が実現される。以下、アプリケーション・インタフェースを「ＡＰＩ」と記す。
【００２０】
仮想化部２４は、ハードウェア・リソース２５を時分割或いは複数の領域に分割した複数の論理パーティションを構築し、これらの管理を行う。複数の論理パーティションには、ゲストパーティション（第１論理パーティションに相当）２１、監視パーティション２２（第２論理パーティションに相当）及びシステムパーティション２３が含まれる。また、仮想化部２４は、各パーティション間のデータの送受信を行う。ゲストパーティション２１と監視パーティション２２とは、仮想化部２４を介してデータの送受信が可能である他、互いに独立している。従って、ゲストパーティション２１で情報処理上の異常が発生しても、この異常が監視パーティション２２の情報処理へ容易に波及することはない。
【００２１】
仮想化部インタフェース５２は、サービス・ソフトウェア５１と仮想化部２４又はハードウェア・リソース２５とを結ぶためのＡＰＩを有するサブシステムである。サービス・ソフトウェア５１は、仮想化環境の管理のために仮想化部２４が利用する各種のサービスを提供する。
【００２２】
仮想マシン３３は、ゲストパーティション２１上で動作し、ハードウェア・リソース２５を模擬して、ゲストＯＳ３２とハードウェア・リソース２５とを結ぶソフトウェアである。仮想マシン３３は、１つの情報処理装置のように振る舞うことで、ゲストＯＳ３２は仮想マシン３３上で稼動する。仮想マシン３３は、ゲストパーティション２１に割り当てられたハードウェア・リソース２５に加え、仮想化部２４と通信を行うための機能モジュールを備える。ゲストＯＳ３２は、この機能モジュールを駆動するためのドライバがインストールされることで、機能モジュールを介して仮想化部２４と通信を行うことが可能となる。
【００２３】
高信頼型ＡＰＩ４２は、監視パーティション２２上のソフトウェアと仮想化部２４又はハードウェア・リソース２５とを結ぶための高信頼型のＡＰＩを有するサブシステムである。高信頼型のＡＰＩとしては、例えばPOSIX（Portable operating system interface）などを採用できる。
【００２４】
＜ゲストパーティション＞
ゲストパーティション２１においては、ＣＰＵ１１の分割されたリソースが、仮想マシン記憶部１４のゲストＯＳプログラム３２ａを実行する。これにより、図２に示すように、仮想マシン３３上でゲストＯＳ３２が動作する。さらに、ＣＰＵ１１の分割されたリソースは、ゲストＯＳ３２において仮想マシン記憶部１４のユーザ・アプリケーション３１を実行する。これにより、ゲストＯＳ３２上でユーザ・アプリケーション３１が動作する。なお、図２におけるユーザ・アプリケーション３１は、メモリ１６に展開されてＣＰＵ１１によって実行されているプロセスの状態を表わしている。
【００２５】
ゲストＯＳ３２は、例えば一般的なタブレット端末用のＯＳである。ゲストＯＳ３２は、仮想マシン３３を１つの物理マシンのように認識し、１つの物理マシン上で動作するときと同様に動作する。さらに、ゲストＯＳ３２には、仮想化部２４とデータの送受信を行うための機能モジュールのドライバが組み込まれ、これにより、ゲストＯＳ３２と仮想化部２４との間でデータの送受信が可能となる。
ユーザ・アプリケーション３１は、例えば、鉄道設備の保守作業を支援する支援ソフトウェアである。ユーザ・アプリケーション３１は、１つの物理マシン上で動作する場合と同様に、仮想マシン３３上で動作する。ただし、ユーザ・アプリケーション３１は、仮想化部２４にデータを送信するコードを持つ場合に、ゲストＯＳ３２の機能モジュールを介して仮想化部２４へデータの送信を行うことができる。
【００２６】
＜監視パーティション＞
監視パーティション２２においては、ＣＰＵ１１の分割されたリソースが、監視パーティション記憶部１５の監視ソフトウェア４１を実行する。これにより、高信頼型ＡＰＩ４２上で監視ソフトウェア４１が動作する。なお、図２における監視ソフトウェア４１は、メモリ１６に展開されてＣＰＵ１１によって実行されているプロセスの状態を表わしている。
監視ソフトウェア４１は、主にユーザ・アプリケーション３１の動作の監視と異常報知とを行う。監視ソフトウェア４１は、図２に示すように、キープ・アライブ・モジュール４１１、報知モジュール４１２、診断モジュール４１３、ロギングモジュール４１４、演算照合モジュール４１５及び状態監視（health monitor）モジュール４１６を備える。キープ・アライブ・モジュール４１１は、本発明に係る動作確認モジュールの一例に相当する。
【００２７】
キープ・アライブ・モジュール４１１は、ゲストパーティション２１上のアプリケーションと繰り返し通信を行って、アプリケーションの動作確認を行う。
診断モジュール４１３は、情報処理装置１の起動時と動作中とにハードウェアの診断処理を行う。
ロギングモジュール４１４は、仮想マシン３３上のゲストＯＳ３２と通信を行って、ユーザ・アプリケーションによる通信等のアクセスログ及び操作ログの収集および保存を行う。
【００２８】
報知モジュール４１２は、例えば表示装置１７の出力によってユーザに報知を行う。監視パーティション２２には、ゲストパーティション２１よりも高い優先度で表示装置１７のリソースが割り当てられている。これにより、仮にゲストパーティション２１から表示装置１７に画像出力が行われているときであっても、報知モジュール４１２はこの画像に上書きするように表示装置１７に画像出力することができる。情報処理装置１が振動装置又は表示ランプなどの報知デバイスを有する場合には、報知モジュール４１２はこれらの報知デバイスを動作させて報知を行う構成を採用してもよい。
【００２９】
演算照合モジュール４１５は、ユーザ・アプリケーション３１上で指定された照合対象の処理が正常に行われたか否かを照合する。演算照合モジュール４１５は、ユーザ・アプリケーション３１の照合対象の処理に相当する処理（以下、「照合用処理」と呼ぶ）を行って、ユーザ・アプリケーション３１の処理結果と、自らの処理結果とを照合し、正常か異常かを判断する。照合用処理は、ユーザ・アプリケーション３１の照合対象の処理と異なるアルゴリズムで、照合対象の処理と同様の処理を行い、同一の結果を返すように作成される。照合用処理は照合対象の処理より堅牢性の高いアルゴリズムを用いて作成されると、より好ましい。照合用処理を実現する演算プログラムは、複数種類の照合対象の処理に対応させて複数種類用意され、演算プログラム格納部４１５ａに格納される。演算照合モジュール４１５は、演算プログラム格納部４１５ａから演算プログラムを読み出して実行することができる。
【００３０】
状態監視モジュール４１６は、監視パーティション２２内で生じた例外又はタイムアウトに応じて所定の操作を行う。例えば、演算照合モジュール４１５は異常を検出した際に例外処理を呼び出し、状態監視モジュール４１６はこの呼び出しに基づいて報知モジュール４１２に異常発生の表示要求を出力する。
【００３１】
＜照合要求コード＞
続いて、演算照合処理を行うために、ユーザ・アプリケーション３１に照合要求コードを付加して照合対象の処理を指定する方法について説明する。演算照合処理とは、演算照合モジュール４１５がユーザ・アプリケーション３１で異常動作が発生していないか照合を行う処理である。ここで説明する照合要求コードを付加する方法は、一例に過ぎず、本発明を制限するものではない。
図３は、ユーザ・アプリケーションに含まれる照合要求コードを説明する図であり、図３（Ａ）は既存の処理コードの一例を示し、図３（Ｂ）は照合要求コードが付加された処理コードの一例を示す。図４は、図３（Ｂ）の処理の手順を説明するフローチャートである。
【００３２】
ユーザ・アプリケーション３１には、予め、照合対象の処理を指定するための照合要求コード５０が付加される。照合要求コード５０の付加は、例えば、図３（Ａ）、（Ｂ）に示すように、ユーザ・アプリケーション３１で定義された関数“func_D”を、照合要求付きの関数“func_D.inspect”に変更するなどして行う。ここで、関数とは、数学における関数を意味するのではなく、プログラミング言語における関数を意味し、引数を入力として所定の処理を行うようにプログラミングされた１単位の処理を指す。
【００３３】
照合要求付きの関数は、ユーザ・アプリケーション３１の中で予め定義される。照合要求付きの関数では、元の関数の処理に加えて、仮想化部２４へ照合要求を出力する処理と、正常の照合結果を待機する処理とが追加される。これらの処理は、元の関数処理を実行した後、関数の結果を返す前に追加される。図４のフローチャートを用いて具体例を説明する。この具体例の場合、図３（Ｂ）の照合要求付きの関数“func_D.inspect”は、元の関数“func_D”の処理（ステップＳ５）と、照合要求を出力する処理（ステップＳ６）と、照合結果を待機する処理（ステップＳ７）とを含んだ処理となる。仮想化部２４へ出力される照合要求には、元の関数を表わすインデックス番号と、関数の引数であるパラメータ値と、元の関数により得られた結果とが含まれる。これらのうち、インデックス番号とパラメータ値とが、照合対象の処理を特定する特定情報に相当する。
【００３４】
照合要求付きの関数の定義は、元の関数に対応する演算プログラムが予め演算プログラム格納部４１５ａに格納されている場合に限られる。逆に言えば、演算プログラム格納部４１５ａに格納される演算プログラムの種類を多くすれば、ユーザ・アプリケーション３１中の多くの種類の関数について照合要求付き関数を定義し、ユーザ・アプリケーション３１中の多くの処理について照合処理を行うことができる。
演算プログラム格納部４１５ａには、複数種類の演算プログラムがインデックス番号に対応付けられて格納されている。任意のインデックス番号により識別される演算プログラムは、同一のインデックス番号により識別されるユーザ・アプリケーション３１内の関数と同等の処理を行うように作成されている。
【００３５】
なお、演算照合処理では、照合対象の処理の結果と、照合用処理の結果とを照合して異常動作の発生を検査する。従って、照合対象の処理として関数を採用する場合には、関数の結果（戻り値）が関数内の処理を反映して多くの異なる値を取り得る関数が採用されるとよい。
また、演算照合モジュール４１５は、演算プログラムによって、照合対象の処理と同等の処理を行って同一の結果を算出する必要がある。従って、照合対象の処理は、監視パーティション２２からでも、ユーザ・アプリケーション３１と同様に実行できる処理である必要がある。このような処理としては、例えばＣＰＵ１１の演算処理、メモリ１６上の非排他領域からデータを読み出す処理、及び通信装置１９を用いた所定のデータ受信処理などを採用できる。また、このような処理ステップを組み合わせた一組の処理を採用できる。
【００３６】
＜演算照合処理＞
続いて、演算照合処理の全体の流れについてシーケンス図とフローチャートとを参照しながら説明する。
図５は、演算照合処理の正常時の流れの一例を示すシーケンス図である。図６は、演算照合処理の異常時の流れの一例を示すシーケンス図である。図７は、演算照合モジュールが実行する演算照合処理の手順の一例を示すフローチャートである。
【００３７】
図５と図６に示すように、情報処理装置１の動作中、ＣＰＵ１１がユーザ・アプリケーション３１の照合要求付きの関数の処理（「情報処理Ｐ１」と記す）に処理を移行したとする。例えば、図３（Ｂ）の“processing_A”の処理の場合、ＣＰＵ１１がプロセスが照合要求付きの関数“func_D.inspect(L1,M1)”の処理へ移行した場合に該当する。また、図４のフローチャートの場合、照合要求の無いステップＳ１〜Ｓ４の処理の後、ＣＰＵ１１が照合要求付きの情報処理（ステップＳ５〜Ｓ９）へ処理を移行した場合に該当する。
【００３８】
照合要求付きの情報処理Ｐ１では、先ず、ユーザ・アプリケーション３１のプロセスにおいて、元の関数の処理が実行され（ステップＳ５）、その後、ゲストＯＳ３２を介して仮想化部２４へ照合要求が出力される（ステップＳ６）。照合要求には、関数の種類を識別するためのインデックス番号と、関数の引数であるパラメータと、関数の結果とが含まれる。
図５と図６に示すように、照合要求は、仮想化部２４から演算照合モジュール４１５に送られる。演算照合モジュール４１５は、図７に示すように、常時、照合要求を待機しており（ステップＳ１１）、照合要求があると照合処理Ｐ２（ステップＳ１２〜Ｓ１５）を実行する。
【００３９】
照合処理Ｐ２では、先ず、演算照合モジュール４１５が、照合要求を入力し（ステップＳ１２）、演算プログラム格納部４１５ａからインデックス番号に対応する演算プログラムを読出す（ステップＳ１３）。さらに、演算照合モジュール４１５は、パラメータを引数として演算プログラムを実行し（ステップＳ１４）、結果を求め、演算プログラムの結果と照合要求に含まれる関数の結果とを照合する（ステップＳ１５）。両者の結果が一致していれば正常の照合結果となり、両者の結果が不一致であれば異常の照合結果となる。
【００４０】
図５に示すように、照合結果が正常の場合、演算照合モジュール４１５は、仮想化部２４とゲストＯＳ３２とを介してユーザ・アプリケーション３１のプロセスに正常の照合結果を戻す（ステップＳ１６）。ユーザ・アプリケーション３１のプロセスでは、ＣＰＵ１１が照合要求を出力した後、照合結果が戻るまで待機しており（図４のステップＳ７）、ＣＰＵ１１は正常の照合結果に基づいて続く情報処理Ｐ３を続行する（ステップＳ８、Ｓ９）。
【００４１】
一方、図６に示すように、照合結果が異常の場合、演算照合モジュール４１５は、仮想化部２４とゲストＯＳ３２とを介してユーザ・アプリケーション３１のプロセスに異常の照合結果を戻す（ステップＳ１７）。ユーザ・アプリケーション３１のプロセスでは、照合結果の待機中（ステップＳ７）、異常の照合結果が戻された場合、続く情報処理は中断される。
【００４２】
さらに、照合結果が異常の場合、演算照合モジュール４１５は、異常の照合結果に伴って例外を発生させ（ステップＳ１８）、これにより状態監視モジュール４１６において例外処理が実行され、報知モジュール４１２へ異常表示要求が出される。報知モジュール４１２は、この要求に基づいて、表示装置１７へ照合異常の表示を出力させる。このとき、仮に、ユーザ・アプリケーション３１による画像が表示装置１７に出力されていても、報知モジュール４１２の画像が上書きされて表示装置１７に照合異常を示す表示が出力される。
【００４３】
このような演算照合処理によれば、ユーザ・アプリケーション３１上の複数の処理に照合要求を付加しておくことで、ユーザ・アプリケーション３１の実行中、多くの処理で演算照合モジュール４１５により異常動作が生じていないか照合が行われる。そして、照合結果が異常である場合に、表示装置１７に異常を知らせる表示が行われる。従って、例えば鉄道設備の保守作業を行う係員が、保守作業の支援を行うユーザ・アプリケーション３１を１台の情報処理装置１で実行させて作業を行っていても、ユーザ・アプリケーション３１に異常が発生した場合に、速やかにこの異常に気付くことができる。そして、係員はフェールセーフが実現されるように、その後に必要な措置をとることができる。
【００４４】
また、仮想化環境により、演算照合モジュール４１５は、ユーザ・アプリケーション３１が実行されるゲストパーティション２１と異なる監視パーティション２２において実行される。このため、ゲストＯＳ３２の異常に起因してユーザ・アプリケーションに異常動作が生じた場合でも、ゲストＯＳ３２の異常が演算照合モジュール４１５に波及しない。従って、演算照合モジュール４１５は、高い信頼性を持ってユーザ・アプリケーション３１の異常動作を検出することができる。
【００４５】
さらに、上記の演算照合処理では、ユーザ・アプリケーション３１に照合対象の処理を指定するための照合要求コードを含ませることで、演算照合モジュール４１５に処理の照合を行わせることができる。従って、ゲストＯＳ３２上で動作する既存のユーザ・アプリケーションがある場合に、照合要求コードを付加すると言った少ない改変を行うだけで、既存のユーザ・アプリケーションを流用して、演算照合モジュール４１５による照合処理に対応させることができる。
【００４６】
＜動作確認処理＞
次に、監視ソフトウェア４１のキープ・アライブ・モジュール４１１によって実行される動作確認処理について説明する。上述した演算照合処理は、ユーザ・アプリケーション３１のプロセスから照合要求が出力されて照合が行われる。このため、演算照合処理だけでは、ユーザ・アプリケーション３１が途中で中断してしまうような異常動作の検出が難しくなる。そこで、このような異常動作の検出を速やかに行うために、情報処理装置１には動作確認処理を行う機能を備える。
【００４７】
図８は、動作確認処理の流れの一例を示すシーケンス図である。
動作確認処理は、主に、キープ・アライブ・モジュール４１１により実行される。動作確認処理においては、キープ・アライブ・モジュール４１１は定期的にユーザ・アプリケーション３１のプロセスへ問い合わせを行う。問い合わせは、仮想化部２４及びゲストＯＳ３２を介して送られる。ユーザ・アプリケーション３１のプロセスにおいては、ＣＰＵ１１は、フリーズなどの動作の中断がなければ、問い合わせに応答を行う。応答は、ゲストＯＳ３２及び仮想化部２４を介してキープ・アライブ・モジュール４１１に戻される。キープ・アライブ・モジュール４１１は、問い合わせの後、応答が返されるまでの時間計測Ｐ５を行い、所定時間内に応答があれば正常と判定する。正常の判定であれば、キープ・アライブ・モジュール４１１は、定期的な問い合わせを続行する。
【００４８】
一方、図８の時間計測Ｐ６のように、問い合わせの後、所定時間内に応答が無いと、キープ・アライブ・モジュール４１１は、異常と判定し、ゲストパーティションの停止要求を仮想化部２４に行い、さらに報知モジュール４１２へ表示要求を行う。これらにより、仮想化部２４は、ゲストパーティション２１へのハードウェア・リソースの割り当てを中止し、ゲストＯＳ３２とユーザ・アプリケーション３１との動作が中断される。さらに、報知モジュール４１２から表示装置１７へ表示データが出力され、表示装置１７から「アプリケーション異常」などの異常を知らせる表示が出力される。このとき、仮に、ユーザ・アプリケーション３１による画像が表示装置１７に出力されていても、報知モジュール４１２の画像が上書きされて表示装置１７に照合異常を示す表示が出力される。
【００４９】
動作確認処理では、ユーザ・アプリケーション３１のプロセスにおいて、ＣＰＵ１１が、仮想化部２４を介して入力される問い合わせに応答する処理を行う。このような処理は、通常、物理マシンのゲストＯＳ上で動作する既存のアプリケーションには含まれていない。従って、既存のアプリケーションを流用してユーザ・アプリケーション３１を作成する場合には、既存のアプリケーションを動作確認処理に対応させる改変が必要となる。
【００５０】
ゲストＯＳ３２は、ハードウェアからのメッセージ（例えばタッチパネル１８の入力情報など）又は他のプロセスからのメッセージを、アプリケーションのプロセスへ伝えるためにメッセージキューと呼ばれる機構を備える。また、ゲストＯＳ３２上で動作するアプリケーションは、メッセージキューに対応したメッセージ処理を備える。メッセージキューは、アプリケーションに送られる複数のメッセージが集められて順番に蓄積される機構であり、メッセージ処理は、メッセージキューから順番にメッセージを読み出して、メッセージに対応した処理へ振ら分けを行う処理である。
【００５１】
本実施形態の動作確認処理では、問い合わせはゲストＯＳ３２のメッセージキューを介して行われる。すなわち、仮想マシン３３は、仮想化部２４から問い合わせが送られてくると、この問い合わせをメッセージとしてゲストＯＳ３２のメッセージキューへ送る。また、応答は、ユーザ・アプリケーション３１のメッセージ処理を用いて行われる。
図９は、動作確認処理の問い合わせに対して応答を行うユーザ・アプリケーションのメッセージ処理の一例を示すフローチャートである。
【００５２】
ユーザ・アプリケーション３１のメッセージ処理には、図９に示すように、メッセージが、動作確認処理の問い合わせであるか否かを判別する処理（ステップＳ２２）が追加される。さらに、問い合わせである場合に応答をゲストＯＳ３２を介して仮想化部２４へ送る処理（ステップＳ２３）が追加される。メッセージキューから順にメッセージを読み出す処理（ステップＳ２１）と、他のメッセージの判別及び他のメッセージに応じた処理（ステップＳ２４〜Ｓ２４ｎ、Ｓ２５〜Ｓ２５ｎ）とは、既存のものが流用される。
このような仮想マシン３３とユーザ・アプリケーション３１の構成により、図８に示した動作確認処理が実現される。
【００５３】
上述した動作確認処理によれば、ユーザ・アプリケーション３１がフリーズして動作を停止させてしまうような異常が生じた場合に、このような異常を速やかに発見して、表示装置１７に異常動作の発生を知らせる表示を出力させることができる。従って、情報処理装置１を利用する係員は、異常動作の発生に速やかに気付いて、フェールセーフを実現する措置をとることができる。また、キープ・アライブ・モジュール４１１は、ユーザ・アプリケーション３１が動作するゲストパーティション２１と異なる監視パーティション２２で実行される。従って、例えばゲストＯＳ３２の異常に起因してユーザ・アプリケーション３１が停止してしまうような場合でも、ゲストＯＳ３２の異常がキープ・アライブ・モジュール４１１に波及することがない。従って、高い信頼性を持ってユーザ・アプリケーション３１の動作確認を遂行できる。
【００５４】
以上、本発明の各実施の形態について説明したが、本発明は上記の実施の形態に限られるものではない。例えば、上記実施形態では、監視ソフトウェア４１は、ユーザ・アプリケーション３１の動作異常が確認された場合に、報知モジュール４１２によって情報処理装置１の使用者に異常を報知する構成を例にとって説明した。しかし、監視ソフトウェア４１に、フェールセーフを実現するための処理を行う機能モジュールを設け、監視ソフトウェア４１は、動作異常が確認された場合に、上記の機能モジュールを駆動する構成を採用してもよい。また、上記実施形態では、ユーザ・アプリケーション３１に含まれる関数を照合対象の処理の一例として示したが、関数の形式に限られず、ユーザ・アプリケーション３１中の一連の処理ステップを照合対象の処理として指定する構成が採用されてもよい。また、上記実施の形態では、ユーザ・アプリケーション３１の照合対象の処理と、演算照合モジュール４１５が実行する照合用処理とが異なるアルゴリズムを有すると説明した。しかし、これらは同一のアルゴリズムを有する構成としてもよい。また、仮想化部は、ハイパーバイザー型であっても、ホストＯＳ型であってもよい。その他、実施の形態で示した細部は、発明の趣旨を逸脱しない範囲で適宜変更可能である。
【符号の説明】
【００５５】
１  情報処理装置
１１  ＣＰＵ
１２  不揮発性メモリ
１３  仮想化ＯＳプログラム
１４  仮想マシン記憶部
１５  監視パーティション記憶部
１６  メモリ
１７  表示装置
１８  タッチパネル
１９  通信装置
２１  ゲストパーティション（第１論理パーティション）
２２  監視パーティション（第２論理パーティション）
２３  システムパーティション
２５  ハードウェア・リソース
３１  ユーザ・アプリケーション
３２  ゲストＯＳ
３３  仮想マシン
３２ａ  ゲストＯＳプログラム
４１  監視ソフトウェア
４２  高信頼型アプリケーション・インタフェース
５１  サービス・ソフトウェア
５２  仮想化部インタフェース
４１１  キープ・アライブ・モジュール（動作確認モジュール）
４１２  報知モジュール
４１３  診断モジュール
４１４  ロギングモジュール
４１５  演算照合モジュール
４１５ａ  演算プログラム格納部
４１６  状態監視モジュール
【図１】
2018160197.tif 000003
【図２】
2018160197.tif 000004
【図３】
2018160197.tif 000005
【図４】
2018160197.tif 000006
【図５】
2018160197.tif 000007
【図６】
2018160197.tif 000008
【図７】
2018160197.tif 000009
【図８】
2018160197.tif 000010
【図９】
2018160197.tif 000011