(57)【要約】      （修正有）【課題】従来技術における各種問題を生じさせることなく、ＯＳの異常発生時の状態を復元できるようにする情報処理装置、制御方法、およびプログラムを提供する。【解決手段】情報処理装置１００は、ＯＳの起動時に、ＯＳに割り当てられたＯＳメモリ領域２２０に対して、ＯＳから独立して実行可能な状態保存コードを展開する状態保存コード展開部３０１と、ＯＳにおける異常発生時に、状態保存コードを実行することにより、ＯＳメモリ領域に記憶されている、ＯＳの異常発生時の特定の一部の状態を復元するための所定の対象データを、二次記憶装置２３０に保存する状態保存コード実行部３０３とを備える。【選択図】図３
2020135240.tif 000002
【特許請求の範囲】
【請求項１】
ＯＳの起動時に、前記ＯＳに割り当てられたＯＳメモリ領域に対して、前記ＯＳから独立して実行可能な状態保存コードを展開する状態保存コード展開部と、
前記ＯＳにおける異常発生時に、前記状態保存コードを実行することにより、前記ＯＳメモリ領域に記憶されている、前記ＯＳの異常発生時の特定の一部の状態を復元するための所定の対象データを、二次記憶装置に保存する状態保存コード実行部と
を備えることを特徴とする情報処理装置。
【請求項２】
前記ＯＳをビルドする際に、前記所定の対象データを定義する対象データ定義部をさらに備え、
前記対象データ定義部は、
前記所定の対象データを、ソースファイル単位で定義する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記対象データ定義部は、
所定の設定ファイルに示されたソースファイルを、前記所定の対象データとして定義する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記対象データ定義部は、
前記所定の対象データとして定義されたソースファイルにて使用される変数と、当該変数が格納されているメモリアドレスとの対応付けがなされたアドレスリストを、ＯＳ実行形式ファイルに埋め込み、
前記状態保存コード実行部は、
前記アドレスリストに示されているメモリアドレスから前記変数を取得し、当該変数を前記所定の対象データに含めて前記二次記憶装置に保存する
ことを特徴とする請求項２または３に記載の情報処理装置。
【請求項５】
前記変数は、前記所定の対象データとして定義されたソースファイル内にて定義されている変数と、前記所定の対象データとして定義されたソースファイル外にて定義されている変数とを含む
ことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
ＯＳの起動時に、前記ＯＳに割り当てられたＯＳメモリ領域に対して、前記ＯＳから独立して実行可能な状態保存コードを展開する状態保存コード展開工程と、
前記ＯＳにおける異常発生時に、前記状態保存コードを実行することにより、前記ＯＳメモリ領域に記憶されている、前記ＯＳの異常発生時の特定の一部の状態を復元するための所定の対象データを、二次記憶装置に保存する状態保存コード実行工程と
を含むことを特徴とする制御方法。
【請求項７】
コンピュータを、
ＯＳの起動時に、前記ＯＳに割り当てられたＯＳメモリ領域に対して、前記ＯＳから独立して実行可能な状態保存コードを展開する状態保存コード展開部、および、
前記ＯＳにおける異常発生時に、前記状態保存コードを実行することにより、前記ＯＳメモリ領域に記憶されている、前記ＯＳの異常発生時の特定の一部の状態を復元するための所定の対象データを、二次記憶装置に保存する状態保存コード実行部
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、制御方法、およびプログラムに関する。
【背景技術】
【０００２】
下記特許文献１には、ゲストＯＳ（Operating System）を有する情報処理装置において、印刷装置に関する障害を検知した場合、障害の起因を示す情報と印刷装置で印刷が完了していないページに関する情報とを保存した後、応用プログラムを含むゲストＯＳのスナップショットを作成する技術が開示されている。この技術によれば、障害の起因発生時の状態を再現することができるとされている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかしながら、上記特許文献１の技術では、以下に例示する各種問題が発生し得る。
【０００４】
例えば、上記特許文献１の技術では、仮想マシンを用いることを前提としているため、仮想マシンに対応していないＣＰＵを用いている装置では、この技術を利用することができない。
【０００５】
また、例えば、上記特許文献１の技術では、ゲストＯＳのスナップショットのデータサイズが大きくなるため、当該スナップショットを保存するための大容量の記憶領域が必要となる。
【０００６】
本発明は、上述した従来技術の課題を解決するため、従来技術における各種問題を生じさせることなく、ＯＳの異常発生時の特定の一部の状態を復元できるようにすることを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決するために、本発明の情報処理装置は、ＯＳの起動時に、ＯＳに割り当てられたＯＳメモリ領域に対して、ＯＳから独立して実行可能な状態保存コードを展開する状態保存コード展開部と、ＯＳにおける異常発生時に、状態保存コードを実行することにより、ＯＳメモリ領域に記憶されている、ＯＳの異常発生時の特定の一部の状態を復元するための所定の対象データを、二次記憶装置に保存する状態保存コード実行部とを備える。
【発明の効果】
【０００８】
本発明によれば、従来技術における各種問題を生じさせることなく、ＯＳの異常発生時の特定の一部の状態を復元することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施形態に係るＭＦＰのハードウェア構成図
【図２】本発明の一実施形態に係るＭＦＰによる対象データ保存処理の概要を示す図
【図３】本発明の一実施形態に係るＭＦＰの機能構成を示す図
【図４】本発明の一実施形態に係るＭＦＰによる処理の手順を示すフローチャート
【図５】本発明の一実施形態に係る対象データ定義部による対象データの定義方法の手順の一例を示すフローチャート
【図６】本発明の一実施形態に係る対象データ定義部によって参照される設定ファイルの一例を示す図
【図７】本発明の一実施形態に係る対象データ定義部によって生成されるアドレスリストの一例を示す図
【発明を実施するための形態】
【００１０】
以下、図面を参照して、本発明の一実施形態について説明する。
【００１１】
（ＭＦＰ１００のハードウェア構成）
図１は、本発明の一実施形態に係るＭＦＰ１００のハードウェア構成図である。図１に示すＭＦＰ１００は、コピー機能、プリンタ機能、スキャナ機能、ＦＡＸ機能等を有する、いわゆる複合機である。なお、ＭＦＰ１００は、「情報処理装置」の一例である。
【００１２】
図１に示されているように、ＭＦＰ１００は、コントローラ１１０、近距離通信回路１２０、エンジン制御部１３０、操作パネル１４０、およびネットワークＩ／Ｆ１５０を備えている。
【００１３】
これらのうち、コントローラ１１０は、コンピュータの主要部であるＣＰＵ１０１、システムメモリ（ＭＥＭ−Ｐ）１０２、ノースブリッジ（ＮＢ）１０３、サウスブリッジ（ＳＢ）１０４、ＡＳＩＣ(Application Specific Integrated Circuit)１０６、記憶部であるローカルメモリ（ＭＥＭ−Ｃ）１０７、ＨＤＤコントローラ１０８、及び、記憶部であるＨＤ１０９を有し、ＮＢ１０３とＡＳＩＣ１０６との間をＡＧＰ(Accelerated Graphics Port)バス１２１で接続した構成となっている。ただし、コントローラ１１０の構成はこれに限定されない。例えば、ＣＰＵ１０１、ＮＢ１０３、ＳＢ１０４などの２以上の構成要素をＳｏＣ（System on Chip）によって実現してもよい。この場合、ＳｏＣとＡＳＩＣ１０６との間をPCI-express（登録商標）バスで接続してもよい。
【００１４】
これらのうち、ＣＰＵ１０１は、ＭＦＰ１００の全体制御を行う制御部である。ＮＢ１０３は、ＣＰＵ１０１と、ＭＥＭ−Ｐ１０２、ＳＢ１０４、及びＡＧＰバス１２１とを接続するためのブリッジであり、ＭＥＭ−Ｐ１０２に対する読み書きなどを制御するメモリコントローラと、ＰＣＩ(Peripheral Component Interconnect)マスタ及びＡＧＰターゲットとを有する。
【００１５】
ＭＥＭ−Ｐ１０２は、コントローラ１１０の各機能を実現させるプログラムやデータの格納用メモリであるＲＯＭ１０２ａ、プログラムやデータの展開、及びメモリ印刷時の描画用メモリなどとして用いるＲＡＭ１０２ｂとからなる。なお、ＲＡＭ１０２ｂに記憶されているプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
【００１６】
ＳＢ１０４は、ＮＢ１０３とＰＣＩデバイス、周辺デバイスとを接続するためのブリッジである。ＡＳＩＣ１０６は、画像処理用のハードウェア要素を有する画像処理用途向けのＩＣ(Integrated Circuit)であり、ＡＧＰバス１２１、ＰＣＩバス１２２、ＨＤＤコントローラ１０８およびＭＥＭ−Ｃ１０７をそれぞれ接続するブリッジの役割を有する。このＡＳＩＣ１０６は、ＰＣＩターゲットおよびＡＧＰマスタ、ＡＳＩＣ１０６の中核をなすアービタ（ＡＲＢ）、ＭＥＭ−Ｃ１０７を制御するメモリコントローラ、ハードウェアロジックなどにより画像データの回転などを行う複数のＤＭＡＣ(Direct Memory Access Controller)、並びに、スキャナ部１３１及びプリンタ部１３２との間でＰＣＩバス１２２を介したデータ転送を行うＰＣＩユニットとからなる。なお、ＡＳＩＣ１０６には、ＵＳＢ(Universal Serial Bus)のインターフェースや、ＩＥＥＥ１３９４(Institute of Electrical and Electronics Engineers 1394）のインターフェースを接続するようにしてもよい。
【００１７】
ＭＥＭ−Ｃ１０７は、コピー用画像バッファ及び符号バッファとして用いるローカルメモリである。ＨＤ１０９は、画像データの蓄積、印刷時に用いるフォントデータの蓄積、フォームの蓄積を行うためのストレージである。ＨＤ１０９は、ＣＰＵ１０１の制御にしたがってＨＤ１０９に対するデータの読出又は書込を制御する。ＡＧＰバス１２１は、グラフィック処理を高速化するために提案されたグラフィックスアクセラレータカード用のバスインタフェースであり、ＭＥＭ−Ｐ１０２に高スループットで直接アクセスすることにより、グラフィックスアクセラレータカードを高速にすることができる。
【００１８】
また、近距離通信回路１２０には、近距離通信回路１２０ａが備わっている。近距離通信回路１２０は、ＮＦＣ、Ｂｌｕｅｔｏｏｔｈ（登録商標）等の通信回路である。
【００１９】
更に、エンジン制御部１３０は、スキャナ部１３１及びプリンタ部１３２によって構成されている。コントローラ１１０は、ＭＦＰ１００全体の制御を行い、例えば、描画、通信、操作パネル１４０からの入力等を制御する。スキャナ部１３１又はプリンタ部１３２には、誤差拡散やガンマ変換などの画像処理部分が含まれている。
【００２０】
なお、ＭＦＰ１００は、操作パネル１４０のアプリケーション切り替えキーにより、ドキュメントボックス機能、コピー機能、プリンタ機能、およびファクシミリ機能を順次に切り替えて選択することが可能となる。ドキュメントボックス機能の選択時にはドキュメントボックスモードとなり、コピー機能の選択時にはコピーモードとなり、プリンタ機能の選択時にはプリンタモードとなり、ファクシミリモードの選択時にはファクシミリモードとなる。操作パネル１４０は、各種情報を表示するＬＣＤや動作状態を点灯／消灯により表示するＬＥＤといった表示部及びタッチパネルやハードキースイッチを有する入力部等を備えている。なお、操作パネル１４０はタッチパネルを備える場合にはハードキースイッチはなくてもよい。なお、操作パネル１４０はＡＳＩＣ１０６に接続される構成であってもよいが、ＳＢ１０４に接続される構成であってもよい。
【００２１】
また、ネットワークＩ／Ｆ１５０は、通信ネットワーク１２を利用してデータ通信をするためのインターフェースである。近距離通信回路１２０及びネットワークＩ／Ｆ１５０は、ＰＣＩバス１２２を介して、ＡＳＩＣ１０６に電気的に接続されている。
【００２２】
（ＭＦＰ１００による対象データ保存処理の概要）
図２は、本発明の一実施形態に係るＭＦＰ１００による対象データ保存処理の概要を示す図である。
【００２３】
図２（ａ）に示すように、ＭＦＰ１００が備えるメモリ２００（例えば、図１に示すＲＡＭ１０２ｂ）は、ユーザプロセスメモリ領域２１０と、ＯＳメモリ領域２２０とを有する。ユーザプロセスメモリ領域２１０は、各種ユーザプロセスによって使用されるメモリ領域である。ＯＳメモリ領域２２０は、ＯＳによって使用されるメモリ領域である。ＯＳメモリ領域２２０には、ＯＳの起動時に、対象データ２２２と、状態保存コード２２４とが格納される。
【００２４】
対象データ２２２は、ＯＳメモリ領域２２０に格納されているデータのうち、ＯＳの異常発生時の特定の一部の状態を復元するために必要なデータである。状態保存コード２２４は、ＯＳの異常発生時に、ＯＳから独立して実行されることにより、対象データ２２２を二次記憶装置２３０に保存するプログラムである。なお、二次記憶装置２３０は、例えば図１に示すＨＤＤ１０９やその他の不揮発性メモリなどのＭＦＰ１００が備える記憶装置であってもよいが、ＭＦＰ１００に接続された外部記憶装置であってもよい。
【００２５】
図２（ｂ）に示すように、ＭＦＰ１００において異常が発生したとき、状態保存コード２２４が実行される。状態保存コード２２４は、ＯＳから独立して実行されるため、ＭＦＰ１００において生じた異常の影響を受けない。状態保存コード２２４は、ＭＦＰ１００において生じた異常の影響を受けないように、ＯＳにて実行中のプログラムやデータにアクセスしないようになっている。
【００２６】
図２（ｃ）に示すように、状態保存コード２２４は、ＯＳメモリ領域２２０から対象データ２２２を取得し、当該対象データ２２２を、二次記憶装置２３０へ保存する。これにより、ＭＦＰ１００は、二次記憶装置２３０に保存された対象データ２２２を用いて、ＭＦＰ１００における異常発生時の、ＯＳの特定の一部の状態を復元することができる。
【００２７】
（ＭＦＰ１００の機能構成）
図３は、本発明の一実施形態に係るＭＦＰ１００の機能構成を示す図である。なお、ここでは、ＭＦＰ１００が有する機能のうち、一般的な機能については図示および説明を省略し、対象データ保存処理に関連する機能について図示および説明する。
【００２８】
図３に示すように、ＭＦＰ１００は、状態保存コード展開部３０１、異常時処理部３０２、状態保存コード実行部３０３、および対象データ定義部３０４を備える。
【００２９】
状態保存コード展開部３０１は、ＯＳの起動時に、ＯＳの実行形式ファイルおよび状態保存コード２２４を、二次記憶装置２３０から読み出して、ＯＳメモリ領域２２０に展開する。ここで、状態保存コード展開部３０１は、状態保存コード２２４を、ＯＳメモリ領域２２０において動的に取得された領域に展開してもよい。この場合、状態保存コード２２４をコンパイルおよびリンクする際に、ＰＩＣ（位置独立コード）という手法を用いて生成する必要がある。どのアドレスに展開されても、そのまま実行できないといけないためである。または、状態保存コード展開部３０１は、状態保存コード２２４を、ＯＳメモリ領域２２０において予め定められた領域に展開してもよい。この場合、状態保存コード２２４をコンパイルおよびリンクする際、リンカスクリプト等を用いて、命令やデータの配置先となるアドレスを決定する。リンカスクリプトは、プログラムをリンクするためのソフトウェアであり、リンカに対する指示が示されたものである。
【００３０】
異常時処理部３０２は、ＭＦＰ１００において異常が発生したことを検知した場合、所定の異常時処理を実行する。例えば、異常時処理部３０２は、ＣＰＵ１０１の異常を検知した場合、例外を発生させて、特定のメモリ領域にある命令を実行する。そして、異常時処理部３０２は、ＣＰＵ１０１の異常のリカバリを図る。異常時処理部３０２は、ＣＰＵ１０１の異常のリカバリができなかった場合、ｐａｎｉｃ（）関数を実行して、ＯＳを異常終了させる。また、例えば、異常時処理部３０２は、ＣＰＵ１０１以外のデバイスの異常を検知した場合、異常動作割込みの発生に応じて、ｐａｎｉｃ（）関数を実行して、ＯＳを異常終了させる。また、例えば、異常時処理部３０２は、ＯＳの異常を検知した場合、ｐａｎｉｃ（）関数を実行して、ＯＳを異常終了させる。例えば、異常時処理部３０２は、ＯＳが備えるカーネルによって実現される。
【００３１】
状態保存コード実行部３０３は、異常時処理部３０２による所定の異常時処理が実行された後、状態保存コード２２４を実行することにより、ＯＳメモリ領域２２０に記憶されている対象データ２２２を、二次記憶装置２３０に保存する。例えば、状態保存コード実行部３０３は、異常時処理部３０２によってｐａｎｉｃ（）関数が実行された場合、当該ｐａｎｉｃ（）関数からの実行命令（例えば、関数ポインタ、アセンブラ命令等）に応じて、当該実行命令にて指定されたメモリ領域の先頭アドレスに格納されている、状態保存コード２２４を実行する。例えば、状態保存コード２２４による処理は、初期化処理、取得処理、および保存処理を含む。初期化処理は、状態保存コード２２４内の変数を初期化する。また、初期化処理は、二次記憶装置２３０を制御するデバイスを初期化することにより、二次記憶装置２３０を利用可能にする。取得処理は、ＯＳメモリ領域２２０から対象データ２２２を取得する。例えば、複数の対象データ２２２の各々のメモリアドレスは、後述するアドレスリスト７００に示される。そして、アドレスリスト７００に示された複数のメモリアドレスは、ＯＳの起動時にメモリにロードされる。取得処理では、このメモリにロードされた複数のメモリアドレスの各々から、対象データ２２２を読み出す。保存処理は、取得処理によって取得された複数の対象データ２２２を、二次記憶装置２３０に保存する。
【００３２】
対象データ定義部３０４は、二次記憶装置２３０への保存対象とする対象データ２２２を定義する。対象データ定義部３０４による対象データの定義方法の具体例については、図５〜図７を用いて後述する。
【００３３】
例えば、上記で説明した実施形態の各機能は、ＭＦＰ１００において、各種記憶装置（ＲＯＭ、ＲＡＭ等）に記憶されたプログラムを、ＣＰＵ（コンピュータ）が実行することにより実現される。このプログラムは、予めＭＦＰ１００に導入された状態で提供されてもよく、外部から提供されてＭＦＰ１００に導入されるようにしてもよい。後者の場合、このプログラムは、外部記憶媒体（例えば、ＵＳＢメモリ、メモリカード、ＣＤ−ＲＯＭ等）によって提供されてもよく、ネットワーク（例えば、インターネット等）上のサーバからダウンロードすることによって提供されるようにしてもよい。
【００３４】
また、上記で説明した実施形態の各機能は、一又は複数の処理回路によって実現することが可能である。ここで、本明細書における「処理回路」とは、電子回路により実装されるプロセッサのようにソフトウェアによって各機能を実行するようプログラミングされたプロセッサや、上記で説明した各機能を実行するよう設計されたASIC（Application Specific Integrated Circuit）、DSP（digital signal processor）、FPGA（field programmable gate array）や従来の回路モジュール等のデバイスを含むものとする。
【００３５】
（ＭＦＰ１００による処理の手順）
図４は、本発明の一実施形態に係るＭＦＰ１００による処理の手順を示すフローチャートである。ここでは、ＯＳが起動されてからの、ＭＦＰ１００による処理の手順を説明する。
【００３６】
まず、状態保存コード展開部３０１が、ＯＳの実行形式ファイルおよび状態保存コード２２４を、二次記憶装置２３０から読み出す（ステップＳ４０１）。次に、状態保存コード展開部３０１が、ステップＳ４０１で読み出されたＯＳの実行形式ファイルおよび状態保存コード２２４を、ＯＳメモリ領域２２０に展開する（ステップＳ４０２）。
【００３７】
その後、異常時処理部３０２が、ＭＦＰ１００において異常が発生したことを検知したか否かを判断する（ステップＳ４０３）。ステップＳ４０３において、ＭＦＰ１００において異常が発生したことを検知していないと判断された場合（ステップＳ４０３：ＮＯ）、異常時処理部３０２が、ステップＳ４０３の処理を再度実行する。
【００３８】
一方、ステップＳ４０３において、ＭＦＰ１００において異常が発生したことを検知したと判断された場合（ステップＳ４０３：ＹＥＳ）、異常時処理部３０２が、所定の異常時処理を実行する（ステップＳ４０４）。そして、異常時処理部３０２が、状態保存コード実行部３０３に対し、状態保存コード２２４の実行を命令する（ステップＳ４０５）。
【００３９】
状態保存コード実行部３０３は、ステップＳ４０５でなされた実行命令に応じて、状態保存コード２２４を実行することにより、ＯＳメモリ領域２２０に記憶されている対象データ２２２を、二次記憶装置２３０に保存する（ステップＳ４０６）。そして、ＭＦＰ１００は、図４に示す一連の処理を終了する。
【００４０】
（対象データ定義部３０４による対象データの定義方法の一例）
以下、図５〜図７を参照して、対象データ定義部３０４による対象データの定義方法の一例を説明する。図５は、本発明の一実施形態に係る対象データ定義部３０４による対象データの定義方法の手順の一例を示すフローチャートである。図６は、本発明の一実施形態に係る対象データ定義部３０４によって参照される設定ファイルの一例を示す図である。図７は、本発明の一実施形態に係る対象データ定義部３０４によって生成されるアドレスリストの一例を示す図である。
【００４１】
まず、対象データ定義部３０４は、ＯＳをビルドする際に、図６に例示する設定ファイル６００を参照することにより、対象データ２２２とすべきソースファイルを特定する（ステップＳ５０１）。本実施形態では、対象データ２２２を、ソースファイル単位とする。すなわち、複数のソースファイルを、対象データ２２２とする。本実施形態では、対象データ２２２をソースファイル単位としたことにより、二次記憶装置２３０に保存される対象データ２２２に、ソースファイルで使用されている変数を含めることができる。例えば、対象データ２２２は、図６に例示するように、管理者等が設定ファイル６００に対して対象データ２２２とするソースファイルを列記することにより、指定される。なお、設定ファイル６００へのソースファイルの設定は、管理者等が直接設定ファイル６００を編集することによって行われてもよく、管理者等がＧＵＩ画面からソースファイルを指定することによって行われてもよい。
【００４２】
次に、対象データ定義部３０４は、ステップＳ５０１で特定されたソースファイルに対応するオブジェクトファイルを特定する（ステップＳ５０２）。一般的に、オペレーティングシステムを記述する言語はＣ言語またはアセンブラであり、Ｌｉｎｕｘ（登録商標）についてもこれが当てはまる。Ｃ言語のソースファイルは、拡張子が「＊．Ｃ」であり、アセンブラのソースファイルは、拡張子が「＊．Ｓ」である。オブジェクトファイルは、ソースファイルをコンパイルすることにより生成されるものであり、これにより、拡張子が「＊．ｏ」を有するものである。このため、対象データ定義部３０４は、ソースファイルの拡張子を、「＊．ｏ」に置き換えることにより、ソースファイルに対応するオブジェクトファイルを特定することができる。
【００４３】
次に、対象データ定義部３０４は、ステップＳ５０２で特定されたオブジェクトファイルから、「定義シンボル」を特定する（ステップＳ５０３）。また、対象データ定義部３０４は、ステップＳ５０２で特定されたオブジェクトファイルから、「未定義シンボル」を特定する（ステップＳ５０４）。「定義シンボル」とは、対象データ２２２とされたソースファイル内で定義されている変数であり、「未定義シンボル」とは、対象データ２２２とされたソースファイル外で定義されている変数である。本実施形態では、対象データ２２２をソースファイル単位としたことにより、二次記憶装置２３０に保存される対象データ２２２に、ソースファイルで使用されている変数を含めることができる。但し、この場合、ソースファイル外で定義されている「未定義シンボル」を、対象データ２２２に含めることができなくなる虞がある。そこで、本実施形態では、各ソースファイルのコンパイルおよびリンクを行ってＯＳ実行形式ファイルを生成する際に、ソースファイルをコンパイルすることによって生成されたオブジェクトファイルを、ｎｍコマンドを用いて解析することによって、当該オブジェクトファイルから「未定義シンボル」を特定する。複数の階層に亘って「未定義シンボル」が定義されている場合は、上位階層のオブジェクトファイルから順次解析を行うことにより、下位階層のソースファイルで定義されている「未定義シンボル」を特定してゆく。例えば、３階層に亘って「未定義シンボル」が定義されている場合、第１階層のオブジェクトファイルを解析することにより第２階層のソースファイルで定義されている「未定義シンボル」特定し、第２階層のオブジェクトファイルを解析することにより第３階層のソースファイルで定義されている「未定義シンボル」特定する。
【００４４】
次に、対象データ定義部３０４は、複数のオブジェクトファイルをリンクすることによってＯＳ実行形式ファイルが生成された後、ＯＳ実行形式ファイルから、「定義シンボル」および「未定義シンボル」が格納されているメモリアドレスを取得する（ステップＳ５０５）。そして、対象データ定義部３０４は、「定義シンボル」および「未定義シンボル」と、ステップＳ５０５で取得されたメモリアドレスとの対応付けがなされたアドレスリスト７００を生成する（ステップＳ５０６）。
【００４５】
さらに、対象データ定義部３０４は、ステップＳ５０６で生成されたアドレスリスト７００を、ＯＳ実行形式ファイルに埋め込む（ステップＳ５０７）。例えば、ＯＳ実行形式ファイルが、Ｌｉｎｕｘにて採用されているＥＬＦフォーマットを用いている場合、ＯＳ実行形式ファイルに対し、アドレスリスト７００をセクションとして埋め込むことができる。
【００４６】
これにより、状態保存コード実行部３０３は、ＯＳ実行形式ファイルに埋め込まれた、アドレスリスト７００を参照して、各「定義シンボル」および各「未定義シンボル」のメモリアドレスを特定することができる。そして、状態保存コード実行部３０３は、特定された各メモリアドレスからデータを読み出すことにより、各「定義シンボル」および各「未定義シンボル」を対象データ２２２に含めて、二次記憶装置２３０に保存することができる。
【００４７】
以上説明したように、本発明の一実施形態に係るＭＦＰ１００は、ＯＳの起動時に、ＯＳに割り当てられたＯＳメモリ領域２２０に対して、ＯＳから独立して実行可能な状態保存コード２２４を展開する状態保存コード展開部３０１と、ＯＳにおける異常発生時に、状態保存コード２２４を実行することにより、ＯＳメモリ領域２２０に記憶されている、ＯＳの異常発生時の特定の一部の状態を復元するための所定の対象データ２２２を、二次記憶装置２３０に保存する状態保存コード実行部３０３とを備える。
【００４８】
これにより、例えば、本発明の一実施形態に係るＭＦＰ１００は、仮想マシンに対応していないＣＰＵを用いている場合であっても、二次記憶装置２３０に保存された所定の対象データ２２２を用いて、ＯＳの異常発生時の特定の一部の状態を復元することができる。
【００４９】
また、例えば、本発明の一実施形態に係るＭＦＰ１００は、ＯＳの異常発生時の特定の一部の状態を復元するための所定の対象データ２２２を、二次記憶装置２３０に保存するため、二次記憶装置２３０において所定の対象データ２２２を保存するための大容量の記憶領域は不要である。
【００５０】
したがって、本発明の一実施形態に係るＭＦＰ１００によれば、従来技術における各種問題を生じさせることなく、ＯＳの異常発生時の特定の一部の状態を復元することができる。
【００５１】
以上、本発明の好ましい実施形態について詳述したが、本発明はこれらの実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形又は変更が可能である。
【００５２】
なお、情報処理装置は、何らかのＯＳを備えた装置であれば、画像形成装置に限られない。情報処理装置は、例えば、ＰＪ（Projector：プロジェクタ）、ＩＷＢ（Interactive White Board：相互通信が可能な電子式の黒板機能を有する白板）、デジタルサイネージ等の出力装置、ＨＵＤ（Head Up Display）装置、産業機械、撮像装置、集音装置、医療機器、ネットワーク家電、自動車（Connected Car）、ノートＰＣ（Personal Computer）、携帯電話、スマートフォン、タブレット端末、ゲーム機、ＰＤＡ（Personal Digital Assistant）、デジタルカメラ、ウェアラブルＰＣまたはデスクトップＰＣ等であってもよい。
【符号の説明】
【００５３】
１００  ＭＦＰ（情報処理装置）
２００  メモリ
２１０  ユーザプロセスメモリ領域
２２０  ＯＳメモリ領域
２２２  対象データ
２２４  状態保存コード
２３０  二次記憶装置
３０１  状態保存コード展開部
３０２  異常時処理部
３０３  状態保存コード実行部
３０４  対象データ定義部
６００  設定ファイル
７００  アドレスリスト
【先行技術文献】
【特許文献】
【００５４】
【特許文献１】特開２０１７−０４５３２０号公報
【図１】
2020135240.tif 000003
【図２】
2020135240.tif 000004
【図３】
2020135240.tif 000005
【図４】
2020135240.tif 000006
【図５】
2020135240.tif 000007
【図６】
2020135240.tif 000008
【図７】
2020135240.tif 000009