(57)【要約】【課題】障害が発生した場合でも、電源の再投入をすることなく正常動作に復帰可能な情報処理装置、情報処理プログラムを提供する。【解決手段】予め定められた処理をプログラムに基づいて実行する第１の処理実行手段と、前記第１の処理実行手段の動作状態を取得する動作状態取得機能、及び前記動作状態が前記第１の処理実行手段の障害時を表している場合に前記第１の処理実行手段から処理の実行権を取得し、当該第１の処理実行手段に代わって前記プログラムが有する機能を有するプログラムに基づいて処理を実行する実行権取得機能を有する第２の処理実行手段と、を有する。【選択図】図４
2010102441.tif 000002
【特許請求の範囲】
【請求項１】
予め定められた処理をプログラムに基づいて実行する第１の処理実行手段と、
前記第１の処理実行手段の動作状態を取得する動作状態取得機能、及び前記動作状態が前記第１の処理実行手段の障害時を表している場合に前記第１の処理実行手段から処理の実行権を取得し、当該第１の処理実行手段に代わって前記プログラムが有する機能を有するプログラムに基づいて処理を実行する実行権取得機能を有する第２の処理実行手段と、
を有する情報処理装置。
【請求項２】
前記第２の処理実行手段は、前記実行権取得機能により実行権を取得した際に、前記第１の処理実行手段による障害が発生しないように前記プログラムを更新する機能を更に有し、更新したプログラムで処理を実行する請求項１に記載の情報処理装置。
【請求項３】
前記第２の処理実行手段は、前記実行権取得機能により実行権を取得した際に、予め定められたハードウェア資源の状態を示すハードウェア資源状態情報を取得するハードウェア資源状態情報取得機能を有し、
前記第２の処理実行手段は、前記実行権取得機能により実行権を取得した際に、前記ハードウェア資源状態情報取得機能より取得したハードウェア資源状態情報に基づき前記更新したプログラムで処理を実行する請求項２に記載の情報処理装置。
【請求項４】
前記第２の処理実行手段は、前記実行権取得機能により実行権を取得した際に、前記第１の処理実行手段による障害が発生した前記プログラムにおける命令を特定する特定機能を有し、前記特定機能により特定された命令を含む命令群が実行中の状態を取得するように前記プログラムを更新する機能を更に有し、更新したプログラムで処理を実行する請求項３に記載の情報処理装置。
【請求項５】
前記第２の処理実行手段は、前記実行権取得機能により実行権を取得した際に、前記第１の処理実行手段の障害が発生しないように前記プログラムを更新する機能を更に有し、更新したプログラムで前記第１の処理実行手段に処理を実行するように、前記第１の処理実行手段に実行権を割り当てる請求項１に記載の情報処理装置。
【請求項６】
前記第２の処理実行手段は、前記実行権取得機能により実行権を取得した際に、予め定められたハードウェア資源の状態を示すハードウェア資源状態情報を取得するハードウェア資源状態情報取得機能を有し、
前記第１の処理実行手段は、前記第２の処理実行手段により実行権が割り当てられた際に、前記第２の処理実行手段により取得されたハードウェア資源状態情報を取得して前記更新したプログラムで処理を実行する請求項５に記載の情報処理装置。
【請求項７】
前記第２の処理実行手段は、前記実行権取得機能により実行権を取得した際に、前記第１の処理実行手段による障害が発生した前記プログラムにおける命令を特定する特定機能を有し、前記特定機能により特定された命令を含む命令群が実行中の状態を取得するように前記プログラムを更新する機能を更に有し、更新したプログラムで前記第１の処理実行手段に処理を実行するように、前記第１の処理実行手段に実行権を割り当てる請求項６に記載の情報処理装置。
【請求項８】
コンピュータを、
予め定められた処理をプログラムに基づいて実行する第１の処理実行手段と、
前記第１の処理実行手段の動作状態を取得する動作状態取得機能、及び前記動作状態が前記第１の処理実行手段の障害時を表している場合に前記第１の処理実行手段から処理の実行権を取得し、当該第１の処理実行手段に代わって前記プログラムが有する機能を有するプログラムに基づいて処理を実行する実行権取得機能を有する第２の処理実行手段と、
として機能させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理プログラムに関する。
【背景技術】
【０００２】
近年のＣＰＵ（Central Processing Unit）の高機能化とＯＳ（Operating System）技術の発展により、一つの物理的なハードウェアをあたかも複数あるように見せかける仮想化技術が実用的になってきている。
【０００３】
更に、近年では、一つのＣＰＵに複数のコアを持つＣＰＵの登場により、仮想化技術で効率的に使う需要が増えている。例えば、一台の高機能サーバ上で複数のＯＳを仮想的に実行することで、利用者にはあたかも専用のサーバを提供しているようにするなど、ハードウェアリソースを効率的に利用するために使われる。
【０００４】
また、組み込みシステムでも、複数のコアを持つＣＰＵ対応の組み込み機器向けのＯＳが提供されていることから、今後少ないハードウェアリソース上で多くの機能を提供し、かつそれぞれの機能の安定性を高めるためにこういった仮想化技術が求められると思われる。
【０００５】
このような技術背景において、特許文献１には、障害が発生した時点で、別のＯＳを自動的にロードし再起動することで安全なリカバリを図る技術が開示されている。また、特許文献２には、プロセッサとＯＳを二重化することで、片方のプロセッサに異常が発生しても、正常なプロセッサが動作することで、上位のアプリケーションに影響を与えない技術が開示されている。
【０００６】
更に特許文献３には、通常ＯＳとリカバリ用ＯＳをフラッシュＲＯＭなどに保持しておき、通常ＯＳが正常終了しなかった場合にリカバリＯＳから起動する技術が開示されている。
【特許文献１】特開平７−２８６３２号公報
【特許文献２】特開平６−２３０９９５号公報
【特許文献３】特開２００４−２２７１４３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、障害が発生した場合でも、電源の再投入をすることなく正常動作に復帰可能な情報処理装置、情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、請求項１の発明は、予め定められた処理をプログラムに基づいて実行する第１の処理実行手段と、前記第１の処理実行手段の動作状態を取得する動作状態取得機能、及び前記動作状態が前記第１の処理実行手段の障害時を表している場合に前記第１の処理実行手段から処理の実行権を取得し、当該第１の処理実行手段に代わって前記プログラムが有する機能を有するプログラムに基づいて処理を実行する実行権取得機能を有する第２の処理実行手段と、を有する。
【０００９】
また、請求項２の発明は、請求項１の発明において、前記第２の処理実行手段は、前記実行権取得機能により実行権を取得した際に、前記第１の処理実行手段による障害が発生しないように前記プログラムを更新する機能を更に有し、更新したプログラムで処理を実行する。
【００１０】
また、請求項３の発明は、請求項２の発明において、前記第２の処理実行手段は、前記実行権取得機能により実行権を取得した際に、予め定められたハードウェア資源の状態を示すハードウェア資源状態情報を取得するハードウェア資源状態情報取得機能を有し、前記第２の処理実行手段は、前記実行権取得機能により実行権を取得した際に、前記ハードウェア資源状態情報取得機能より取得したハードウェア資源状態情報に基づき前記更新したプログラムで処理を実行する。
【００１１】
また、請求項４の発明は、請求項３の発明において、前記第２の処理実行手段は、前記実行権取得機能により実行権を取得した際に、前記第１の処理実行手段による障害が発生した前記プログラムにおける命令を特定する特定機能を有し、前記特定機能により特定された命令を含む命令群が実行中の状態を取得するように前記プログラムを更新する機能を更に有し、更新したプログラムで処理を実行する。
【００１２】
また、請求項５の発明は、請求項１の発明において、前記第２の処理実行手段は、前記実行権取得機能により実行権を取得した際に、前記第１の処理実行手段の障害が発生しないように前記プログラムを更新する機能を更に有し、更新したプログラムで前記第１の処理実行手段に処理を実行するように、前記第１の処理実行手段に実行権を割り当てる。
【００１３】
また、請求項６の発明は、請求項５の発明において、前記第２の処理実行手段は、前記実行権取得機能により実行権を取得した際に、予め定められたハードウェア資源の状態を示すハードウェア資源状態情報を取得するハードウェア資源状態情報取得機能を有し、前記第１の処理実行手段は、前記第２の処理実行手段により実行権が割り当てられた際に、前記第２の処理実行手段により取得されたハードウェア資源状態情報を取得して前記更新したプログラムで処理を実行する。
【００１４】
また、請求項７の発明は、請求項６の発明において、前記第２の処理実行手段は、前記実行権取得機能により実行権を取得した際に、前記第１の処理実行手段による障害が発生した前記プログラムにおける命令を特定する特定機能を有し、前記特定機能により特定された命令を含む命令群が実行中の状態を取得するように前記プログラムを更新する機能を更に有し、更新したプログラムで前記第１の処理実行手段に処理を実行するように、前記第１の処理実行手段に実行権を割り当てる。
【００１５】
上記目的を達成するために、請求項８の発明は、コンピュータを、予め定められた処理をプログラムに基づいて実行する第１の処理実行手段と、前記第１の処理実行手段の動作状態を取得する動作状態取得機能、及び前記動作状態が前記第１の処理実行手段の障害時を表している場合に前記第１の処理実行手段から処理の実行権を取得し、当該第１の処理実行手段に代わって前記プログラムが有する機能を有するプログラムに基づいて処理を実行する実行権取得機能を有する第２の処理実行手段と、として機能させるための情報処理プログラムである。
【発明の効果】
【００１６】
請求項１及び請求項８記載の発明によれば、障害が発生した場合でも、電源の再投入をすることなく正常動作に復帰することができる、という効果が得られる。これにより、起動までに時間を要する再起動と比較して、より短時間に復旧可能となる。
【００１７】
また、請求項２及び請求項５記載の発明によれば、本発明を適用しない場合に比較して、障害が発生する機能を制限することで情報処理装置としてのダウンタイムを低減することができる。
【００１８】
また、請求項３及び請求項６記載の発明によれば、本発明を適用しない場合に比較して、より確実に障害により中断されていた処理を継続することができる。また、ここでのハードウェア資源として、実行中のプログラムが用いる記憶装置に記憶された情報を更に記憶することで、障害時のより詳細な情報を取得することができる。
【００１９】
また、請求項４及び請求項７記載の発明によれば、本発明を適用しない場合に比較して、障害を発生した命令を含む命令群が実行中の状態を取得することで、より詳細な情報処理装置の状態を取得することができる。
【発明を実施するための最良の形態】
【００２０】
以下、図面を参照して、本発明の実施の形態について詳細に説明する。なお、本実施の形態では、情報処理装置を画像形成装置に適用した例について説明する。
【００２１】
図１は、画像形成装置１０のハードウェア構成を示している。画像形成装置１０は、ＣＰＵ（Central Processing Unit）４０と、フラッシュメモリ４２と、ＲＡＭ（Random Access Memory）４４と、ＮＶＭ（Non-Volatile Memory）４６と、ＵＩ（User Interface）４８と、ＨＤＤ（Hard Disk Drive）５０と、プリンタエンジン５２と、スキャナエンジン５４と、通信Ｉ／Ｆ（インタフェース）５６と、バス６０とを含む。
【００２２】
ＣＰＵ４０は、画像形成装置１０の全体の動作を司るものであり、後述するフローチャートに示される処理は、ＣＰＵ４０により実行される。フラッシュメモリ４２は、ＲＡＭ４４に展開されるプログラム及び起動する際に動作するブートプログラム等が記憶されている。
【００２３】
ＲＡＭ４４は、ＯＳ（Operating System）や情報処理プログラムや画像情報等が展開される記憶装置である。ＮＶＭ４６には、画像形成装置１０に係る設定値等が記憶される。ＵＩ４８は、利用者が画像形成装置１０の操作や情報を入力する際に用いられるものである。ＨＤＤ５０は、画像情報等が記録される記憶装置である。
【００２４】
プリンタエンジン５２は、紙等の記録媒体に画像を印刷するエンジンである。スキャナエンジン５４は、原稿に描かれた画像を読み取るとともに、読み取られた画像を示す画像情報を生成する。
【００２５】
通信Ｉ／Ｆ５６は、ネットワークに接続するためのＮＩＣ（Network Interface Card）やそのドライバ、或いはＵＳＢデバイス等を含んで構成される。バス６０は、情報のやりとりが行われる際に使用される。
【００２６】
なお、以上説明した構成に、電話回線と接続するためのインタフェースや、画像処理に関するものを加えるようにしても良い。
【００２７】
次に、図２を用いて、本実施の形態に係るＯＳについて説明する。同図に示されるように、本実施の形態では、ハードウェア上でハイパーバイザＯＳ（以下、ＨＶ−ＯＳと表現することがある）が稼働し、このＨＶ−ＯＳ上で２つのＯＳ（ＯＳ−Ａ、ＯＳ−Ｂ）が稼働する。以下の説明において、単にＯＳと記したときは、ＯＳ−Ａ、ＯＳ−Ｂを示すこととする。このＯＳ上でコピー等を実行させるためのアプリケーションが稼働するようになっている。
【００２８】
上記２つのＯＳは、お互いに独立に動作することができる。また、一方のＯＳが何らかの理由で正常に動作しなくなった場合でも、ハードウェアとＨＶ−ＯＳが正常であれば、他方のＯＳと、そのＯＳ上で動作するアプリケーションは影響を受けることなく動作することができる。
【００２９】
本実施の形態において、予め定められた処理をプログラムに基づいて実行する第１の処理実行手段がＯＳ−Ａに対応する。またＯＳ−Ａの動作状態を取得する動作状態取得機能、及び動作状態がＯＳ−Ａの障害時を表している場合にＯＳ−Ａから処理の実行権を取得し、ＯＳ−Ａに代わってプログラムが有する機能を有するプログラムに基づいて処理を実行する実行権取得機能を有する第２の処理実行手段がＯＳ−Ｂに対応する。ここでのプログラムとは、ＯＳを動作させるためのプログラムであり、予め定められた処理とはＯＳとしての処理である。
【００３０】
このように、本実施の形態では、ＨＶ−ＯＳの仮想化技術（Virtualization)を利用し、１つのＣＰＵ４０上に正常時に稼働するＯＳ−Ａと、障害検知・リカバリを行うＯＳ−Ｂの両方を常駐させる。障害が発生していない状態では、ＯＳ−Ａの動作が優先されるので、ＣＰＵ４０使用割合を、ＯＳ−Ａが９５％、ＯＳ−Ｂが５％などとするようにしても良い。
【００３１】
次に、図３を用いて、画像形成装置１０起動直後から、障害が発生し、リカバリするまでの概要について説明する。
【００３２】
まず、本実施の形態において検知する障害には、ソフトウェアによる例外、不正なメモリアクセス、タスクのスタックオバーフロー・アンダーフロー、ＯＳ−Ａ側のカーネル障害による突然リブート、特定の割り込みが処理されない・発生しないこと、特定のタスクが動作しないデッドロック状態が挙げられるが、もちろんこれに限るものではない。
【００３３】
図３は、ＯＳの状態と、その時のＲＡＭ４４上のメモリマップを示している。まず、画像形成装置１０の起動直後は、ＯＳ−Ａのみが起動する。このとき、メモリには、予め定められた処理を実行するためのテキストコードと、静的なデータＸと、動的なデータＹとが展開される。静的なデータとは、ＯＳが動作する際に必要な予め確保されているデータであり、動的なデータとはＯＳが動作する際にその動作に伴って確保、開放されるデータである。
【００３４】
ＯＳ−Ａが起動すると、次にＯＳ−Ｂが起動する。このとき、上述した静的なデータＸと、動的なデータＹとが、ＯＳ−Ｂのメモリ領域にそのままコピーされる。更に、ＯＳ−ＢがＯＳ−Ａの状態を監視するための監視用データ領域が確保される。ＯＳ−Ｂは稼働すると、ＯＳ−Ａを監視する。このときＯＳ−Ｂ上のアプリケーションは停止している。
【００３５】
次に、ＯＳ−Ａに障害が発生し、それをＯＳ−Ｂが検知すると、ＯＳ−Ａの静的なデータ及び動的なデータは、何らかの異常を含む可能性のあるデータとなる。
【００３６】
そして、ＯＳ−ＢがＯＳ−Ａを停止させることで処理の実行権を取得し、静的なデータと動的なデータ、プログラム等をリカバリして、ＯＳ−Ａに代わってＯＳとしての処理を実行して稼働を開始すると、ＯＳ−Ｂ上のアプリケーションも稼働する。このように本実施の形態では、ＯＳが切り替わるので、リセットのように電源の再投入は行なわれない。
【００３７】
次に、図４のフローチャートを用いて、本実施の形態に係る情報処理プログラムの処理の流れについて説明する。この図４に示される処理は、ＯＳ−Ｂによる処理を示すものであり、ＣＰＵ４０により実行される。
【００３８】
まず、ステップ１０１で障害を検知すると、ステップ１０２でＯＳ−Ａを停止する。そして、ステップ１０３で、障害原因となったタスクの状態を記憶して、ステップ１０７に進む。ここでの状態とは、タスクが使用していたＲＡＭ４４におけるメモリの内容をいう。
【００３９】
一方、ステップ１０１で障害を検知しない場合には、ステップ１０４でデッドロック状態を検知したか否か判定し、検知していない場合にはステップ１０１の処理に戻り、検知した場合には、ステップ１０５でＯＳ−Ａを停止し、ステップ１０６でデッドロック状態となったタスクの状態を記憶してステップ１０７に進む。ここでの状態も、タスクが使用していたＲＡＭ４４におけるメモリの内容をいう。なお、後に説明するステップ１０７も、ＲＡＭ４４以外のハードウェアの資源状態が取得される。
【００４０】
上述したステップ１０３、１０６では、障害発生要因、障害発生となるプログラムにおける命令の調査も行なわれるが、これについての詳細は後述する。このように、ＯＳ−Ｂは、ＯＳ−Ａによる障害が発生した前記プログラムにおける命令を特定する機能を有する。
【００４１】
次のステップ１０７で、予め定められたハードウェア資源の状態を示すハードウェア資源状態情報を取得する。予め定められたハードウェア資源とは、上述したＲＡＭ４４の他に、プリンタエンジン５２やスキャナエンジン５４の状態を意味し、その状態として、例えばスキャナエンジン５４であれば、現在原稿を読み取った状態が挙げられる。
【００４２】
そして、ステップ１０８で、障害が発生した原因を調査するための情報を得るために、プログラムに情報採取用のパッチを当てる。このパッチとは、ステップ１０３、１０６で調査された障害発生箇所に到達する周辺の関数（命令群）の前後で引数、到達したタスクのスタックなどの情報を採取するプログラムである。このように、ＯＳ−Ｂは、ステップ１０３、１０６により特定された命令を含む命令群が実行中の状態を取得するようにプログラムを更新する。
【００４３】
次のステップ１０９で、原因となったタスクである原因タスクによる障害は２回目か否か判定する。ステップ１０９で否定判定した場合には、ステップ１１１に進み、肯定判定した場合には、ステップ１１０で原因タスク停止指示、すなわち原因タスクを動作させないことで、障害が発生しないようにプログラムを更新し、ステップ１１１に進む。
【００４４】
このように、ＯＳ−Ｂは、障害が発生しないようにプログラムを更新する機能を更に有し、更新したプログラムで処理を実行する。
【００４５】
ステップ１１１で、ＯＳ−Ｂは稼働を開始し、それに伴って、ステップ１１２で外部コントローラへ復帰を指示する。この外部コントローラとは、例えばスキャナエンジン５４のコントローラなど、周辺デバイスのコントローラを示している。
【００４６】
このとき、ステップ１０７により取得したハードウェア資源状態に基づき更新したプログラムで処理を実行する。
【００４７】
これにより画像形成装置１０全体が稼働するが、ステップ１１３で、原因タスクによる処理がタスクのスイッチングにより開始される場合には、ステップ１１４で上述したパッチにより再び障害が発生する可能性がある原因タスクの状態を予め採取するようになっている。
【００４８】
上記ステップ１０３、１０６における障害発生要因、障害発生箇所の調査について説明する。まず障害発生要因は、動作していたタスクの情報はＲＡＭ４４上で管理されているため、それらを調べることで最後に動作していたタスク(すなわち障害を引き起こしたタスク)を特定することで得られる。より具体的には、ＲＡＭ４４上で管理されているタスクの状態、メッセージキューの状態、セマフォの状態、タイマーの状態などから原因タスクを特定する。
【００４９】
また、障害発生箇所は、障害が発生した命令箇所はＣＰＵ４０のプログラムカウンタ、リンクレジスタ (カウンタレジスタ)、スタックポインタ、スタックトレース、及び割り込み状況から容易に判別ができる。
【００５０】
以上説明したフローチャートは、ＯＳ−ＢがＯＳ−Ａに代わって動作するものであったが、ＯＳ−Ｂがプログラム等の更新をした後に、そのプログラムでＯＳ−Ａに実行権を割り当てるようにしても良い。
【００５１】
図５には、ＯＳ−Ａに実行権を割り当てる場合の処理の流れを示すフローチャートが示されている。まず、ステップ２０１で、上記ステップ１０１〜ステップ１１０までの処理を実行し、ステップ２０２で、リカバリしたＯＳ−Ｂのメモリ、プログラムによりＯＳ−Ａを再稼働する。このようにすることで、図４に示したステップ１１２以降の処理は、ＯＳ−Ａにより実行される。
【００５２】
従って、ＯＳ−Ｂは、ＯＳ−Ａの障害が発生しないようにプログラムを更新する機能を更に有し、更新したプログラムでＯＳ−Ａに処理を実行するように、ＯＳ−Ａに実行権を割り当てることとなる。
【００５３】
また、ＯＳ−Ｂは、予め定められたハードウェア資源の状態を示すハードウェア資源状態情報を取得し、ＯＳ−Ａは、ＯＳ−Ｂにより実行権が割り当てられた際に、取得されたハードウェア資源状態情報を取得して更新したプログラムで処理を実行することとなる。
【００５４】
更に、ＯＳ−Ｂは、ＯＳ−Ａによる障害が発生したプログラムにおける命令を特定する特定機能を有し、特定された命令を含む命令群が実行中の状態を取得するようにプログラムを更新する機能を更に有し、更新したプログラムでＯＳ−Ａに処理を実行するように、ＯＳ−Ａに実行権を割り当てることとなる。
【００５５】
なお、以上説明したフローチャートの処理の流れは一例であり、本発明の主旨を逸脱しない範囲内で処理順序を入れ替えたり、新たなステップを追加したり、不要なステップを削除したりすることができることは言うまでもない。
【図面の簡単な説明】
【００５６】
【図１】画像形成装置のハードウェア構成を示す図である。
【図２】実施の形態に係るＯＳについての説明図である。
【図３】画像形成装置起動直後から、障害が発生し、リカバリするまでの概要を示す図である。
【図４】情報処理プログラムの処理の流れを示すフローチャートである（その１）。
【図５】情報処理プログラムの処理の流れを示すフローチャートである（その２）。
【符号の説明】
【００５７】
１０  画像形成装置
４２  フラッシュメモリ
４４  ＲＡＭ
４６  ＮＶＭ
５０  ＨＤＤ
５２  プリンタエンジン
５４  スキャナエンジン
【図１】
2010102441.tif 000003
【図２】
2010102441.tif 000004
【図３】
2010102441.tif 000005
【図４】
2010102441.tif 000006
【図５】
2010102441.tif 000007