(57)【要約】      （修正有）【課題】汎用性が高く、障害の影響を受けずに異常発生時点での状態を保存することができる情報処理システムを提供する。【解決手段】情報処理システム１は、物理マシン１１０、オペレーションシステム（ＯＳ）１２０、状態保存コード１３０、及びモジュール群１４０を有する情報処理装置１００と、印刷装置１５０と、記憶領域１６０と、を備える。状態保存コードは、ＯＳのブート時又はブート後に、メモリ空間におけるＯＳの実行形式ファイルとは異なる特定の領域に二次記憶装置から展開されている。情報処理装置は、ＯＳの障害発生時点に、特定の領域に移動し、状態保存コードを実行することによって、メモリ空間のページテーブルを検索し、ＯＳの仮想メモリ空間から、対応する物理メモリが存在する仮想メモリの内容を二次記憶装置に保存する。【選択図】図１
2019160253.tif 000002
【特許請求の範囲】
【請求項１】
オペレーションシステムのブート時又はブート後に、前記オペレーションシステムのメモリ空間における前記オペレーションシステムの実行形式ファイルとは異なる特定の領域に展開されている状態保存コードを有する情報処理装置を備え、
前記情報処理装置は、前記オペレーションシステムの障害発生時点に、前記特定の領域に移動し、前記状態保存コードを実行することによって、前記メモリ空間のページテーブルを検索し、前記オペレーションシステムの仮想メモリ空間から、対応する物理メモリが存在する仮想メモリの内容を二次記憶装置に保存することを特徴とする情報処理システム。
【請求項２】
前記状態保存コードは、命令領域、及びデータ領域を有することを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記命令領域、及び前記データ領域は、位置独立コードにより前記特定の領域に展開されていることを特徴とする請求項２に記載の情報処理システム。
【請求項４】
前記命令領域、及び前記データ領域は、リンカスクリプトにより、前記特定の領域に展開されていることを特徴とする請求項２に記載の情報処理システム。
【請求項５】
オペレーションシステムのブート時又はブート後に、前記オペレーションシステムのメモリ空間における前記オペレーションシステムの実行形式ファイルとは異なる特定の領域に状態保存コードを二次記憶装置から展開する展開工程と、
前記オペレーションシステムの障害発生時点に前記特定の領域に移動する移動工程と、
前記状態保存コードを実行することによって、前記メモリ空間のページテーブルを検索し、前記オペレーションシステムの仮想メモリ空間から、対応する物理メモリが存在する仮想メモリの内容を二次記憶装置に保存する保存工程と、
含むことを特徴とする情報処理システムの制御方法。
【請求項６】
オペレーションシステムのブート時又はブート後に、前記オペレーションシステムのメモリ空間における前記オペレーションシステムの実行形式ファイルとは異なる特定の領域に状態保存コードを二次記憶装置から展開する展開ステップと、
前記オペレーションシステムの障害発生時点に前記特定の領域に移動する移動ステップと、
前記状態保存コードを実行することによって、前記メモリ空間のページテーブルを検索し、前記オペレーションシステムの仮想メモリ空間から、対応する物理メモリが存在する仮想メモリの内容を二次記憶装置に保存する保存ステップと、
を情報処理システムに実行させることを特徴とする情報処理システムの制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理システムの制御方法、及び情報処理システムの制御プログラムに関する。
【背景技術】
【０００２】
Ｌｉｎｕｘ（登録商標）、Ｕｎｉｘ（登録商標）系、Ｔｒｏｎ等の汎用オペレーションシステム（ＯＳ）やリアルタイムＯＳは、異常終了した場合に、異常終了時点での状態を保存する機能を標準では備えていない。異常が発生した原因を解析するために、異常終了時点での状態を保存する機能を備えた情報処理システムが望まれている。
【０００３】
特許文献１には、ゲスト側でシステムが動作した状態で、印刷装置又は印刷装置の制御に関連する障害の発生が検知された場合に、印刷が完了していないページとゲストＯＳのスナップショットとを保存する機能を有する情報処理システムが開示されている。この情報処理システムでは、ＣＰＵの仮想化支援機能を用いている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１の情報処理システムでは、仮想化をサポートしていない安価なＰＣでは実現できず、メモリの使用量も多いため汎用性が低い。さらに、発生した障害の内容によっては、異常発生時点での情報を収集して保存する処理が、この障害のために正常に機能しない場合があるという課題がある。
【０００５】
本発明は、上記に鑑みてなされたものであって、汎用性が高く、障害の影響を受けずに異常発生時点での状態を保存することができる情報処理システムを実現することを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明は、オペレーションシステムのブート時又はブート後に、前記オペレーションシステムのメモリ空間における前記オペレーションシステムの実行形式ファイルとは異なる特定の領域に展開されている状態保存コードを有する情報処理装置を備え、前記情報処理装置は、前記オペレーションシステムの障害発生時点に、前記特定の領域に移動し、前記状態保存コードを実行することによって、前記メモリ空間のページテーブルを検索し、前記オペレーションシステムの仮想メモリ空間から、対応する物理メモリが存在する仮想メモリの内容を二次記憶装置に保存することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、汎用性が高く、障害の影響を受けずに異常発生時点での状態を保存することができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施の形態に係る情報処理システムの構成を示す模式図である。
【図２】図２は、ＯＳのメモリ空間を表す図である。
【図３】図３は、状態保存コードの構成を表す図である。
【図４】図４は、図１に示す情報処理システムが障害発生時に実行する動作を表すフローチャートである。
【図５】図５は、ページテーブル検索処理を表すサブルーチンのフローチャートである。
【図６】図６は、ＯＳの仮想メモリ空間と物理メモリとの対応関係を表す図である。
【図７】図７は、ＯＳのログを二次記憶装置に出力する様子を表す図である。
【発明を実施するための形態】
【０００９】
以下に、図面を参照して本発明に係る情報処理システム、情報処理システムの制御方法、及び情報処理システムの制御プログラムの実施の形態を説明する。なお、この実施の形態によりこの発明が限定されるものではない。また、図面の記載において、同一または対応する要素には適宜同一の符号を付している。
【００１０】
（実施の形態）
図１は、実施の形態に係る情報処理システムの構成を示す模式図である。図１に示すように、本実施の形態に係る情報処理システム１は、物理マシン１１０、オペレーションシステム（ＯＳ）１２０、状態保存コード１３０、及びモジュール群１４０を有する情報処理装置１００と、印刷装置１５０と、記憶領域１６０と、を備える。
【００１１】
情報処理装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などの制御装置と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やＲＡＭなどの記憶装置と、を含んで構成される一般的なコンピュータであり、例えばプリンタである印刷装置１５０を制御するプリンタサーバ又はプリンタコントローラとしての機能を有する。
【００１２】
図２は、ＯＳのメモリ空間を表す図である。図２に示すように、情報処理装置１００のＯＳ１２０のメモリ空間であるメモリ空間２００には、ユーザプロセスのメモリ領域２０１と、ページテーブル２０２と、ＯＳのメモリ領域２０３と、状態保存コード１３０と、が保存されている。
【００１３】
ページテーブル２０２は、仮想アドレス−物理アドレス変換やメモリ領域の属性の解決に用いる「メモリ領域に関する設定」である。ページテーブル２０２は、情報処理装置１００のＲＡＭ上の特定の位置に置かれ、ＣＰＵのレジスタに該当アドレスを設定することでＣＰＵが該当ページテーブルを参照することができる。すなわち、メモリ空間２００において、どの領域がどのように使われているか、このページテーブル２０２を解読することにより把握することができる。
【００１４】
図３は、状態保存コードの構成を表す図である。図３に示すように、状態保存コード１３０は、命令領域１３１と、データ領域１３２と、その他１３３と、を有する。状態保存コード１３０は、ＯＳ１２０のブート時又はブート後に、メモリ空間２００におけるＯＳ１２０の実行形式ファイルとは異なる特定の領域に二次記憶装置３００から展開されている（展開ステップ）。換言すると、状態保存コード１３０は、ＯＳ１２０のサブルーチンを実行することや、ＯＳ１２０のデータを参照することが禁止されている。状態保存コード１３０がＯＳ１２０側の不具合の影響を受けることを防止するためである。
【００１５】
状態保存コード１３０をメモリ空間２００の動的に取得したメモリ領域に展開する場合、命令領域１３１、及びデータ領域１３２は、ＰＩＣ（Ｐｏｓｉｔｉｏｎ−Ｉｎｄｅｐｅｎｄｅｎｔ  Ｃｏｄｅ：位置独立コード）によりメモリ空間２００の特定の領域に展開されている。その結果、状態保存コード１３０がメモリ空間２００のどこに保存されていても、状態保存コード１３０をそのまま実行することができる。
【００１６】
また、状態保存コード１３０をメモリ空間２００の予め定めた領域に展開する場合、命令領域１３１、及びデータ領域１３２は、リンカスクリプトにより、メモリ空間２００の特定の領域に展開されている。リンカスクリプトは、プログラムをリンクするためのソフトウェアであり、リンカに対する指示が書かれたファイルと捉えることができる。
【００１７】
そして、情報処理装置１００は、ＯＳ１２０の障害発生時点に、特定の領域に移動し、状態保存コード１３０を実行することによって、メモリ空間２００のページテーブルを検索し、ＯＳ１２０の仮想メモリ空間４００から、対応する物理メモリが存在する仮想メモリの内容を二次記憶装置に保存する。二次記憶装置は、二次記憶装置３００であってもよいが、二次記憶装置３００とは異なるものであってもよい。
【００１８】
次に、情報処理システム１の障害発生時における動作を説明する。図４は、図１に示す情報処理システムが障害発生時に実行する動作を表すフローチャートである。図４に示すように、ＯＳ１２０の障害発生時点には、以下で説明する３つのパターンにより、ｐａｎｉｃ（）と呼ばれる関数が呼び出される（ステップＳ１）。
【００１９】
１つ目のパターンとして、情報処理装置１００のＣＰＵが異常を検知する場合がある。具体的には、情報処理装置１００のＣＰＵの仕様に定められた異常状態を検知した場合、例外を発生させ、特定のアドレスにある命令を実行する。異常状態のリカバリを計れる場合はリカバリを図る。一方、リカバリ不可能もしくはリカバリに失敗した場合、ｐａｎｉｃ（）が呼び出される。
【００２０】
２つ目のパターンとして、情報処理システム１のＣＰＵ以外のデバイスが異常を検知する場合がある。具体的には、情報処理システム１のＣＰＵ以外のデバイスの動作時にそのデバイスに何らかの異常を検知した場合、一般的に異常動作割り込みが上がり、ｐａｎｉｃ（）が呼び出される。
【００２１】
３つ目のパターンとして、ＯＳ１２０が異常を検知する場合がある。具体的には、情報処理装置１００のＣＰＵの命令としては正しいが、論理的に意図しない状態を発見した場合、ｐａｎｉｃ（）が呼び出される。例えば、ある状態においてゼロになるはずのない変数がゼロになっていた場合である。
【００２２】
上述した３パターン以外の場合においても、異常が検知された場合には、一般的にｐａｎｉｃ（）が呼び出されることが多い。ただし、ｐａｎｉｃ（）が呼び出されること以外の処理に起因して状態保存コード１３０を実行してもよい。
【００２３】
ｐａｎｉｃ（）が呼び出されると、まず、従来のｐａｎｉｃ処理が実行される（ステップＳ２）。
【００２４】
その後、状態保存コード１３０が展開されている特定の領域に移動する（ステップＳ３：移動ステップ）。具体的には、ｐａｎｉｃ（）の末尾で状態保存コード１３０の展開先の命令領域１３１の先頭を指すアドレスに処理を移す。処理を移すためには、Ｃ言語を用いる場合、関数ポインタで実現することができる。また、アセンブラの命令を直接記述しても構わない。
【００２５】
続いて、状態保存コード１３０が実行される。状態保存コード１３０が実行されると、始めに、状態保存コード初期化処理が行われる（ステップＳ４）。具体的には、状態保存コード１３０内のデータ（変数）を初期化し、初期値にする。このとき、「仮想アドレス」が初期値に設定される。また、二次記憶装置を制御するデバイスの初期化を行う。
【００２６】
そして、ページテーブル検索処理を行う（ステップＳ５）。状態保存コード１３０は、ＯＳ１２０とは独立したコードである。そのため、そのままではＯＳ１２０がメモリ上のどこに配置されているか把握することができない。メモリ空間２００からＯＳ１２０の状態（コードやデータ）を読み取るためには、メモリ空間２００のどの領域が使われているかを把握する必要がある。ページテーブル２０２を検索することにより、メモリ空間２００のアドレスを把握することができる。
【００２７】
図５は、ページテーブル検索処理を表すサブルーチンのフローチャートである。図６は、ＯＳの仮想メモリ空間と物理メモリとの対応関係を表す図である。図６に示すように、仮想メモリ空間４００には、対応する物理メモリ５０１、５０２、５０３が存在する仮想メモリ４０１、４０３と、アドレスは存在するが、対応する物理メモリがない領域（未使用領域４０２、４０４）と、が存在する。
【００２８】
始めに、図５に示すように、ＯＳ１２０の仮想メモリ空間４００の最終アドレスまで調べたか否かを判定する（ステップＳ５１）。
【００２９】
ＯＳ１２０の仮想メモリ空間４００の最終アドレスまで調べていないと判定された場合（ステップＳ５１：Ｎｏ）、仮想アドレスに対応したページテーブル２０２のエントリを１つ取り出す（ステップＳ５２）。
【００３０】
さらに、ページテーブル２０２のエントリに物理アドレスが記載されている否かを判定する（ステップＳ５３）。
【００３１】
ページテーブル２０２のエントリに物理アドレスが記載されている場合（ステップＳ５３：Ｙｅｓ）、「仮想アドレス」から「仮想アドレス＋ページのサイズ」に含まれるメモリ空間２００の内容を二次記憶装置６００に保存する（保存ステップ）。なお、ページのサイズとは、ＣＰＵのための固定長に区切られた領域であり、このページ単位で仮想アドレスと物理アドレスとの対応付けを行う。ページサイズは、例えば４ｋｂｙｔｅである。また、二次記憶装置６００への保存は、デバイスの種別やメーカーに講じた方式によって行われる。また、二次記憶装置６００は、二次記憶装置３００と同じものであってよいが、異なるものを用いてもよい。
【００３２】
一方、ページテーブル２０２のエントリに物理アドレスが記載されていない場合（ステップＳ５３：Ｎｏ）、ステップＳ５５に進む。
【００３３】
ここで、「仮想アドレス」＝「仮想アドレス＋ページのサイズ」に置き換える（ステップＳ５５）。
【００３４】
その後、ステップＳ５１に戻り処理が継続される。
【００３５】
ステップＳ５１において、ＯＳ１２０の仮想メモリ空間４００の最終アドレスまで調べていると判定された場合（ステップＳ５１：Ｙｅｓ）、ページテーブル検索処理が終了する。すなわち、ステップＳ４で初期値に設定された「仮想アドレス」が最終アドレスになるまで二次記憶装置６００への保存が行われ、仮想メモリ空間４００全体の内容を二次記憶装置６００に保存したこととなる。
【００３６】
二次記憶装置６００に保存するために、未使用領域４０２、４０４にアクセスすると、ＣＰＵが不正なアドレスへのアクセスを検知し、不具合を起こす。ページテーブル検索処理では、ページテーブル２０２の内容を解読し、未使用領域４０２、４０４へのアクセスを回避しながら仮想メモリ空間４００の内容を二次記憶装置６００に保存するため、不具合が生じない。
【００３７】
図７は、ＯＳのログを二次記憶装置に出力する様子を表す図である。図７に示すように、情報処理システム１では、ページテーブル検索処理により、仮想メモリ空間４００の内容、すなわち、ＯＳのメモリ領域２０３の内容を二次記憶装置６００に保存する。このとき、状態保存コード１３０は、ＯＳ１２０のサブルーチンを実行することや、ＯＳ１２０のデータを参照することが禁止されており、ＯＳ１２０とは別個の独立した処理であるため、ＯＳ１２０側の不具合の影響を受けない。
【００３８】
また、情報処理システム１は、ＣＰＵの仮想化支援機能を用いていないため、仮想化をサポートしていない安価なＰＣでも実現可能である。
【００３９】
以上説明したように、情報処理システム１は汎用性が高く、障害の影響を受けずに異常発生時点での状態を保存することができる情報処理システムである。
【００４０】
なお、本実施の形態の情報処理システム１で実行される状態保存コード１３０を含む制御プログラムは、ＲＯＭ等に予め組み込まれて提供されてもよい。
【００４１】
また、本実施の形態の情報処理システム１で実行される状態保存コード１３０を含む制御プログラムは、インストール可能な形式又は実行可能な形式のファイルで二次記憶装置３００としてのＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
【００４２】
さらに、本実施の形態の情報処理システム１で実行される状態保存コード１３０を含む制御プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施の形態の〜装置で実行される〜プログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【００４３】
また、上記実施の形態により本発明が限定されるものではない。上述した各構成要素を適宜組み合わせて構成したものも本発明に含まれる。また、さらなる効果や変形例は、当業者によって容易に導き出すことができる。よって、本発明のより広範な態様は、上記の実施の形態に限定されるものではなく、様々な変更が可能である。
【符号の説明】
【００４４】
１  情報処理システム
１００  情報処理装置
１１０  物理マシン
１２０  ＯＳ
１３０  状態保存コード
１４０  モジュール群
１５０  印刷装置
１６０  記憶領域
２００  メモリ空間
２０１  ユーザプロセスのメモリ領域
２０２  ページテーブル
２０３  ＯＳのメモリ領域
３００、６００  二次記憶装置
１３１  命令領域
１３２  データ領域
１３３  その他
４００  仮想メモリ空間
４０１、４０３  仮想メモリ
４０２、４０４  未使用領域
５０１、５０２、５０３  物理メモリ
【先行技術文献】
【特許文献】
【００４５】
【特許文献１】特開２０１７−０４５３２０号公報
【図１】
2019160253.tif 000003
【図２】
2019160253.tif 000004
【図３】
2019160253.tif 000005
【図４】
2019160253.tif 000006
【図５】
2019160253.tif 000007
【図６】
2019160253.tif 000008
【図７】
2019160253.tif 000009