(57)【特許請求の範囲】
【請求項１】
複数のプログラムを実行するプログラム実行部と、
前記プログラム実行部による前記複数のプログラムの実行中に前記複数のプログラムのうちのいずれかのプログラムに異常が発生した場合に、前記複数のプログラム以外の特定のプログラムが動作中であるか否かを判定し、前記特定のプログラムが動作中である場合に、前記複数のプログラムのうち、異常が発生した異常発生プログラム処理の結果を利用して前記特定のプログラムの処理に利用される処理が行われるプログラムを優先再起動プログラムとして抽出し、抽出した優先再起動プログラムを前記異常発生プログラム以外のプログラムに優先して再起動するプログラム再起動部と
を備えることを特徴とする情報処理装置。
【請求項２】
前記プログラム再起動部は、
前記優先再起動プログラムを、前記複数のプログラムのうち、異常が発生した異常発生プログラムの処理の結果を利用するが前記特定のプログラムの処理に利用される処理が行われないプログラムに優先して再起動することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記情報処理装置は、更に、
継続して動作することが要求される動作必須プログラムが前記特定のプログラムとして定義されている動作必須プログラム情報を記憶する動作必須プログラム情報記憶部を備え、
前記プログラム再起動部は、
前記動作必須プログラムが動作中であるか否かを判定し、前記動作必須プログラムが動作中である場合に、前記複数のプログラムのうち、異常が発生した異常発生プログラムの処理の結果を利用して前記動作必須プログラムの処理に利用される処理が行われるプログラムを、前記優先再起動プログラムとして抽出することを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記情報処理装置は、更に、
前記特定のプログラムの処理に利用される処理が行われるプログラムがそれぞれ被利用プログラムとして示され、更に、被利用プログラム間の実行順序が示される被利用プログラム情報を記憶する被利用プログラム情報記憶部を備え、
前記プログラム再起動部は、
２つ以上の被利用プログラムを優先再起動プログラムとして抽出した場合に、優先再起動プログラムとして抽出した被利用プログラムのそれぞれを、前記被利用プログラム情報に示される順序で再起動することを特徴とする請求項１〜３いずれか記載の情報処理装置。
【請求項５】
前記情報処理装置は、更に、
前記プログラム実行部に代わって前記複数のプログラムを実行することができるプログラム代替実行部を備え、
前記プログラム再起動部は、
前記異常発生プログラムと前記優先再起動プログラムとの再起動に必要な再起動時間と、前記プログラム代替実行部が所定の実行開始手順にて前記複数のプログラムの実行を開始するのに必要なプログラム代替実行開始時間とを比較し、前記再起動時間が前記プログラム代替実行開始時間未満であれば、前記優先再起動プログラムの再起動を行い、前記再起動時間が前記プログラム代替実行開始時間以上であれば、前記プログラム代替実行部に前記複数のプログラムの実行を開始させることを特徴とする請求項１〜４いずれか記載の情報処理装置。
【請求項６】
コンピュータが、複数のプログラムを実行するプログラム実行ステップと、
前記プログラム実行ステップによる前記複数のプログラムの実行中に前記複数のプログラムのうちのいずれかのプログラムに異常が発生した場合に、前記コンピュータが、前記複数のプログラム以外の特定のプログラムが動作中であるか否かを判定し、前記特定のプログラムが動作中である場合に、前記複数のプログラムのうち、異常が発生した異常発生プログラム処理の結果を利用して前記特定のプログラムの処理に利用される処理が行われるプログラムを優先再起動プログラムとして抽出し、抽出した優先再起動プログラムを前記異常発生プログラム以外のプログラムに優先して再起動するプログラム再起動ステップと
を備えることを特徴とする情報処理方法。
【請求項７】
複数のプログラムを実行するプログラム実行ステップと、
前記プログラム実行ステップによる前記複数のプログラムの実行中に前記複数のプログラムのうちのいずれかのプログラムに異常が発生した場合に、前記複数のプログラム以外の特定のプログラムが動作中であるか否かを判定し、前記特定のプログラムが動作中である場合に、前記複数のプログラムのうち、異常が発生した異常発生プログラム処理の結果を利用して前記特定のプログラムの処理に利用される処理が行われるプログラムを優先再起動プログラムとして抽出し、抽出した優先再起動プログラムを前記異常発生プログラム以外のプログラムに優先して再起動するプログラム再起動ステップと
をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、実行中プログラムの障害発生時に復旧を行う情報処理装置および情報処理方法およびプログラムに関する。
【背景技術】
【０００２】
従来、情報処理装置が実行中のドライバプログラム（以降、ドライバプログラムを「ドライバ」と称する）の障害が発生した場合（以降、障害を「異常」とも称する）、障害が発生したドライバが記録される。そして、次回の情報処理装置のシステム起動時に当該ドライバの起動がスキップされる技術が提案されている（例えば、特許文献１）。
また、情報処理装置が実行中のドライバの障害が発生した場合、情報処理装置の動作を停止することなく、障害が発生したドライバと当該ドライバの処理結果を利用するドライバとを、あらかじめ準備され、かつ、固定された順序で復旧する技術が知られている。
ここで、ドライバの復旧とは、ドライバを再起動させるなどして、障害が発生しているドライバや当該ドライバの処理結果を利用するドライバ、または、当該ドライバの障害の影響を受けているドライバを正常な状態に戻すことである。よって、「復旧」を「再起動」とも称する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−２５３３３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
情報処理装置は、障害が発生したドライバの処理データを用いるドライバや、それらのドライバの処理データを用いて処理を行うアプリケーションプログラム（以降、アプリケーションプログラムを「アプリケーション」と称する）など複数のプログラムを実行する。そして、従来の障害復旧方法では、動作継続の優先されるアプリケーションがある場合でも、アプリケーションの動作継続の優先度は考慮されず、ドライバの再起動順が決定される。そのため、動作継続の優先度が高いアプリケーションである動作必須アプリケーションが利用するドライバの再起動が後回しになる場合がある。そして、動作必須アプリケーションが利用するドライバが再起動するまで、動作必須アプリケーションの動作が中断するという課題がある。
【０００５】
この発明は前記のような課題を解決することを主な目的とするもので、例えば、動作必須アプリケーションの動作継続を優先させることを主な目的とする。
【課題を解決するための手段】
【０００６】
この発明に係る情報処理装置は、
複数のプログラムを実行するプログラム実行部と、
前記プログラム実行部による前記複数のプログラムの実行中に前記複数のプログラムのうちのいずれかのプログラムに異常が発生した場合に、前記複数のプログラムのうち、異常が発生した異常発生プログラムの処理の結果を利用して前記複数のプログラム以外の特定のプログラムの処理に利用される処理が行われるプログラムを優先再起動プログラムとして抽出し、抽出した優先再起動プログラムを前記異常発生プログラム以外のプログラムに優先して再起動するプログラム再起動部と
を備えることを特徴とする。
【発明の効果】
【０００７】
この発明に係る情報処理装置は、特定のプログラム（例えば、動作必須アプリケーション）により利用されるプログラムを優先して再起動（復旧）する。その為、この発明に係る情報処理装置は、特定のプログラム（例えば、動作必須アプリケーション）の動作継続を優先させることが可能である。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１を示す図で、情報処理装置のハードウェア資源の一例を示す図。
【図２】実施の形態１を示す図で、情報処理装置の構成の第１の例を示す図。
【図３】実施の形態１を示す図で、情報処理装置の構成の第２の例を示す図。
【図４】実施の形態１を示す図で、情報処理装置の構成の第３の例を示す図。
【図５】実施の形態１を示す図で、プログラム起動管理リストの第１の例を示す図。
【図６】実施の形態１を示す図で、アプリケーション−プログラム関連性リストの例を示す図。
【図７】実施の形態１を示す図で、情報処理装置の処理の例を示すフローチャート。
【図８】実施の形態１を示す図で、プログラム起動管理リストの第２の例を示す図。
【図９】実施の形態２を示す図で、情報処理装置の構成の第４の例を示す図。
【図１０】実施の形態２を示す図で、情報処理装置の構成の第５の例を示す図。
【図１１】実施の形態２を示す図で、情報処理装置の構成の第６の例を示す図。
【図１２】実施の形態２を示す図で、プログラム起動管理リストの第３の例を示す図。
【図１３】実施の形態２を示す図で、情報処理装置の処理の例を示すフローチャート。
【発明を実施するための形態】
【０００９】
実施の形態１．
最初に、実施の形態１に示す情報処理装置１００のハードウェア構成例について説明する。
図１は、実施の形態１に示す情報処理装置１００のハードウェア資源の一例を示す図である。
なお、図１の構成は、あくまでも情報処理装置１００のハードウェア構成の一例を示すものであり、情報処理装置１００のハードウェア構成は図１に記載の構成に限らず、例えば後述するような他の構成であってもよい。
【００１０】
図１において、情報処理装置１００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。
ＣＰＵ９１１は、バス９１２を介して、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。
更に、ＣＰＵ９１１は、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）と接続していてもよい。また、磁気ディスク装置９２０の代わりに、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク装置、メモリカード（登録商標）読み書き装置、Ｆｌａｓｈ  ＲＯＭ、ＲＯＭ９１３以外のＲＯＭなどの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
通信ボード９１５、キーボード９０２、スキャナ装置９０７、マウス９０３、ＦＤＤ９０４などは、入力装置の一例である。
また、通信ボード９１５、表示装置９０１、プリンタ装置９０６などは、出力装置の一例である。
【００１１】
通信ボード９１５は、ネットワークに接続されている。
例えば、ネットワークは、ＬＡＮ、インターネットの他、ＷＡＮ（ワイドエリアネットワーク）、ＳＡＮ（ストレージエリアネットワーク）などでも構わない。
【００１２】
磁気ディスク装置９２０には、カーネル９２１、プログラム群９２３、ファイル群９２４が記憶されている。
カーネル９２１は、オペレーティングシステム（ＯＳ）とも称される。
プログラム群９２３のプログラムは、ＣＰＵ９１１がカーネル９２１を利用しながら実行する。
例えば、アプリケーションやドライバは、プログラム群９２３のプログラムの一例である。
また、後述のプログラム起動管理リスト、アプリケーション−プログラム関連性リストは、ファイル群９２４のファイルの一例である。
【００１３】
また、ＲＡＭ９１４には、ＣＰＵ９１１に実行させるカーネル９２１のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、ＲＡＭ９１４には、ＣＰＵ９１１による処理に必要な各種データが格納される。
【００１４】
また、ＲＯＭ９１３には、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）プログラムが格納され、磁気ディスク装置９２０にはブートプログラムが格納されている。
情報処理装置１００の起動時には、ＲＯＭ９１３のＢＩＯＳプログラム及び磁気ディスク装置９２０のブートプログラムが実行され、ＢＩＯＳプログラム及びブートプログラムによりカーネル９２１が起動される。
【００１５】
上記プログラム群９２３には、更に、実施の形態１の説明において「〜部」（「〜記憶部」以外、以下同様）として説明する機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
【００１６】
ファイル群９２４には、実施の形態１の説明において、「〜の判断」、「〜の計算」、「〜の比較」、「〜の照合」、「〜の参照」、「〜の検索」、「〜の抽出」、「〜の検査」、「〜の生成」、「〜の設定」、「〜の登録」、「〜の選択」、「〜の入力」、「〜の受信」、「〜の作成」、「〜の判定」、「〜の定義」、「〜の算出」、「〜の更新」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜リスト」の各項目として記憶されている。
「〜リスト」は、ディスクやメモリなどの記録媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示・制御・判定・識別・検知・判別・選択・算出・導出・更新・作成・取得・通知・指示・判断・復旧などのＣＰＵ９１１の動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示・制御・判定・識別・検知・判別・選択・算出・導出・更新・作成・取得・通知・指示・判断・復旧などのＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態１で説明するフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ等の記録媒体に記録される。
また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００１７】
また、実施の形態１の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、実施の形態１で説明するフローチャートに示すステップ、手順、処理により、本発明に係る情報処理方法を実現することができる。
また、「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。
プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。
すなわち、プログラムは、実施の形態１の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態１の「〜部」の手順や方法をコンピュータに実行させるものである。
【００１８】
このように、実施の形態１に示す情報処理装置１００は、処理装置、記憶装置、入力装置、出力装置を備える情報処理装置である。
そして、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【００１９】
（情報処理装置の構成）
図２は、情報処理装置の構成の第１の例を示す図である。
図３は、情報処理装置の構成の第２の例を示す図である。
図４は、情報処理装置の構成の第３の例を示す図である。
【００２０】
最初に図２を用いて、情報処理装置１００の構成を説明する。
前述の通り、情報処理装置１００は、磁気ディスク装置９２０を備える。そして、磁気ディスク装置９２０はカーネル９２１、アプリケーション１８０、ドライバ１３０を記憶する。
アプリケーション１８０とドライバ１３０とについての数量は限定されない。
本実施の形態の説明においては、ドライバ１３０は、ドライバ１〜５（ドライバ１３０ａ〜１３０ｅ）の５つ、アプリケーション１８０はアプリケーション１（アプリケーション１８０ａ）とアプリケーション２（アプリケーション１８０ｂ）との２つの場合について説明する。
【００２１】
なお、２つのアプリケーション１８０のうち、アプリケーション１８０ｂは情報処理装置１００の処理に必須の動作必須アプリケーションであるとする。
すなわち、動作必須のアプリケーション１８０と動作必須でないアプリケーション１８０とが同じ情報処理装置１００内で実行されている。
ここで、動作必須アプリケーションとは、情報処理装置１００において継続して動作することが要求されるプログラムである。
【００２２】
そして、磁気ディスク装置９２０に記憶されているアプリケーション１８０のプログラム関連性通知機能１９１がＣＰＵ９１１により実行され、ＣＰＵ９１１をプログラム関連性通知部１９０として機能させる。
また図示は省略するが、磁気ディスク装置９２０に記憶されているプログラムがＣＰＵ９１１により実行され、ＣＰＵ９１１を復旧処理管理部１４０、アプリケーション関連性管理部１５０、手段判定部１６０、プログラム起動管理部１７０、プログラム実行部２００として機能させる。
【００２３】
ここで、磁気ディスク装置９２０は、動作必須プログラム情報記憶部と被利用プログラム情報記憶部とに対応する。
また、手段判定部１６０と復旧処理管理部１４０とは、プログラム再起動部に対応する。
【００２４】
図３は、図２に示される情報処理装置１００の構成の例から磁気ディスク装置９２０とプログラム関連性通知部１９０との図示を省略し、ＣＰＵ９１１の図示を追加したものである。
図３は、復旧処理管理部１４０、アプリケーション関連性管理部１５０、手段判定部１６０、プログラム起動管理部１７０、プログラム実行部２００がアプリケーション層で動作していることを示している。すなわち、復旧処理管理部１４０、アプリケーション関連性管理部１５０、手段判定部１６０、プログラム起動管理部１７０、プログラム実行部２００はアプリケーション層で動作してもよい。
【００２５】
一方、図４は、復旧処理管理部１４０、アプリケーション関連性管理部１５０、手段判定部１６０、プログラム起動管理部１７０、プログラム実行部２００がカーネル９２１内にあることを示している。すなわち、復旧処理管理部１４０、アプリケーション関連性管理部１５０、手段判定部１６０、プログラム起動管理部１７０、プログラム実行部２００はカーネル９２１内で動作してもよい。
【００２６】
本実施の形態の説明では、図２に示す情報処理装置１００の構成の例を用いて、説明を進める。
また、本実施の形態ではドライバ１３０に障害が発生し、情報処理装置１００がドライバ１３０の復旧を行う例を説明するが、情報処理装置１００が復旧を行うプログラムおよび障害が発生するプログラムはドライバ１３０に限定されず、例えばアプリケーション１８０であっても良い。
【００２７】
ＣＰＵ９１１は、情報処理装置１００の起動時にカーネル９２１を実行する。
そして、プログラム実行部２００は、カーネル９２１により指定された複数のドライバ１３０を起動し、起動した複数のドライバ１３０を実行する。また、プログラム実行部２００はカーネル９２１により指定されたアプリケーション１８０を起動し、起動したアプリケーション１８０を実行する。
プログラム起動管理部１７０は、情報処理装置１００の起動時に起動されたドライバ１３０に対してプログラム起動管理リスト（後述）を生成する。生成されたプログラム起動管理リストは磁気ディスク装置９２０に記憶される。
プログラム関連性通知部１９０は、アプリケーション１８０の起動時に、当該アプリケーション１８０が使用するプログラム（例えばドライバ１３０）と当該アプリケーション１８０が動作必須アプリケーションで有るか否かをアプリケーション関連性管理部１５０に通知する。
アプリケーション関連性管理部１５０は、プログラム関連性通知部１９０からの通知に基づき、アプリケーション−プログラム関連性リスト５０３（後述）を生成する。生成されたアプリケーション−プログラム関連性リスト５０３は磁気ディスク装置９２０に記憶される。
【００２８】
手段判定部１６０は、動作中の複数のプログラム（例えばドライバ１３０）のうちのいずれかに障害が発生した場合にプログラムを復旧する順番を判定する。
復旧処理管理部１４０は、手段判定部１６０の判定に基づき、プログラム（例えばドライバ１３０）を復旧する。
【００２９】
（プログラム起動管理リストの説明）
図５は、プログラム起動管理リストの第１の例を示す図である。
プログラム起動管理リスト５００は、プログラム（例えばドライバ１３０）が示されるプログラムカラム５０１と、プログラムカラム５０１に示されるプログラムが処理に用いるデータを出力するプログラムが示されるリンクカラム５０２とから構成される。
【００３０】
ここで、例えば、図５のＤ５１のプログラムカラム５０１には、「ドライバ２」が示される。そして、「ドライバ２」は「ドライバ４」の処理の結果を利用して処理を行う。よって、図５のＤ５１のリンクカラム５０２には、「ドライバ２」が処理に用いるデータを出力する「ドライバ４」が示される。
すなわち、プログラム起動管理リスト５００には、ドライバ１３０間の実行順序が示されている。プログラム起動管理リスト５００のプログラムカラム５０１とリンクカラム５０２とには、ドライバ１３０以外に例えばアプリケーション１８０が示されていてもよい。
なお、他のプログラム（ここでは「ドライバ２」）が用いるデータを出力（処理）するプログラム（ここでは「ドライバ４）」）を下位のプログラムと称する。また、他のプログラム（ここでは「ドライバ４」）の出力（処理）したデータを用いて処理を行うプログラム（ここでは「ドライバ２」）を上位のプログラムと称する。
【００３１】
（アプリケーション−プログラム関連性リストの説明）
図６は、アプリケーション−プログラム関連性リストの例を示す図である。
アプリケーション−プログラム関連性リスト５０３は、アプリケーション１８０が示されるアプリケーションカラム５０４と、当該アプリケーション１８０が動作必須アプリケーションであるか否かが示される必須カラム５０５と、当該アプリケーションに使用されるプログラムが示される使用プログラムカラム５０６とから構成される。
図６の例では、「アプリケーション２」が動作必須アプリケーションであることが示されている。
すなわち、アプリケーション−プログラム関連性リスト５０３には、継続して動作することが要求される動作必須アプリケーションが定義されている。
【００３２】
アプリケーション１８０は、使用プログラムカラム５０６に示されるドライバ１３０により処理されたデータが用いられ、処理が行われる。
そして、図６の例では、「アプリケーション２」が「ドライバ１」と「ドライバ２」との処理の結果を利用することが示されている。アプリケーション−プログラム関連性リスト５０３には、例えば「アプリケーション２」が他のアプリケーション１８０の処理の結果を利用することが示されていてもよい。
すなわち、動作必須アプリケーションの処理に利用される処理が行われるプログラムがアプリケーション−プログラム関連性リスト５０３には示されている。
【００３３】
（情報処理装置の起動時の処理の説明）
前述の通り、情報処理装置１００の起動時に、プログラム起動管理部１７０は、起動されたプログラム（例えばドライバ１３０）に対してプログラム起動管理リスト（図５）を生成する。
生成されたプログラム起動管理リストは磁気ディスク装置９２０に記憶される。
【００３４】
そして、プログラム関連性通知部１９０は、アプリケーション１８０の起動時に、当該アプリケーション１８０が使用するプログラム（例えばドライバ１３０）と当該アプリケーション１８０が動作必須アプリケーションで有るか否かをアプリケーション関連性管理部１５０に通知する。
アプリケーション関連性管理部１５０は、プログラム関連性通知部１９０からの通知に基づき、アプリケーション−プログラム関連性リスト５０３（図６）を生成する。
この時、アプリケーション関連性管理部１５０は、ＰＩＤ（Ｐｒｏｃｅｓｓ  ＩＤ）等のアプリケーション１８０を特定する情報をアプリケーション１８０に対応付けてアプリケーション−プログラム関連性リスト５０３に記憶させてもよい。
また、アプリケーション関連性管理部１５０は、アプリケーション１８０を特定する情報をプログラム関連性通知部１９０から通知されてもよい。
生成されたアプリケーション−プログラム関連性リスト５０３は磁気ディスク装置９２０に記憶される。
【００３５】
なお、アプリケーション１８０によってはプログラム関連性通知機能１９１を備えていない場合がある。このようなアプリケーション１８０は、情報処理装置１００の処理の対象外としてもよい。
また、カーネル９２１を実行するＣＰＵ９１１が、プログラム関連性通知機能１９１を備えていないアプリケーション１８０については、動作必須でないアプリケーションとしてアプリケーション関連性管理部１５０に通知してもよい。そして、アプリケーション関連性管理部１５０は、ＣＰＵ９１１からの通知に基づき、プログラム関連性通知機能１９１を備えていないアプリケーション１８０を動作必須アプリケーションではないとしてアプリケーション−プログラム関連性リスト５０３を生成してもよい。
【００３６】
（ドライバ１３０に障害発生時の情報処理装置の処理の説明）
図７は、情報処理装置の処理の例を示すフローチャートである。
ＣＰＵ９１１による複数のドライバ１３０の実行中に、いずれかのプログラム（例えばドライバ１３０）に障害が発生した場合、手段判定部１６０は、障害が発生したプログラムを特定する。障害が発生したプログラムを異常発生プログラムとも称する。ここで例えば、手段判定部１６０は、障害が発生したプログラムを特定する情報を例えばカーネル９２１を実行中のＣＰＵ９１１から受信する。
ここでは、ドライバ１３０ｄ「ドライバ４」（図２）に障害が発生したものとして説明を進める。また、プログラム起動管理リスト５００は図５に示す例を用い、アプリケーション−プログラム関連性リスト５０３は図６に示す例を用いる。
【００３７】
手段判定部１６０は、アプリケーション−プログラム関連性リスト５０３（図６）を参照し、動作必須アプリケーションが有るか否かを判定する（図７のＳ２００）。
ここでは、アプリケーション１８０ｂ「アプリケーション２」が動作必須アプリケーションであるため（Ｓ２００で「ＹＥＳ」）、手段判定部１６０は、ＰＩＤ等の情報に基づき、動作必須アプリケーションが動作中であるか否かを判定する（図７のＳ２０１）。ここでは、動作必須アプリケーションは動作中であるものとする（Ｓ２０１で「ＹＥＳ」）。
【００３８】
また、アプリケーション１８０終了時に、プログラム関連性通知部１９０は、アプリケーション関連性管理部１５０にアプリケーション１８０が終了したことを通知してもよい。そして、アプリケーション関連性管理部１５０は、アプリケーション−プログラム関連性リスト５０３から終了が通知されたアプリケーション１８０を示す情報を削除してもよい。そして、手段判定部１６０は、アプリケーション−プログラム関連性リスト５０３を参照することにより、アプリケーション１８０が動作中か否かを判定してもよい。
【００３９】
なお、動作必須アプリケーションが無い場合（Ｓ２００で「ＮＯ」）もしくは、動作必須アプリケーションが停止中の場合（Ｓ２０１で「ＮＯ」）、復旧処理管理部１４０は、予め磁気ディスク装置９２０に記憶されている復旧順序に従って復旧が必要なプログラムを復旧する（図７のＳ２０６）。ここで、予め設定されている復旧順序に従ってプログラムを復旧することを通常復旧と称する。
【００４０】
次に、手段判定部１６０は、プログラム起動管理リスト５００（図５）を参照し、障害が発生したドライバ１３０ｄ「ドライバ４」の上位のプログラムを特定する（図７のＳ２０２）。
すなわち、手段判定部１６０は、障害が発生したドライバ１３０ｄ「ドライバ４」の処理の結果を利用するプログラムを特定（抽出）する。
ここでは、手段判定部１６０は、ドライバ１３０ｂ「ドライバ２」とドライバ１３０ｃ「ドライバ３」とを特定する。
【００４１】
また、手段判定部１６０は、アプリケーション−プログラム関連性リスト５０３（図６）を参照し、動作必須アプリケーションであるアプリケーション１８０ｂ「アプリケーション２」に使用されるプログラムを特定する（図７のＳ２０３）。
すなわち、手段判定部１６０は、動作必須アプリケーションの処理に利用される処理が行われるプログラムを特定（抽出）する。
ここでは、手段判定部１６０は、ドライバ１３０ａ「ドライバ１」とドライバ１３０ｂ「ドライバ２」とを特定する。
【００４２】
もしくは、手段判定部１６０は、図７のＳ２０２の処理で特定したプログラム（「ドライバ２」と「ドライバ３」）のいずれかが動作必須アプリケーション（「アプリケーション２」）に使用されるか否かをアプリケーション−プログラム関連性リスト５０３を参照して判定する。
【００４３】
すなわち、手段判定部１６０は、障害が発生したドライバ１３０ｄ「ドライバ４」および図７のＳ２０２の処理で特定したプログラム（ドライバ１３０）が動作必須アプリケーションに影響を与えるか否かを判定する（図７のＳ２０４）。
【００４４】
ここで、図７のＳ２０２の処理で特定されたプログラム（「ドライバ２」と「ドライバ３」）のうち「ドライバ２」が動作必須アプリケーション（「アプリケーション２」）に使用される。
すなわち、障害が発生したドライバ１３０ｄ「ドライバ４」の上位のプログラム「ドライバ２」が動作必須アプリケーションに使用され、動作必須アプリケーションは影響を与えられる（Ｓ２０４で「ＹＥＳ」）。従って、手段判定部１６０は、動作必須アプリケーションに使用されるプログラム（ドライバ１３０）を復旧処理管理部１４０により優先的に復旧させると判定する（図７のＳ２０５）。一方、手段判定部１６０は、動作必須アプリケーションに影響なしと判定した場合（Ｓ２０４で「ＮＯ」）、復旧処理管理部１４０に通常復旧させる。
【００４５】
換言すると、手段判定部１６０は、障害が発生したドライバ１３０ｄ「ドライバ４」の処理の結果を利用して、動作必須アプリケーションの処理に利用される処理が行われるプログラムを抽出する。
【００４６】
ここで、復旧処理管理部１４０は、ドライバ１３０ｄ「ドライバ４」、ドライバ１３０ｂ「ドライバ２」、ドライバ１３０ｃ「ドライバ３」の順番で復旧を行う。
すなわち、復旧処理管理部１４０は、最初に障害の発生したドライバ１３０ｄ「ドライバ４」を復旧する。そして、次に、復旧処理管理部１４０は、障害の発生したドライバ１３０の上位のプログラムのうち、動作必須アプリケーションに使用されるドライバ１３０ｂ「ドライバ２」を復旧する。最後に、復旧処理管理部１４０は、障害の発生したドライバ１３０の上位のプログラムのうち、動作必須アプリケーションとは無関係のドライバ１３０ｃ「ドライバ３」を復旧する。
【００４７】
つまり、復旧処理管理部１４０は、手段判定部１６０で抽出されたプログラムを障害の発生したドライバ１３０ｄ「ドライバ４」以外のプログラムに優先して復旧する。
そして、復旧処理管理部１４０は、障害が発生したドライバ１３０ｄ「ドライバ４」の処理の結果を利用するが、動作必須アプリケーションの処理に利用される処理が行われないプログラム「ドライバ３」に優先して「ドライバ２」を復旧する。
ここで、優先して復旧（再起動）されるプログラムを優先再起動プログラムと称する。
【００４８】
前述では、「ドライバ４→ドライバ２→アプリケーション２」のように、障害の発生したドライバ１３０ｄ「ドライバ４」の処理の結果を利用して、動作必須アプリケーション「アプリケーション２」の処理に利用される処理が行うプログラムが１つだけ（「ドライバ２」だけ）の例を説明した。すなわち、手段判定部１６０が優先再起動プログラムとして１つのプログラム（ドライバ１３０）を抽出する例を説明した。
【００４９】
ここでは、手段判定部１６０が２つ以上の優先再起動プログラムを抽出する場合を説明する。
図８は、プログラム起動管理リストの第２の例を示す図である。
プログラム起動管理リスト５００は、図８の例を用い、アプリケーション−プログラム関連性リスト５０３は図６の例を用いて、「ドライバ５」に障害が発生した場合を想定して説明を進める。
【００５０】
図７のＳ２０２において、手段判定部１６０は、プログラム起動管理リスト５００を参照し、「ドライバ５→ドライバ４→ドライバ３」もしくは「ドライバ５→ドライバ４→ドライバ２」の順序でドライバ１３０が実行されることを特定する。そして、手段判定部１６０は、「ドライバ５」の上位プログラムとして「ドライバ４」、「ドライバ３」、「ドライバ２」を特定する。
なお、図７のＳ２００、Ｓ２０１、Ｓ２０３の処理は前述と同様である。
【００５１】
そして、手段判定部１６０は、障害の発生した「ドライバ５」及び図７のＳ２０２の処理で特定したプログラムが動作必須アプリケーションに影響を与えるか否かを判定する（図７のＳ２０４）。
ここでは、手段判定部１６０は、動作必須アプリケーション「アプリケーション２」の使用プログラムが「ドライバ２」であり、手段判定部１６０は、「ドライバ５」と「ドライバ４」と「ドライバ２」とが動作必須アプリケーションに影響を与えると判定する（Ｓ２０４で「ＹＥＳ」）。
【００５２】
すなわち、手段判定部１６０は、優先再起動プログラムとして、「ドライバ４」と「ドライバ２」とを抽出する。
そして、復旧処理管理部１４０は、障害が発生した「ドライバ５」の後に、プログラム起動管理リスト５００に示される順序に基づき、「ドライバ４」を復旧する。そして、復旧処理管理部１４０は、「ドライバ４」の後に、「ドライバ２」を復旧する。
【００５３】
（実施の形態１の効果）
通常復旧においては、ドライバ１３０ｄ「ドライバ４」に障害が発生した場合に、予め設定されている復旧順序、例えば「ドライバ４、ドライバ３、ドライバ２」の順で復旧が行われる。この場合、動作必須アプリケーションに使用される「ドライバ２」の復旧が遅れ、動作必須アプリケーションの復旧も遅れる。
また、通常復旧において、ドライバ１３０ｄ「ドライバ４」に障害が発生した場合に、例えば「ドライバ４」が復旧された後、「ドライバ３」と「ドライバ２」とが同時に復旧される場合もある。この場合、「ドライバ３」と「ドライバ２」とが同時に復旧されることでＣＰＵ９１１の資源が分散し、結果的に「ドライバ２」の復旧が遅れる。
【００５４】
一方、実施の形態１の情報処理装置１００は、動作必須アプリケーションに使用されるプログラム（ドライバ１３０）の復旧を優先する為、動作必須アプリケーションの早期復旧が可能となる。
また、実施の形態１の情報処理装置１００は、プログラム（ドライバ１３０）の復旧順序を予め設定する必要がなくなる。
なお、情報処理装置１００が優先再起動プログラムとして抽出するプログラムは、ドライバ１３０に限定されず、例えば優先再起動プログラムとして抽出されるプログラムがアプリケーション１８０であっても、同様の効果が得られる。また、ドライバ１３０に障害が発生した場合に限定されず、例えば、アプリケーション１８０に障害が発生した場合でも同様の効果が得られる。
【００５５】
実施の形態２．
（情報処理装置の構成）
実施の形態２では、ドライバ１３０の復旧時間に比べて、ＯＳ（カーネル９２１）切り替え時間の方が短い場合に、ＯＳ（カーネル９２１）切り替えて動作必須アプリケーションの動作を継続させる例を示す。
なお、実施の形態２の説明で特に述べない部分については、実施の形態１と同様であり、説明を省略する。
【００５６】
図９は、情報処理装置の構成の第４の例を示す図である。
図１０は、情報処理装置の構成の第５の例を示す図である。
図１１は、情報処理装置の構成の第６の例を示す図である。
実施の形態１に比べて、ＶＭＭ３２０、起動中システム３２１、コールドスタンバイイメージ部３２２が追加されている。なお、情報処理装置１００の他の構成要素については実施の形態１と同様である。
【００５７】
まず、図９を用いて、情報処理装置１００の構成を説明する。
起動中システム３２１は、ＣＰＵ９１１が実行中のプログラム、および、ＣＰＵ９１１が「〜部」として機能中の各部（復旧処理管理部１４０、アプリケーション関連性管理部１５０、手段判定部１６０、プログラム起動管理部１７０、プログラム関連性通知部１９０）である。
ＶＭＭ３２０は、ＣＰＵ９１１に複数のシステム（複数のカーネル９２１）を並列に実行させるプログラムである。
ＶＭＭ３２０がＣＰＵ９１１により実行され、ＣＰＵ９１１を起動中システム３２１と同等の処理を行うコールドスタンバイイメージ部３２２として機能させる。
図示は省略するが、コールドスタンバイイメージ部３２２には、起動中システム３２１に含まれるドライバ１３０やアプリケーション１８０が含まれる。また、コールドスタンバイイメージ部３２２には、起動中システム３２１に含まれるプログラム実行部２００などの各部が含まれる。コールドスタンバイイメージ部３２２に含まれるプログラム実行部２００は、起動中システム３２１に含まれるプログラム実行部２００の代わりにドライバ１３０やアプリケーション１８０を実行する。すなわち、コールドスタンバイイメージ部３２２に含まれるプログラム実行部２００は、プログラム代替実行部に対応する。そして、プログラム代替実行部に対応するプログラム実行部２００を含むコールドスタンバイイメージ部３２２もプログラム代替実行部に対応する。
コールドスタンバイイメージ部３２２は、所定のプログラムに対し、指示があるまでコールドスタンバイ状態で待機する。
【００５８】
図１０は、図９に示される情報処理装置１００の構成の例から磁気ディスク装置９２０とプログラム関連性通知部１９０との図示を省略し、ＣＰＵ９１１の図示を追加したものである。
図１０は、復旧処理管理部１４０、アプリケーション関連性管理部１５０、手段判定部１６０、プログラム起動管理部１７０、プログラム実行部２００がアプリケーション層で動作していることを示している。すなわち、復旧処理管理部１４０、アプリケーション関連性管理部１５０、手段判定部１６０、プログラム起動管理部１７０、プログラム実行部２００はアプリケーション層で動作してもよい。
【００５９】
一方、図１１は、復旧処理管理部１４０、アプリケーション関連性管理部１５０、手段判定部１６０、プログラム起動管理部１７０、プログラム実行部２００がカーネル９２１内にあることを示している。すなわち、復旧処理管理部１４０、アプリケーション関連性管理部１５０、手段判定部１６０、プログラム起動管理部１７０、プログラム実行部２００はカーネル９２１内で動作してもよい。
【００６０】
なお、本実施の形態の説明では、図９に示す情報処理装置１００の構成の例を用いて、説明を進める。
【００６１】
（プログラム起動管理リストの説明）
図１２は、プログラム起動管理リストの第３の例を示す図である。
実施の形態２のプログラム起動管理リスト５００は、実施の形態１に比べ、起動時間カラム５０８が追加されている。
起動時間カラム５０８には、プログラムが復旧に要する時間が示されている。
【００６２】
そして、プログラムカラム５０１には、「ＯＳ切替」の内容が追加されている。
「ＯＳ切替」は、起動中システム３２１からコールドスタンバイイメージ部３２２へシステムが切り替わることを示す。そして、「ＯＳ切替」の起動時間カラム５０８には、システムが切り替わり、必要なドライバ１３０が起動するのに要する時間が示されている。
【００６３】
（情報処理装置の起動時の処理の説明）
ＣＰＵ９１１は、情報処理装置１００の起動時にＶＭＭ３２０を実行する。そして、ＣＰＵ９１１は、ＶＭＭ３２０により指定されたカーネル９２１を実行する。更に、プログラム実行部２００はカーネル９２１により指定されたドライバ１３０とアプリケーション１８０とを実行する。
そして、実施の形態１と同様に、プログラム起動管理部１７０は、起動されたドライバ１３０に対してプログラム起動管理リスト（図１２）を生成する。この時、プログラム起動管理部１７０は、起動時間カラム５０８に各プログラムの起動に要する時間を入力する。
【００６４】
また、コールドスタンバイイメージ部３２２は、プログラム起動管理部１７０は、「ＯＳ切替」の起動時間カラム５０８に所定の時間を入力する。
ここで、「ＯＳ切替」の起動時間カラム５０８に示される時間は、コールドスタンバイイメージ部３２２が、起動中システム３２１によって実行されている複数のプログラム（例えばドライバ１３０）と同じ複数のプログラムを所定の実行開始手順にて実行を開始するのに必要な時間である。この時間は、例えば、プログラム起動管理リスト５００に予め設定されていてもよい。
【００６５】
（ドライバ１３０に障害発生時の情報処理装置の処理の説明）
図１３は、情報処理装置の処理の例を示すフローチャートである。
実施の形態２においても、ドライバ１３０ｄ「ドライバ４」（図９）に障害が発生したものとして説明を進める。また、プログラム起動管理リスト５００は図１２に示す例を用い、アプリケーション−プログラム関連性リスト５０３は図６に示す例を用いる。
実施の形態２も、実施の形態１と同様にドライバ１３０に障害が発生し、情報処理装置１００がドライバ１３０の復旧を行う例を説明するが、情報処理装置１００が復旧を行うプログラムおよび障害が発生するプログラムはドライバ１３０に限定されず、例えばアプリケーション１８０であっても良い。
【００６６】
図１３のＳ５００〜Ｓ５０４及びＳ５０６の処理は、実施の形態１の図７のＳ２００〜Ｓ２０４及びＳ２０６の処理と同様であり、説明を省略する。
ここでは、実施の形態１と同様に、手段判定部１６０は、優先再起動プログラムとして「ドライバ２」を抽出する。
【００６７】
手段判定部１６０は、抽出した優先再起動プログラム「ドライバ２」と障害が発生した「ドライバ４」との復旧に必要な時間である再起動時間を算出する。図１２の例では、手段判定部１６０は、「５ｍｓ＋５ｍｓ＝１０ｍｓ」を算出する。
そして、手段判定部１６０は、再起動時間とプログラム起動管理リスト５００に示される「ＯＳ切替」の起動時間カラム５０８に示される時間（ＯＳ切替時間）とを比較する（図１３のＳ５０７）。
再起動時間がＯＳ切替時間よりも短い場合（Ｓ５０７で「ＹＥＳ」）、復旧処理管理部１４０は、実施の形態１と同様に優先再起動プログラムを復旧する（図１３のＳ５０５）。
図１２の例の場合、再起動時間（１０ｍｓ）がＯＳ切替時間（２０ｍｓ）よりも短いので、復旧処理管理部１４０は、「ドライバ４」、「ドライバ２」、「ドライバ３」の順に復旧する。
【００６８】
一方、再起動時間がＯＳ切替時間よりも長い場合（Ｓ５０７で「ＮＯ」）、復旧処理管理部１４０は、優先再起動プログラムを復旧しない。その代わりに、コールドスタンバイイメージ部３２２は、コールドスタンバイ状態を解除（ホット化）し、起動中システム３２１で実行されていた複数のプログラム（ドライバ１３０）の実行を開始する（図１３のＳ５０８）。そして、コールドスタンバイイメージ部３２２は、起動中システム３２１で実行されていたアプリケーション１８０も同様に実行する。
【００６９】
（実施の形態２の効果）
実施の形態２の情報処理装置１００は、動作必須アプリケーションがより早期に復旧可能な方法（優先再起動プログラムの復旧もしくはＯＳ切替）を選択する。その為、実施の形態２の情報処理装置１００は、実施の形態１の効果に加え、より早期に動作必須アプリケーションの復旧が可能となる。
そして、実施の形態２の情報処理装置１００が優先再起動プログラムとして抽出するプログラムも、ドライバ１３０に限定されず、例えば優先再起動プログラムとして抽出されるプログラムがアプリケーション１８０であっても、同様の効果が得られる。また、ドライバ１３０に障害が発生した場合に限定されず、例えば、アプリケーション１８０に障害が発生した場合でも同様の効果が得られる。
【符号の説明】
【００７０】
１００  情報処理装置、１３０  ドライバ、１４０  復旧処理管理部、１５０  アプリケーション関連性管理部、１６０  手段判定部、１７０  プログラム起動管理部、１８０  アプリケーション、１９０  プログラム関連性通知部、１９１  プログラム関連性通知機能、２００  プログラム実行部、３２０  ＶＭＭ、３２１  起動中システム、３２２  コールドスタンバイイメージ部、５００  プログラム起動管理リスト、５０１  プログラムカラム、５０２  リンクカラム、５０３  アプリケーション−プログラム関連性リスト、５０４  アプリケーションカラム、５０５  必須カラム、５０６  使用プログラムカラム、５０８  起動時間カラム、９００  ネットワーク、９０１  表示装置、９０２  キーボード、９０３  マウス、９０４  ＦＤＤ、９０５  コンパクトディスク装置、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  磁気ディスク装置、９２１  カーネル、９２３  プログラム群、９２４  ファイル群。
【図１】
0005921306.tif 000002
【図２】
0005921306.tif 000003
【図３】
0005921306.tif 000004
【図４】
0005921306.tif 000005
【図５】
0005921306.tif 000006
【図６】
0005921306.tif 000007
【図７】
0005921306.tif 000008
【図８】
0005921306.tif 000009
【図９】
0005921306.tif 000010
【図１０】
0005921306.tif 000011
【図１１】
0005921306.tif 000012
【図１２】
0005921306.tif 000013
【図１３】
0005921306.tif 000014