(57)【要約】【課題】スナップショットを記憶する記憶装置の耐久性に与える影響を抑制した情報処理装置等を提供すること。【解決手段】揮発性の主記憶部１２と、不揮発性の第1の補助記憶部１５と、第２のデータを保存する不揮発性の第２の補助記憶部６２と、第２のデータを第２の補助記憶部から主記憶部１２に読み出すデータ処理手段４０と、主記憶部に読み出された第２のデータを含む、主記憶部に記憶されている第１のデータを所定のタイミングで第１の補助記憶部１５に記憶する記憶手段５８と、第１の補助記憶部に記憶された第１のデータを主記憶部に展開する展開手段５９と、を有し、展開手段が前記第１のデータを主記憶部に展開した後、データ処理手段が、記憶手段により第１のデータが第１の補助記憶部に記憶された後に変更された第２のデータを第２の補助記憶部から前記主記憶部に読み出す、ことを特徴とする。【選択図】図４
2010218399.tif 000002
【特許請求の範囲】
【請求項１】
揮発性の主記憶部と、
不揮発性の第1の補助記憶部と、
第２のデータを保存する不揮発性の第２の補助記憶部と、
前記第２のデータを前記第２の補助記憶部から前記主記憶部に読み出すデータ処理手段と、
前記主記憶部に読み出された前記第２のデータを含む、前記主記憶部に記憶されている第１のデータを所定のタイミングで前記第１の補助記憶部に記憶する記憶手段と、
前記第１の補助記憶部に記憶された前記第１のデータを主記憶部に展開する展開手段と、を有し、
前記展開手段が前記第１のデータを前記主記憶部に展開した後、前記データ処理手段が、前記記憶手段により前記第１のデータが前記第１の補助記憶部に記憶された後に変更された前記第２のデータを前記第２の補助記憶部から前記主記憶部に読み出す、
ことを特徴とする情報処理装置。
【請求項２】
前記データ処理手段は、前記記憶手段が第１のデータを第1の補助記憶部に記憶した後、主記憶部で変更されてない前記第２のデータは第２の補助記憶部から読み出さない、
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記データ処理手段が、主記憶部に読み出されたデータに生じさせた変更を記録する変更記録手段を有し、
前記記憶手段は、主記憶部に読み出したデータに変更があった場合に、主記憶部に記憶された第１のデータを第1の補助記憶部に記憶する、
ことを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記記憶手段は、主記憶部に読み出したデータに変更があった場合でも、データの変更の頻度が所定値以上である場合、主記憶部に記憶された第１のデータを第1の補助記憶部に記憶しない、
ことを特徴とする請求項３記載の情報処理装置。
【請求項５】
前記記憶手段が、第１のデータを第1の補助記憶部に記憶することなく、当該情報処理装置の電源がオフにされた場合、
前記データ処理手段は、第２の補助記憶部に記憶された前記第２のデータを主記憶部に読み出す、
ことを特徴とする請求項３又は４記載の情報処理装置。
【請求項６】
前記変更記録手段は、第１のデータを第1の補助記憶部に記憶した後に生じた、主記憶部の前記第２のデータの変更を、データ変更管理表に記録する、
ことを特徴とする請求項３記載の情報処理装置。
【請求項７】
前記変更記録手段は、主記憶部で変更された前記第２のデータのデータサイズを前記データ変更管理表に記録し、
前記記憶手段は、データサイズが閾値を超えた場合に、主記憶部に記憶された第１のデータを第1の補助記憶部に記憶する、
ことを特徴とすることを特徴とする請求項６記載の情報処理装置。
【請求項８】
当該情報処理装置を省エネ状態に遷移させる状態管理手段を有し、
前記記憶手段は、前記状態管理手段が当該情報処理装置を省エネ状態に遷移させるタイミングで、主記憶部に記憶された第１のデータを第1の補助記憶部に記憶するか否かを判定する、
ことを特徴とする請求項１〜７いずれか１項記載の情報処理装置。
【請求項９】
前記状態管理手段は、省エネ状態に遷移することを前記データ処理手段に通知し、
前記データ処理手段は、通知を受けて所定の後処理を実行し、
前記状態管理手段は、当該情報処理装置が起動してスナップショットを展開する起動状態に遷移することを前記データ処理手段に通知し、
前記データ処理手段は、通知を受けて初期化処理を実行する、
ことを特徴とする請求項８記載の情報処理装置。
【請求項１０】
前記変更記録手段は、前記データ処理手段の追加、削除、更新又はバージョンアップを記録し、
前記記憶手段は、前記データ処理手段の追加、削除、更新又はバージョンアップが検出された場合に、主記憶部に記憶された第１のデータを第1の補助記憶部に記憶する、
ことを特徴とする請求項３〜７いずれか１項記載の情報処理装置。
【請求項１１】
前記変更記録手段は、主記憶部で変更された第２のデータをメモリダンプして第２の補助記憶部に記憶する、
ことを特徴とする請求項３〜７いずれか１項記載の情報処理装置。
【請求項１２】
前記状態管理手段は、当該情報処理装置の起動の後、第1の補助記憶部から主記憶部に展開されたに第１のデータとハードウェア構成を比較し、  
ハードウェア構成が変化していた場合、前記記憶手段は、現在のハードウェア構成を反映した第１のデータを第1の補助記憶部に記憶する、
ことを特徴とする請求項９項記載の情報処理装置。
【請求項１３】
前記記憶手段は、ハードウェア構成が変化していた場合でも、ハードウェア構成の変化が主記憶部の前記第２のデータに変更を生じさせた場合にのみ、第１のデータを第1の補助記憶部に記憶する、
ことを特徴とする請求項１２記載の情報処理装置。
【請求項１４】
請求項１〜１３いずれか１項に記載の情報処理装置と、
原稿を光学的に読み取るスキャナ装置と
用紙に画像を形成するプロッタと、
を有する画像形成装置。
【請求項１５】
第２のデータを不揮発性の第２の補助記憶部に保存し、揮発性の主記憶部に記憶された第１のデータを不揮発性の第1の補助記憶部に記憶し、第１のデータを主記憶部に復帰させるデータ復帰方法であって、
データ処理手段が、前記第２のデータを前記第２の補助記憶部から前記主記憶部に読み出すステップと、
記憶手段が、前記主記憶部に読み出された前記第２のデータを含む、前記主記憶部に記憶されている第１のデータを所定のタイミングで前記第１の補助記憶部に記憶するステップと、
展開手段が、前記第１の補助記憶部に記憶された前記第１のデータを主記憶部に展開するステップと、
前記展開手段が前記第１のデータを前記主記憶部に展開した後、前記データ処理手段が、前記記憶手段により前記第１のデータが前記第１の補助記憶部に記憶された後に変更された前記第２のデータを、前記第２の補助記憶部から前記主記憶部に読み出すステップと、
を有することを特徴とするデータ復帰方法。
【請求項１６】
コンピュータに、
第２のデータを不揮発性の第２の補助記憶部に保存させ、揮発性の主記憶部に記憶された第１のデータを不揮発性の第1の補助記憶部に記憶させ、第１のデータを主記憶部に復帰させるプログラムであって、
データ処理手段が、前記第２のデータを前記第２の補助記憶部から前記主記憶部に読み出すステップと、
記憶手段が、前記主記憶部に読み出された前記第２のデータを含む、前記主記憶部に記憶されている第１のデータを所定のタイミングで前記第１の補助記憶部に記憶するステップと、
展開手段が、前記第１の補助記憶部に記憶された前記第１のデータを主記憶部に展開するステップと、
前記展開手段が前記第１のデータを前記主記憶部に展開した後、前記データ処理手段が、前記記憶手段により前記第１のデータが前記第１の補助記憶部に記憶された後に変更された前記第２のデータを、前記第２の補助記憶部から前記主記憶部に読み出すステップと、
を実行させることを特徴とするプログラム。
【請求項１７】
請求項１６記載のプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、揮発メモリのデータを不揮発メモリに記憶し、機器の起動時に揮発メモリに展開する情報処理装置等に関し、特に、不揮発メモリへの記憶回数を抑制する情報処理装置、画像形成装置、データ復帰方法、プログラム及び記憶媒体に関する。
【背景技術】
【０００２】
情報処理装置を搭載した機器では、ユーザが利用できる機能が多いと電源オンしてから起動完了までの起動時間が長時間化する傾向がある。この傾向は、コピー等を行うデジタル複合機においても同様であり、コピー、プリント、ファクシミリ等、機能が追加され増加することで起動時間がどんどん遅くなっている。
【０００３】
起動時間を短縮するため、作業環境の情報（以下、「スナップショット」という）を不揮発メモリに退避しておき、電源オン時にスナップショットを主記憶に復帰することで、起動時間をより短縮するハイバネーションをデジタル複合機に適用することが考えられている（例えば、特許文献１参照。）。特許文献１には、デジタル複合機の起動時にＯＳ（オペレーティングシステム）がいずれのハイバネーション領域を用いて起動するかをユーザに指定させ、その指定されたハイバネーション領域に、前回のオペレーションシステムの終了時にハイバネーション割り込みによって退避されたスナップショットが記憶されている場合、指定されたハイバネーション領域に記憶されたスナップショットを用いて復帰処理するデジタル複合機が開示されている。特許文献１記載のデジタル複合機は、ハイバネーション割り込みに対して、現ユーザに対応するハイバーネーション領域へ、システムの動作状態を表すデータと、使用時にユーザが行った操作による記憶装置への変更データを含むハイバネーションデータとのいずれかを選択的に記憶する機能を有する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、デジタル複合機には主電源スイッチと省エネ状態に移行させる補助電源スイッチとがあり、補助電源スイッチが押下されるとデジタル複合機は、主電源からの電力は供給された状態でソフト的に、システム全体を省エネ状態に遷移させる。省エネ状態では、ユーザが安全に主電源スイッチを押下して電源を切ることができる。従って、ハイバネーションを利用するならば、省エネ状態に遷移されたタイミングで、スナップショットを記憶することが考えられる。
【０００５】
一方、デジタル複合機は、消費電力削減のため、補助電源スイッチの押下がなくてもユーザが一定時間使用しなかった場合に、省エネ状態に遷移する機能を有する。自動的に省エネ状態に遷移した場合の省エネ状態も、ユーザから見れば安全に主電源を切ることができる状態であるため、ハイバネーションを適用するならば、自動的に省エネ状態に遷移したタイミングにおいても同様にスナップショットを記憶する必要がある。
【０００６】
スナップショットの記憶先の記憶装置としては、ＨＤＤ(ハードディスクドライブ)、フラッシュメモリベースの記憶媒体(ＳＤカード、ＳＳＤ（Solid State Drive）など、以下総称して「フラッシュメモリ」という)が考えられるが、ＨＤＤはスピンアップに時間がかかるため、起動時間短縮の観点からは不利である。また、システム起動に関する重要なデータを置くには、ＨＤＤは壊れやすく信頼性に劣るのも欠点である。
【０００７】
これに対し、フラッシュメモリは初期化時間が短く壊れにくいのが利点であるが、アクセス速度が遅いことと、書き換え回数に上限があるのが欠点である。デジタル複合機は、ユーザが最後に使用してからタイマーに設定された時間が経過すると自動的に省エネ状態に遷移するが、最も短い時間だと1分程度をユーザはこのタイマーに設定できる。このため、デジタル複合機の利用態様によっては、1日数１０回〜数１００回、スナップショットが記憶される可能性がある。このため、スナップショットを記憶する記憶装置としてフラッシュメモリを採用した場合、書き換え回数の上限がデジタル複合機の稼働時間を短くしてしまう、又は、部品交換等により保守性を劣化させるという課題がある。
【０００８】
本発明は、上記課題に鑑み、スナップショットを記憶する記憶装置の耐久性に与える影響を抑制した情報処理装置、画像形成装置、データ復帰方法、プログラム及び記憶媒体を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するため、揮発性の主記憶部（例えばＲＡＭ１２）と、不揮発性の第1の補助記憶部例えば、ＨＤＤ又はフラッシュメモリ１５ａ）と、第２のデータ（例えば、印刷した用紙のカウント値）を保存する不揮発性の第２の補助記憶部（例えば、データベース（永続記憶領域）６２）と、第２のデータを前記第２の補助記憶部から前記主記憶部に読み出すデータ処理手段例えば、コンポーネント４０）と、前記主記憶部に読み出された前記第２のデータを含む、前記主記憶部に記憶されている第１のデータを所定のタイミングで前記第１の補助記憶部に記憶する記憶手段（例えば、スナップショット保存部５８）と、前記第１の補助記憶部に記憶された前記第１のデータを主記憶部に展開する展開手段（例えば、スナップショット展開部５９）と、を有し、前記展開手段が前記第１のデータを前記主記憶部に展開した後、前記データ処理手段が、前記記憶手段により前記第１のデータが前記第１の補助記憶部に記憶された後に変更された前記第２のデータを前記第２の補助記憶部から前記主記憶部に読み出す、ことを特徴とする。
【発明の効果】
【００１０】
スナップショットを記憶する記憶装置の耐久性に与える影響を抑制した情報処理装置、画像形成装置、データ復帰方法、プログラム及び記憶媒体を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】ハイバネーションの不都合を説明するための図の一例である。
【図２】デジタル複合機１００のハードウェア構成図の一例である。
【図３】デジタル複合機１００の機能構成を模式的に示す図の一例である。
【図４】ハイバネーションを管理するハイバネーション管理プログラムの機能ブロック図の一例である。
【図５】デジタル複合機１００の状態遷移図の一例である。
【図６】スナップショットを利用したデジタル複合機１００の起動を模式的に説明する図の一例である。
【図７】ハイバネーションを利用した起動の一例を示す図である。
【図８】スナップショット保存部がスナップショットを保存する手順を示すシーケンス図の一例である。
【図９】スナップショット展開部がスナップショットを展開してデジタル複合機１００が起動する手順を示すシーケンス図の一例である。
【図１０】変更管理部が参照するデータ変更管理表の一例を示す図である。
【図１１】コンポーネントの追加、削除、更新によるスナップショットの生成を模式的に説明する図の一例である。
【図１２】ハードウェアの追加、削除、更新によるスナップショットの生成を模式的に説明する図の一例である。
【図１３】ハードウェアの追加、削除、更新によるスナップショットの生成を模式的に説明する図の一例である。
【図１４】スナップショット制御部が、スナップショットを生成して保存する手順を示すフローチャート図の一例である。
【図１５】スナップショット展開部が、スナップショットを展開する手順を示すフローチャート図の一例である。
【図１６】データ変更管理表への登録手順を説明するシーケンス図の一例である。
【図１７】システム状態制御部がスナップショットを生成して保存するか否かを判定する手順を示すフローチャート図の一例である。
【図１８】データ変更フラグを用いずにデジタル複合機１００を起動させる手順を示すフローチャート図の一例である。
【図１９】ＮＶＲＡＭの内容を含むスナップショットの一例を示す図である。
【図２０】ＨＤＤの内容を含むスナップショットの一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態について実施例を上げて図面を参照しながら説明する。
【実施例１】
【００１３】
本実施形態のデジタル複合機１００は、ハイバネーションを利用して不揮発メモリに作業環境の情報（以下、「スナップショット」という）を保存する場合、ソフトウェア構成又はハードウェア構成の大きな変更があった場合のみに限定する。こうすることで、スナップショットを保存する頻度を減らすことができるので、スナップショットの保存がフラッシュメモリの耐久性に影響することを抑制できる。なお、ソフトウェア構成やハードウェア構成の大きな変更とは、アプリケーションの追加／削除／更新、アプリケーションが使用するデータの更新、ハードウェアの装着／脱着等をいう。
【００１４】
しかしながら、このスナップショットの生成態様を採用すると次のような不都合も生じる。図１は、ハイバネーションの不都合を説明するための図である。デジタル複合機１００にスナップショットが記憶されている場合、デジタル複合機１００の起動の度に、ＲＡＭには過去に記憶されたスナップショットの内容が展開されるのに対して、永続記憶領域(図ではNVRAM)に保存されるデータには変更が発生することがあり、両者に矛盾が生じる可能性がある。
【００１５】
図１では、印刷した用紙をカウントするカウンタ（１２）がＮＶＲＡＭに記憶されており、カウンタが１２の場合のＲＡＭの内容がスナップショットとしてＨＤＤ（ハードディスクドライブ）やフラッシュメモリに記憶される。その状態で、カウンタが１３〜１６、１７〜１８になるジョブが実行され、最終的にＮＶＲＡＭが１８の状態で主電源がオフにされるとＮＶＲＡＭには１８が記憶される。
【００１６】
そして、主電源がオンにされると、カウンタが１２の時に記憶されたスナップショットがＲＡＭに展開される。したがって、ＲＡＭに含まれるカウンタが１２に戻るのに対し、ＮＶＲＡＭのカウンタは１８であるため、両者が矛盾している。このような矛盾は、ジョブ実行性能を向上させるため、ＮＶＲＡＭに保存されたカウンタ・履歴データ等をＲＡＭに保持して、ジョブ実行時にはＲＡＭ上のデータのみを更新し、ジョブ終了後にＮＶＲＡＭに書き戻すように処理された場合に生じる。
【００１７】
仮に、ＲＡＭのカウンタが１２、ＮＶＲＡＭのカウンタが１８の状態で、処理を続行した場合、ジョブ実行後に古いデータ（１２→１３）でＮＶＲＡＭのカウンタを上書きしてしまう。すなわち、正確なカウンタが困難なる。
【００１８】
そこで、本実施形態のデジタル複合機１００は、図示するように、スナップショットを展開した後、ＮＶＲＡＭからカウンタをＲＡＭに読み出す。こうすることで、矛盾を解消することができる。具体的には、後述するが、スナップショットを生成したか否かを監視し、スナップショットの生成後に変更のあったデータのみ、ＮＶＲＡＭから読み直すことで矛盾を解消できる。起動時には、スナップショットの生成後に変更のあったデータのみＮＶＲＡＭから読み出せばよいので、スナップショットを展開するよりも起動時間が長くなったとしても、起動時間の増大を抑制できる。
【００１９】
〔永続記憶領域〕
永続記憶領域について説明する。永続記憶領域は、アプリケーションや後述するコントロールサービスがデータを書き戻す不揮発メモリである。したがって、永続記憶領域は、ＮＶＲＡＭ、ＨＤＤ又はフラッシュメモリのいずれでもよい。永続記憶領域は、アプリケーションやコントロールサービス毎に定められている。一方、スナップショットも不揮発メモリに記憶される。したがって、永続記憶領域とスナップショットが記憶される不揮発メモリは一部で重複する場合がある。
【００２０】
〔ハイバネーション〕
次に、ハイバネーションと類似の技術について説明する。ハイバネーションと類似した技術に、スタンバイ機能、サスペンド機能及びレジューム機能がある。ハイバネーションとその他の技術の大きな相違点は、ハイバネーションではスナップショットをＨＤＤ又はフラッシュメモリに記憶させるため、スナップショットを保持するためにデジタル複合機１００が電力を消費しない。これに対し、スタンバイ機能又はサスペンド機能では、デジタル複合機１００は、例えばスナップショットを保持するために主記憶装置であるＲＡＭを定期的にリフレッシュするための電力を消費する。
【００２１】
・ハイバネーション機能
省電力機能の一つで、操作を一時中断して節電するもので、スナップショットをＨＤＤ又はフラッシュメモリに保存した後に電源を切るため、電力を消費しない。
・スタンバイ機能
省電力機能の一つで、一定時間キー入力やトラックポイント （又はマウス ） の操作をしないと、ＨＤＤ又はフラッシュメモリが節電状態になる。電源は切らない。
・サスペンド機能
省電力モードへ入ることで、作業内容をシステムメモリ（不揮発メモリ）に保存し、そのデータを保持するための最低限の電力だけを使用する状態。電源は切らない。
・レジューム機能
ハイバネーション機能、スタンバイ機能、又は、サスペンド機能の広義の呼び名とされることが多いが、レジューム機能には「スナップショットの退避状態から通常状態へ復帰」することを含む場合が多い。
【００２２】
スナップショットは、例えば、ＯＳ（オペレーティングシステム）、アプリケーションプログラム又はデバイスドライバをＣＰＵ１１が実行する際に作業領域として使用する主記憶装置（ＲＡＭ）に記憶された情報である。この他、ＣＰＵ１１やＡＳＩＣ（Application Specific Integrated Circuit）のレジスタの内容がスナップショットに含まれもよい。上記のように、スタンバイ機能やサスペンド機能では、電力の供給の有無や供給先のハードウェアが異なるので、ハイバネーション機能、スタンバイ機能、サスペンド機能及びレジューム機能でスナップショットが共通であるとは限らず、スナップショットはデジタル複合機１００のシステム構成に応じて適切に決定される。すなわち、本実施形態ではスナップショットの内容を限定しない。
【００２３】
また、ＨＤＤとフラッシュメモリには、ＨＤＤはスピンアップが遅いが書き換え上限回数の制約が小さく、フラッシュメモリは初期化時間が短いが書き換え上限回数の制約があるという、それぞれ得失がある。本実施形態のスナップショットの退避・復帰方法において、スナップショットが記憶される記憶装置は、ＨＤＤ又はフラッシュメモリのいずれもでもよいが、フラッシュメモリとすることでフラッシュメモリのデメリットを解消することができる。なお、フラッシュメモリでなく、MRAM (Magnetoresistive Random Access Memory)、ＦｅＲＡＭ（強誘電体メモリ）等をスナップショットの記憶装置として採用してもよい。
【００２４】
〔デジタル複合機１００の構成〕
図２は、デジタル複合機１００のハードウェア構成図の一例を示す。デジタル複合機１００のハードウェア構成は公知であるので簡単に説明する。デジタル複合機１００は、プリンタ、ファクシミリ、スキャナ装置又は複写機のうち１以上の機能を備えた機器であればよく、必ずしも２以上の機能を備えている必要はない。
【００２５】
デジタル複合機１００は、コントローラ５０と、ファックス制御ユニット２６、プロッタ２７、スキャナ２８、及び、その他ハードウェアリソース２９とがシリアルインターバス（ＰＣＩバスやＰＣＩ−Ｅｘｐｒｅｓｓ等）で接続されている。また、コントローラ５０にはユーザが操作する操作パネル３０が接続されている。
【００２６】
コントローラ５０は、ファックス制御ユニット２６、プロッタ２７、スキャナ２８及びその他ハードウェアリソース２９を用いて、原稿の読み取り、印刷、ファクシミリ送受信、操作パネル３０からの入力等を処理する、デジタル複合機１００全体の制御部である。
【００２７】
プロッタ２７は、白黒プロッタ及び／又は１ドラムカラープロッタであり、印刷対象データやスキャナ２８が読み取った画像データに基づき、１ページ毎の画像を形成し、用紙に転写する。例えば、レーザービームを用いた電子写真プロセスを使って、感光ドラム等に形成したトナー画像を用紙に転写し、定着装置により熱と圧力により定着して出力する。
【００２８】
また、スキャナ２８は、コンタクトガラスに載置された原稿を光学的に走査して、その反射光をＡ／Ｄ変換して公知の画像処理を施し所定の解像度のデジタルデータに変換し画像データを生成する。
【００２９】
ファックス制御ユニット２６は、ＮＣＵ（Network Control Unit）を介して公衆通信網に接続し、例えばＧ３、Ｇ４規格のファクシミリに対応した通信手順（通信プロトコル）等に従いファクシミリの送受信を行う。ファックス制御ユニット２６は、画像データにデータ圧縮や変調等の信号処理を施して送信すると共に、相手先から受信した画像データにデータの伸長やエラー訂正等を施し画像データを復元する。
【００３０】
コントローラ５０は、ＣＰＵ１１と、ＮＢ（North  Bridge）１３、ＭＥＭ−Ｐ１２ａ、ＭＥＭ−Ｃ１２ｂと、ＡＳＩＣ１６と、ＨＤＤ又はフラッシュメモリ１５ａ、及び、ＮＶＲＡＭ１５ｂを有する。また、その他、外部とのインターフェイスを提供するＮＩＣ（Network  Interface  Card）１８と、無線ＬＡＮＩ／Ｆ１９と、ＩＥＥＥ１３４Ｉ／Ｆ２１と、ＵＳＢホスト２２と、メモリカードＩ／Ｆ２３と、を有する。
【００３１】
ＣＰＵ１１は、ＭＥＭ−Ｐ１２ａ、ＡＳＩＣ１６、及び、ＵＳＢホスト２２等を結ぶバスに流通するデータの送信制御を行うＮＢ１３を介して、デジタル複合機１００の全体を制御する。また、ＣＰＵ１１は、ＨＤＤ又はフラッシュメモリ１５ａに記憶されたハイバネーション管理プログラム２０を実行して、後述する各機能を実現する。
【００３２】
ＮＢ１３は、ＣＰＵ１１とＭＥＭ−Ｐ１２ａ、ＡＧＰとを接続するためのブリッジＩＣであり、ＭＥＭ−Ｐ１２ａは、画像処理装置１００の描画用メモリなどとして用いるシステムメモリである。
【００３３】
ＭＥＭ−Ｃ１２ｂは、コピー用画像バッファ、符号バッファとして用いられるローカルメモリであり、ＡＳＩＣ１６は、多数のレジスタや論理回路を備え、各モータドライバの制御部の他、ヘッドパルス生成部等として機能する。また、ＡＳＩＣ１６は、ＡＧＰ、ＨＤＤ又はフラッシュメモリ１５ａ及びＭＥＭ−Ｃ１２ｂをそれぞれ接続するブリッジの役割も果たす。
【００３４】
ＭＥＭ−Ｐ１２ａとＭＥＭ−Ｃ１２ｂが、主記憶装置（ＲＡＭ）に相当する。以下、両者を区別する必要がない場合、ＭＥＭ−Ｐ１２ａとＭＥＭ−Ｃ１２ｂをＲＡＭ１２と称す。
【００３５】
操作パネル３０は、ユーザからの入力操作の受け付け並びにユーザに向けた表示をおこなう操作部であり、キーボードの他にタッチパネルを入力手段として有し、ＬＣＤ（液晶ディスプレイ）等の表示部と兼用されている。
【００３６】
ＨＤＤ又はフラッシュメモリ１５ａは、画像データ、ＯＳ４４やアプリケーション４１などの各種のプログラム、フォントデータ等を記憶する記憶手段である。本実施形態ではＨＤＤ又はフラッシュメモリ１５ａに、ハイバネーション管理プログラム２０やスナップショットが記憶されている。ハイバネーション管理プログラム２０は、メモリカード２４に記憶して配布されＨＤＤ又はフラッシュメモリ１５ａにインストールされるか、又は、サーバからダウンロードしてＨＤＤ又はフラッシュメモリ１５ａにインストールされる。なお、メモリカード２４は、例えば、ＵＳＢメモリ、ＳＤカード、マルチメディアカード、ｘＤカード等である。
【００３７】
〔デジタル複合機１００の機能ブロック〕
図３は、デジタル複合機１００の機能構成を模式的に示す図である。デジタル複合機１００は、アプリケーション４１と、ＡＰＩ（Application  Interface）と、コントロールサービス４２と、ＳＲＭ（システムリソースマネージャ）４３と、ＯＳ４４と、エンジンＩ／Ｆと、ハードウェアリソース４５と、を有する。アプリケーション４１とコントロールサービス４２を区別しない場合、コンポーネント４０という。
【００３８】
コントロールサービス４２は、アプリケーション４１からの処理要求を解釈してハードウェアリソース４５の獲得要求を発生させる。ＳＲＭ４３は、コントロールサービス４２からの獲得要求を調停する。コントロールサービス４２は、複数のサービスモジュールにより形成され、プロッタ２７、スキャナ２８等のハードウェアリソース４５を制御するＥＣＳ（エンジンコントロールサービス）４２ａと、画像メモリの取得および解放、ＨＤＤ又はフラッシュメモリ１５ａの利用、画像データの圧縮および伸張などを行うＭＣＳ（メモリコントロールサービス）４２ｂと、操作パネル３０を制御して、操作パネル３０のキー押下をキーイベントとして取得し、取得したキーに対応するキーイベント関数をＳＣＳ（システムコントロールサービス）４２ｆに送出するＯＣＳ（オペレーションパネルコントロールサービス）４２ｃと、公衆電話網を利用したファクシミリ送受信、受信したファクシリミリデータの記録、印刷、送信するファクシリミリの読み取り、等を行うＦＣＳ（ファックスコントロールサービス）４２ｄと、ネットワークに接続するアプリケーション４１に対してネットワーク側から各プロトコルに従い受信したデータを各アプリケーション４１に送出し、アプリケーション４１からネットワークを介してデータを送信するＮＣＳ（ネットワークコントロールサービス）４２ｅと、アプリケーション４１の管理、操作パネル３０の制御、システム画面 表示、ＬＥＤ表示、リソース管理、割り込みアプリの制御などを行うＳＣＳ４２ｆと、を有する。
【００３９】
ＯＳ４４は、ＵＮＩＸ（登録商標）やＬＩＮＵＸ（登録商標）などの汎用的なオペレーティングシステムであり、アプリケーション４１やコントロールサービス４２の各サービスモジュールを平行に動作させる。
【００４０】
アプリケーション４１は、あらかじめ定義された関数（ＡＰＩ）によってコントロールサービス４２に処理を要求する。アプリケーション４１は、例えば、ページ記述言語で記述された印刷対象データをラスターデータに展開し、印刷条件に従い印刷するプリンタアプリと、コピー時に読み取りから印刷までを実行するコピーアプリと、ファクシミリ用アプリケーションであるファックスアプリと、スキャナ用アプリケーションであるスキャナアプリと、ネットワークファイル用アプリケーションであるＷｅｂアプリ等である。
【００４１】
ハイバネーションサービス４６は、１つのアプリケーション４１、コントロールサービス４２の１プロセス、又は、ＯＣＳ４２ｃ若しくはＳＣＳ４２ｆと一体に構成される。図３では、ハイバネーションサービス４６はコントロールサービス４２と同じ層に記載されている。なお、ハイバネーションサービス４６は、ＣＰＵ１１がハイバネーション管理プログラム２０を実行することで実現される。
【００４２】
〔ハイバネーションの制御〕
図４は、ハイバネーションを管理するハイバネーション管理プログラム２０の機能ブロック図の一例である。図４の機能ブロックのうち、ＣＰＵ１１がハイバネーション管理プログラム２０を実行することで、スナップショット制御部５２が提供される。更に、デジタル複合機１００の状態全体を制御するシステム状態制御部５１と、ユーザ情報や設定情報などシステム内の永続化データを管理するデータ管理部５３に対して、ハイバネーション管理のための拡張機能（データ変更フラグ５７，変更管理部６１）が追加される。
【００４３】
なお、図４に示したブロック図の配置は一例であり、例えば、システム状態制御部５１はＳＣＳ４２ｆの一部、スナップショット制御部５２及びデータ管理部５３はＭＣＳ４２ｂの一部として実装してもよい。
【００４４】
システム状態制御部５１は、状態管理部５４、コンポーネント登録部５６及び通知部５５を有する。状態管理部５４は、デジタル複合機１００の状態遷移を制御する。デジタル複合機１００の状態とは、消費電力の状態と同等であり、状態管理部５４はタイマ等を利用してデジタル複合機１００の状態を遷移させる。
【００４５】
図５は、デジタル複合機１００の状態遷移図の一例を示す。デジタル複合機１００は、「通常起動中」状態、「スタンバイ」状態、「省エネ」状態、「スナップショット起動中」状態及び「スナップショット生成」状態の５つの状態を遷移する。
【００４６】
「通常起動中」とは、 電源オンからシステム起動完了までの間をいう。本実施形態では、スナップショットを展開した起動が基本で、スナップショットが生成されていないケースでのみ通常起動する。また、「スタンバイ」とは、ジョブ実行可能な状態である。
【００４７】
「通常起動中」状態から「スタンバイ」状態へは、画像形成が終了すると移行し、「スタンバイ」状態から「省エネ」状態へは、「スタンバイ」状態になってから時間が経過するか、又は、補助電源スイッチをユーザが押下すると遷移する。補助電源スイッチは、主電源とは別に搭載されたスイッチで、ユーザが「スタンバイ」状態から「省エネ」状態へ遷移させるためのスイッチである。
【００４８】
また、「省エネ」状態から「スタンバイ」状態へは、画像形成するためにＡＤＦ（Auto Document Feeder）に原稿がセットされたり、ＡＤＦが開閉されたり、ネットワーク経由で印刷データが入力されると、遷移する。状態管理部５４は、コンポーネント４０の状態を監視して、遷移条件が成立すると、一方の状態から他方の状態に遷移させる。具体的には、例えば、定着部の温度を上昇又は低減させ、及び、ＣＰＵ１１に供給されるクロックの周波数を増大又は低減させる。
【００４９】
図４に戻り、コンポーネント登録部５６は、既に利用可能なコンポーネント４０を管理すると共に、新たにインストールされたコンポーネント４０をレジストリや設定ファイルに登録する。データ管理部５３は、コンポーネント登録部５６から通知を受けたり、また、レジストリや設定ファイルを参照することで、新たなコンポーネント４０が登録されたことを検出することができる。なお、コンポーネント４０は、ＮＩＣ１８を介して他のコンピュータからＨＤＤ又はフラッシュメモリ１５ａにインストールされてもよいし、メモリカード２４に記憶された状態で配布されＨＤＤ又はフラッシュメモリ１５ａにインストールされてもよい。
【００５０】
また、通知部５５は、登録されたコンポーネント４０に対して状態遷移の通知を行う。例えば、ユーザがスタートキーを押下することでデジタル複合機１００が「省エネ」状態から「スタンバイ」状態に遷移すると、通知部５５は、例えばコピーアプリに「スタンバイ」状態になったことを通知する。これにより、コピーアプリは、原稿のスキャン、画像処理、画像形成、用紙の排出等の一連の処理を実行する。また、通知部５５が、「スナップショット起動中」状態になったことをコンポーネント４０に通知すると、コンポーネント４０は、初期化等の処理を実行し、永続記憶領域から変更のあったデータをＲＡＭ１２に読み出す。
【００５１】
スナップショット制御部５２は、スナップショット保存部５８とスナップショット展開部５９を有する。スナップショット保存部５８は、ＲＡＭ１２に記憶された情報から、作業環境を保存するためのスナップショットを生成して、ＨＤＤ又はフラッシュメモリ１５ａに記憶させる。スナップショットは圧縮されていてもよい。図５に示したように、状態管理部５４が「スタンバイ」状態から「省エネ」状態にデジタル複合機１００の状態を遷移させると、後述するポリシーに従い、スナップショット保存部５８はスナップショットを生成する。スナップショット保存部５８がスナップショットを生成する条件については後述する。また、スナップショット展開部５９は、主電源がオンになるとＨＤＤ又はフラッシュメモリ１５ａからスナップショットを読み出してＲＡＭ１２に展開する。
【００５２】
ところで、図５において、「スナップショット生成」状態から「スナップショット起動中」状態に向けて矢印が引かれているが、この矢印の遷移は実際には存在しない。この矢印の遷移は、スナップショットの生成後の主電源オフから、次に主電源をオンした場合に、システム状態制御部５１が遷移させることで、他のコンポーネントにはこの遷移が生じているかのように見える。または、他のコンポーネントには、「スナップショット生成」状態と「スナップショット起動中」状態の２つの状態が存在するのでなく、「スナップショット生成」状態から起動が完了するように見えるようにしてもよい。
【００５３】
図６は、スナップショットを利用したデジタル複合機１００の起動を模式的に説明する図の一例である。図６では、比較のため、スナップショットを利用しないデジタル複合機１００の起動（以下、「通常起動」という）についても記載されている。また、図７は、ハイバネーションを利用した起動の一例を示す図である。
【００５４】
図６に示すように、「通常起動」の場合、主電源がオンになると、ＣＰＵ１１は、例えばＢＩＯＳ (Basic Input/Output System )の示すＲＯＭのアドレスからＢｏｏｔモニタを読み出し実行する。ＢｏｏｔモニタはＯＳ４４のカーネルをＨＤＤ又はフラッシュメモリ１５ａから読み出しＲＡＭ１２に展開する。ＣＰＵ１１がカーネルを実行すると、ＯＳ４４は自動的に実行するように予め定められているプログラムであるＪａｖａ（登録商標）を起動する。Ｊａｖａ（登録商標）の起動とは、具体的にはＪａｖａＶＭの起動であり、これによりＪａｖａ（登録商標）で記述されたアプリケーション４１の動作環境が整ったことになる。ついで、ＯＳ４４は、自動的に実行するように予め定められている各種のコンポーネント４０を起動する。ここで起動するコンポーネント４０は、コンポーネント登録部５６がレジストリや設定ファイルに登録している。なお、コンポーネント４０の起動時には、それぞれ初期化をする必要があり、時間を要する。また、図示したように、ＯＳ４４、Ｊａｖａ（登録商標）、及びアプリケーション４１を起動するまでには時間を要する。
【００５５】
これに対し、図６の下段に示す、スナップショットを利用した「ハイバネーション起動」の場合、主電源がオンになると、ＣＰＵ１１は、例えばＢＩＯＳの示すＲＯＭのアドレスからＢｏｏｔモニタを読み出し実行する。Ｂｏｏｔモニタは、スナップショットをＨＤＤ又はフラッシュメモリ１５ａから読み出しＲＡＭ１２に展開する。すなわち、既に初期化などの処理が終えた状態でスナップショットをＲＡＭ１２に展開するだけでよいため、「ハイバネーション起動」の方が、ユーザが主電源をオンしてからデジタル複合機１００が利用可能になるまでの時間が非常に短い。
【００５６】
通常、ハイバネーションにより作成されるスナップショットは、ＲＡＭ１２のデータである。そのため、ハイバネーション処理を最も簡単にするには、保存したいＲＡＭ１２のデータを全てＨＤＤ又はフラッシュメモリ１５ａに退避すればよい。また、スナップショットを展開する場合は、ＨＤＤ又はフラッシュメモリ１５ａに記憶されたスナップショットをＲＡＭ１２に展開すればよい。図７の右側に示すように、ＨＤＤ又はフラッシュメモリ１５ａを例えばフラッシュメモリだけで構成することで、ディスクレス（ＨＤＤなしで）起動を可能にできる。
【００５７】
なお、本実施形態のハイバネーションにおけるスナップショットの退避では、次の点でＰＣ（パーソナルコンピュータ）が行うスナップショットの退避と異なる。ＰＣの場合、ＰＣは中断する直前の状態をハイバネーションイメージとして毎回保存しており、起動時に読み出すスナップショットは毎回異なる。これに対し、本実施形態のデジタル複合機１００は、一度作成したスナップショットを毎回、起動時に利用することで、起動時間の短縮を図っている。
【００５８】
図８は、スナップショット保存部５８がスナップショットを保存する手順を示すシーケンス図の一例である。システム状態制御部５１が、「スタンバイ」状態から「省エネ」状態への遷移させる場合、通知部５５はコンポーネント４０に状態遷移を通知する（Ｓ１）。
【００５９】
コンポーネント４０は、「省エネ」状態に遷移するためハードウェアリソースを制御する（Ｓ２）。具体的には、プロッタ２７、スキャナ２８、その他ハードウェアリソース２９との接続（例えば、その他ハードウェアリソース２９と定期的な通信を確保すること）を切り、ＮＩＣ１８をオフにしてネットワークとの接続を切り（例えば、NIC１８への電源供給を停止する）、タイマー処理（マルチタスクのタイムスライスのための時間計測）を停止する。
【００６０】
このように、状態の遷移をコンポーネント４０に通知して、コンポーネントが状態遷移の通知に対する処理をきちんと実装しておくだけで、システムに対して新たなコンポーネントを容易に追加することができる。追加されたコンポーネントがシステム全体の振る舞いに影響を与えることがない。
【００６１】
システム状態制御部５１は、全てのコンポーネント４０がこの制御を終了させるまで所定時間（例えば数１００ミリ秒〜数秒）待機すると、スナップショット保存部５８にスナップショットの生成を要求する（Ｓ３）。または、システム状態制御部５１は、全てのコンポーネントからのハードウェアリソース制御完了通知を待ち受けるようにしてもよい。
所定時間だと後処理が完了していない可能性があるので、こちらの方がより好ましい場合がある。
【００６２】
スナップショットの生成の要求を取得したスナップショット保存部５８は、スナップショットを生成しＨＤＤ又はフラッシュメモリ１５ａに記憶する（Ｓ４）。
【００６３】
図９は、スナップショット展開部５９がスナップショットを展開してデジタル複合機１００が起動する手順を示すシーケンス図の一例である。図9はステップＳ１４に本実施形態の特徴部を含む。
【００６４】
図６で説明したように、主電源がオンになるとスナップショット展開部５９（Ｂｏｏｔモニタに対応する）がＨＤＤ又はフラッシュメモリ１５ａからスナップショットを読み出し、ＲＡＭ１２に展開する（Ｓ１１）。
【００６５】
展開が終了するとスナップショット展開部５９はシステム状態制御部５１に起動を通知する（Ｓ１２）。システム状態制御部５１は状態遷移をコンポーネント４０に「スナップショット起動中」状態への遷移を通知する（Ｓ１３）。
【００６６】
コンポーネント４０は、「スナップショット起動中」状態から「スタンバイ」状態に遷移するためハードウェアリソースを制御する（Ｓ１４）。具体的には、プロッタ２７、スキャナ２８、その他ハードウェアリソース２９を初期化して接続し、ＮＩＣ１８に通電してネットワークと接続し、また、タイマー処理（マルチタスクのタイムスライスのための時間計測など）を開始する。また、ＲＡＭ１２にスナップショットが展開されたので、コンポーネント４０は永続記憶領域からデータを読み直す。ＣＰＵ１１のレジスタも電源オフ前の状態に復帰される。
【００６７】
図４に戻り、データ管理部５３は変更管理部６１とデータベース６２を有する。変更管理部６１は、データの変更に関する情報、特にデータ変更管理表６３を記憶する。データベース６２は、例えばＨＤＤ又はフラッシュメモリ１５ａ、ＮＶＲＡＭ１５ｂに実装され、各種のデータを記憶している。すなわち、データベース６２が永続記憶領域に対応する。以下、データベース６２をデータベース（永続記憶領域）６２と記載する。
【００６８】
なお、データは、コンポーネント４０が使用するデータであり、内容は多様である。データベース（永続記憶領域）６２のデータは、コンポーネント４０が直接更新することで変更が生じる場合と、ＲＡＭ１２からデータを書き戻すことで変更が生じる場合がある。本実施形態では、主に後者によるデータ変更があっても、ＲＡＭ１２とデータベース（永続記憶領域）６２の齟齬を防止することができる。
【００６９】
コンポーネント４０が使用するデータ及びその変更については次述するが、データは、例えば、ユーザ情報のインデックス、ハードウェアの制御用のパラメータ、カウンタ、ログ等である。
【００７０】
〔スナップショットを生成する条件〕
続いて、本実施形態のデジタル複合機１００の特徴である、スナップショットを生成する条件について説明する。スナップショット保存部５８は、次のポリシーに従い、スナップショットを生成するか否かを決定する。スナップショットを生成するポリシーと生成しないポリシーの両方を満たすデータの変更については、いずれかに分類するよう予め定めておけばよい。
・変更に伴いデータベース（永続記憶領域）６２を更新するためのデータサイズが大きく、又は、変更に伴う更新頻度が小さい変更に対してはスナップショットを生成する。
・変更に伴いデータベース（永続記憶領域）６２を更新するためのデータサイズが小さいか、又は、変更に伴う更新頻度が大きい変更に対してはスナップショットを生成しない。
【００７１】
生成する例１：ユーザ情報のインデックスをＲＡＭ１２に読み出すコンポーネント４０に変更があった場合。このようなデータ管理系のコンポーネント４０では、検索速度を向上させるために、ユーザ情報をＲＡＭ１２にキャッシュすることが多い。登録可能なユーザ数は10000件といった単位になるため、キャッシュされたデータは非常に大きい。また、ユーザ情報の変更は、部署変更や人員追加などがあった場合に限られるので、変更の頻度は月に数回レベルと小さい。ユーザの追加・削除が行われた際にはユーザ情報の変更が必要となるが、起動時にユーザ情報を読み直すには多くの処理時間を要する。
【００７２】
生成する例２：プロッタ２７やスキャナ２８などのエンジン制御用の大量のパラメータを保持しているコンポーネント４０に変更があった場合。「省エネ」状態になるとハードウェアリソースの電源を切るため、「省エネ」状態から復帰する際には必ずパラメータの初期化が必要である。このパラメータ数は１００を超え、これら全てを毎回データベース（永続記憶領域）６２から読み出すと時間がかかるため、ＲＡＭ１２にキャッシュすることが多い。なお、このパラメータについても変更頻度は大きくない。
【００７３】
生成しない例１：デジタル複合機１００は、１枚印刷が完了するごとに複数のカウンタをカウントアップしていく必要がある。カウンタはサイズが小さく、更新頻度の高いデータである。スナップショット保存の頻度を減らすことができるので、フラッシュメモリの寿命を延ばすことができる。
【００７４】
生成しない例２：操作系のログや、デバッグ用途のログは、1回のジョブの中でもかなりのデータ量が記録される。通常、ログは永続記憶領域に記録されるが、デジタル複合機１００の性能が低下することを抑制するため、ＲＡＭ１２にキャッシュすることが多い。この場合、ＲＡＭ１２にキャッシュされたログ（データ）は、「省エネ」状態に移行する際に(スナップショット保存前に)、デジタル複合機１００が、必ず永続記憶領域に書き出す。すなわち、ＲＡＭ１２のログは永続記憶領域に書き込み済みとなり、スナップショット起動した際にはＲＡＭ１２にログはないことになる。こうすることで、スナップショットを生成しなくても、ログの記録が漏れることを防止できる。
【００７５】
変更管理部６１には、コンポーネント４０が使用するデータを管理するデータ変更管理表６３が登録される。図１０は、変更管理部６１が参照するデータ変更管理表６３の一例を示す。図１０にはコンポーネント４０のコンポーネントＩＤ、コンポーネント４０が更新するデータのデータＩＤ(そのコンポーネント４０が読み直すべきデータを特定するための識別子)、保管場所(HDD／NVRAM／フラッシュメモリなどの不揮発メモリの区別や、データベース（永続記憶領域）６２／ＸＭＬファイルなどファイル形式の区別)、データのサイズが登録されている。したがって、変更管理部６１は各データＩＤのファイルが更新されることで、変更を検出することができる。なお、保管場所が永続記憶領域（すなわちデータベース６２）となる。
【００７６】
コンポーネント４０は、自ら変更したデータに関して（又は、データベース（永続記憶領域）６２より受けた変更通知に応じて）、そのデータをＲＡＭ１２にキャッシュしているためスナップショット起動時に読み直しが必要となるかどうかを判断する(キャッシュしていないデータは読み直し不要である)。コンポーネント４０は、読み直しが必要なデータを変更すると、変更管理部６１に対して、変更データの登録を依頼する。変更管理部６１は、図１０のデータ変更管理表６３を生成する。
【００７７】
変更管理部６１は検出したコンポーネント４０の変更の通知をシステム状態制御部５１に通知する。システム状態制御部５１は、スナップショットを生成して保存するか否かを判定する。コンポーネント４０がデータを変更するタイミングと、スナップショットを生成するタイミングは異なることが多いので、システム状態制御部５１はデータ変更フラグ５７を利用する。
【００７８】
このため、システム状態制御部５１は、不揮発性の補助記憶装置(NVRAM、ＨＤＤ、フラッシュメモリなど)にデータ変更の有無を記憶する領域(データ変更フラグ５７やデータ変更フラグ５７用のファイルを記憶する領域)を有する。フラグの初期値はオフである（オフ：データの変更なし、オン：データの変更有り）。システム状態制御部５１は変更管理部６１からの通知を受け取ると、このフラグをオンにする。無条件にオンにするのではなく、図１０のデータ変更管理表６３に登録されたデータの変更を参照して、条件を満たす場合にデータ変更フラグ５７をオンにするようにしてもよい。この条件は、ポリシーに従い定められるので、例えばデータのサイズの合計が閾値より大きい、又は、所定期間の更新頻度が閾値未満等が条件となる。データベース（永続記憶領域）６２に変更があった場合には、スナップショットを生成することができるので、起動後にデータベース（永続記憶領域）６２からデータを読み直す頻度を低減でき、起動時間が削減できる。
【００７９】
そして、システム状態制御部５１は、「省エネ」状態への移行時に、データ変更フラグ５７を参照する（変更管理部６１へ問い合わせてもよい)。データ変更フラグ５７がオンの場合、システム状態制御部５１は、スナップショット制御部５２にスナップショットの生成を要求する。なお、システム状態制御部５１は、スナップショットの生成を要求すると、又は、スナップショット保存部５８から生成した旨の通知を受けると、データ変更フラグ５７をオフにリセットする。
【００８０】
〔スナップショットを生成する条件の別の例１〕
図１１は、コンポーネント４０の追加、削除、更新によるスナップショットの生成を模式的に説明する図の一例である。ＲＡＭ１２のデータの変更だけでなく、コンポーネント４０そのものがインストール又はアンインストールされる場合がある。例えば、アンインストールしたコンポーネント４０のメモリイメージがスナップショットに含まれたままだと、ＨＤＤ又はフラッシュメモリ１５ａからはアプリケーション４１の実行に必要なプログラムやデータが削除されているにも関わらず、起動時にスナップショットがＲＡＭ１２に展開されてしまう。すなわち、アンインストールしたはずのアプリケーション４１が起動している状態となり、ユーザに違和感を与えたり、システムの不具合の原因となる。
【００８１】
このような不都合を避けるために、ソフトウェア構成に変更が発生した場合、スナップショット保存部５８は必ずスナップショットを生成して保存する。具体的には、上記のコンポーネント登録部５６が、コンポーネント４０の追加/削除/更新を検出して、レジストリや設定ファイルに記録するので、コンポーネント登録部５６はデータ管理部５３に追加/削除/更新の変更を管理するよう要求する。なお、コンポーネント４０の追加/削除/更新にはバージョンアップも含まれる。スナップショットを生成することで、コンポーネント４０が追加、削除又は更新されても、ハイバネーションを利用する限り起動時間は短いままである。
【００８２】
〔スナップショットを生成する条件の別の例２〕
これまでは、コンポーネント（ソフトウェア）４０の変更を例に説明したが、ハード的な変更が生じてもスナップショットを生成することが好ましい場合がある。図１２は、ハードウェアの追加、削除、更新によるスナップショットの生成を模式的に説明する図の一例である。デジタル複合機１００の電源をオフにしている間に、給紙トレイが取り外されたり、ユーザが新たに購入したフィニッシャが接続されるようなケースがある。
【００８３】
デジタル複合機１００が、こうした構成情報もソフトウェアがＲＡＭ１２にキャッシュしている場合がある。新しいハードウェアをデジタル複合機１００に接続した後、スナップショットを展開すると、ＲＡＭ１２の内容とハードウェアの構成の間に矛盾が生じる。
【００８４】
また、例えばユーザインターフェイスに表示されるコンポーネント４０においては、スナップショットに構成変更前の表示内容が保持されている。トナーや用紙などのサプライ残量に関しても同様に、コンポーネント４０がＲＡＭ１２にキャッシュしたり、ユーザインターフェイス上にアイコン表示を行っていたりする。
【００８５】
このようなハードウェア情報に関しては、原則的にデジタル複合機１００の起動時に更新すべきものである。ハードウェアの構成に関しては、変更される頻度は少ないため、起動ごとに関連する全てのキャッシュを作り直すのではなく、構成情報に変更があった場合にのみスナップショット保存部５８がスナップショットを生成する。
【００８６】
システム状態制御部５１は、ハードウェアの構成の更新を検出できるので、起動時に、図１２に示すように、スナップショットの内容とハードウェア構成の違いをチェックする。違いがあれば、システム状態制御部５１はスナップショット保存部５８にスナップショットを生成するよう要求する。これにより、スナップショットが生成される。また、起動時間を短縮することができる。
【００８７】
一方、ハード的な変更が微少であれば、スナップショットを生成する必要性は低い。図１３は、ハードウェアの追加、削除、更新によるスナップショットの生成を模式的に説明する図の一例である。図１２と図１３は、スナップショット展開部５９がスナップショットを展開し、システム状態制御部５１がハードウェア構成をチェックするところまでは同じだが、図１３では、チェックの結果、差異が小さければ、スナップショット保存部５８はスナップショットを生成しない。例えば、用紙トレイの用紙種別が変更されていた場合、機器状態の再設定で簡単に補正できるので（ＲＡＭ１２に記憶されている用紙種別を修正すればよい。）、ハイバネーションイメージの再作成までは必要ない。
【００８８】
また、サプライ残量は、時々刻々と変化していくものであるため、サプライ残量を正確にスナップショットに反映するためには、スナップショットの生成頻度が大きくなってしまう。したがって、サプライ残量が変更されてもスナップショットは生成せず、起動ごとに用紙トレイ等のハードウェアから読み直すことが好ましい。
【００８９】
同様に、ユーザインターフェイスのアイコンでは、残量のある範囲に対して同一のアイコンが割り当てられるので(例えば、25%ごとに目盛りが増える)、サプライ残量が変更されてもスナップショットは生成しない。この場合、アイコン変更のタイミングでスナップショットを生成する。すなわち、スナップショット保存部５８は、ハードウェア構成の変化がＲＡＭ１２のデータに変更を生じさせた場合にのみスナップショットを生成できる。
【００９０】
このような、アイコンの変更があった場合、ＲＡＭ１２に変更が生じるので変更管理表６３にデータの変更が記録される。したがって、アイコン変更のタイミングは、変更管理部６１からシステム状態制御部５１が通知を受けることで検出できる。
【００９１】
図１４は、スナップショット制御部５２が、スナップショットを生成して保存する手順を示すフローチャート図の一例である。図１４のフローチャート図は、例えば、デジタル複合機１００が「省エネ」状態に遷移する条件が成立するとスタートする。「省エネ」状態への遷移を利用することで、スナップショット生成のためにシステム実行を中断してユーザを待たせてしまうことを防ぐことができる。また、データ変更が連続して行われるケースにおいて、スナップショット生成の回数が増加することを防ぐことができる。
【００９２】
まず、システム状態制御部（状態管理部５４）５１は、「省エネ」状態への移行時に、データ変更フラグ５７を参照する（Ｓ１０）。
【００９３】
データ変更フラグ５７がオフの場合（Ｓ２０のＮｏ）、変更に伴いデータベース（永続記憶領域）６２を更新するためのデータサイズが小さいか、又は、更新頻度が大きい変更が生じたことになるので、図１４の処理はそのまま終了する。
【００９４】
データ変更フラグ５７がオンの場合（Ｓ２０のＹｅｓ）、変更に伴いデータベース（永続記憶領域）６２を更新するためのデータサイズが大きく、又は、更新頻度が小さい変更が生じたことになるので、システム状態制御部５１は、デジタル複合機１００を「スナップショット生成」状態に遷移させる（Ｓ３０）。
【００９５】
スナップショット保存部５８は、システム状態制御部５１からスナップショットの生成の要求を受け、スナップショットを生成しＨＤＤ又はフラッシュメモリ１５ａに記憶する（Ｓ４０）。そして、システム状態制御部５１は、スナップショット保存部５８からスナップショットを生成した旨の通知を受けると、データ変更フラグ５７をオフにリセットする（Ｓ５０）。
【００９６】
そして、システム状態制御部５１は、デジタル複合機１００を「省エネ」状態に遷移させる（Ｓ６０）。以上の処理により、デジタル複合機１００は、変更に伴いデータベース（永続記憶領域）６２を更新するためのデータサイズが大きく、又は、変更に伴う更新頻度が小さい変更に対してのみスナップショットを生成することができる。
【００９７】
図１５は、スナップショット展開部５９が、スナップショットを展開する手順を示すフローチャート図の一例である。図１５のフローチャート図は、例えば、主電源スイッチがオンになるとスタートする。
【００９８】
主電源スイッチがオンになると、システム状態制御部５１がデジタル複合機１００を「スナップショット起動中」状態に遷移させる（Ｓ１１０）。そして、システム状態制御部５１(状態管理部５４)は、起動時にデータ変更フラグ５７を参照する（Ｓ１２０）。
【００９９】
データ変更フラグ５７は初期状態が「オフ」であり、また、スナップショットが生成されると「オフ」になる。このため、データ変更フラグ５７が「オン」の場合（Ｓ１３０のＹｅｓ）、スナップショット保存部５８がスナップショットを生成すべきであったのに、生成がされないまま主電源が切られたことになる。すなわち、ユーザが性急に主電源スイッチをオフにしたり、何らかの不具合が生じたことが考えられる。また、スナップショットが古いため、データの変更が反映されていないことになる。
【０１００】
そこで、システム状態制御部５１は、状態遷移をコンポーネント４０に通知すると共に、全てのデータをデータベース（永続記憶領域）６２から読み直すようにコンポーネント４０に通知する（Ｓ１４０）。なお、この通知は、図９のステップＳ１３に含まれることになる。全てのデータとは、変更のあったデータはもちろん、コンポーネントが利用する全てのデータである。
【０１０１】
ついで、コンポーネント４０は、データベース（永続記憶領域）６２から全てのデータを読み直す（Ｓ１５０）。何らかの不具合が生じても通常起動よりは高速に起動することができる。
【０１０２】
また、システム状態制御部５１は、「スタンバイ」状態への遷移条件が成立するとデジタル複合機１００を「スタンバイ」状態に遷移させる（Ｓ１６０）。なお、起動後すぐに自動的に「省エネ」状態へ遷移させて、スナップショット生成を行うようにしてもよい。確実にスナップショットを生成することができる。
【０１０３】
なお、スナップショットが生成がされないまま主電源が切られた場合（すなわち、データ変更フラグ５７がオンの場合）、スナップショット起動ではなく、通常起動するようにしてもよい。特に、ソフトウェア構成の変更があった場合、単純なデータベースの読み直しだけでは正常な状態にすることができないため、複雑な処理が必要になる。そのため、このような条件でのスナップショット生成が実行されなかったことを示すフラグを別に設けて、そのフラグが有効になっている場合には通常起動するようにしてもよい。
【０１０４】
ステップＳ１３０に戻り、データ変更フラグ５７が「オフ」の場合（Ｓ１３０のＮｏ）、スナップショット保存部５８がスナップショットを生成したことを意味する。この場合、スナップショットを展開することで、更新すべきデータはＲＡＭ１２に読み出されたことになる。したがって、システム状態制御部５１は状態遷移をコンポーネント４０に通知するだけでよい（Ｓ１７０）。なお、この通知は、図９のステップＳ１３に含まれることになる。
【０１０５】
一方、スナップショットはデータベース（永続記憶領域）６２のデータが更新されても生成されない場合があるので、コンポーネント４０はそのデータをデータベース（永続記憶領域）６２からＲＡＭ１２に読み直す（Ｓ１８０）。読み出すべきデータは、スナップショットを生成しない変更があったデータであるので、コンポーネント４０は図１０のデータ変更管理表６３を参照し、登録されているデータＩＤのデータ（スナップショットが生成されないデータ）を読み直す。
【０１０６】
以上の処理により、コンポーネント４０は、スナップショットが生成されていないデータのみをデータベース（永続記憶領域）６２から読み直せばよいことになるので、一般的なＰＣのハイバネーションより時間はかかっても、短い起動時間でデジタル複合機１００を起動できる。フラッシュメモリを利用した場合も、ポリシーにより定められたデータの変更があった場合にのみスナップショットを保存するので、フラッシュメモリの耐久性に影響を及ぼすことを低減できる。
【０１０７】
〔データ変更管理表６３〕
図１６はデータ変更管理表６３への登録手順を説明するシーケンス図の一例である。
コンポーネント４０は、プログラムの実行によりデータベース（永続記憶領域）６２のデータを変更する（Ｓ２１０）。変更の際、コンポーネント４０は、変更管理部６１に変更したデータを通知する（Ｓ２２０）。登録するのは、ＲＡＭ１２にデータがキャッシュされているデータの変更のみである。データがキャッシュされるか否かを、コンポーネント４０が指定できる場合は、コンポーネント４０にとって既知である。既知でない場合、コンポーネント４０は例えばＯＳ４４に問い合わせる。通知する情報は、図１０に示したとおりである。
【０１０８】
変更管理部６１は、コンポーネント４０から通知されたデータの変更に関する情報をデータ変更管理表６３に登録する（Ｓ２３０）。
【０１０９】
また、データベース（永続記憶領域）６２は、変更のあったデータを、そのデータを変更したコンポーネント４０以外のコンポーネント４０に通知する（Ｓ２４０）。この通知が必要なのは、他のコンポーネント４０においても、変更されたデータをキャッシュしている場合があるからである。
【０１１０】
データベース（永続記憶領域）６２から通知を受けたコンポーネント４０は、変更したデータを変更管理部６１に通知する（Ｓ２５０）。登録するのは、ＲＡＭ１２にデータがキャッシュされているデータの変更のみである。
【０１１１】
変更管理部６１は、コンポーネント４０から通知されたデータの変更に関する情報をデータ変更管理表６３に登録する（Ｓ２６０）。
【０１１２】
〔スナップショットの生成の変形例〕
図１４では、システム状態制御部５１がデータ変更フラグ５７を参照して、スナップショットを生成するか否かを判定する手順を説明したが、データ変更フラグ５７を参照することなく、スナップショットを生成するか否かを判定することができる。
【０１１３】
図１７は、システム状態制御部５１がスナップショットを生成して保存するか否かを判定する手順を示すフローチャート図の一例を示す。図１７のフローチャート図は、例えば、デジタル複合機１００が「省エネ」状態に遷移する条件が成立するとスタートする。
【０１１４】
まず、システム状態制御部(状態管理部５４)５１は、「省エネ」状態への移行時に、データ変更管理表６３を参照する（Ｓ３１０）。そして、データID毎にデータサイズを読み出す。
【０１１５】
システム状態制御部５１は、データサイズの合計と閾値を比較し、データサイズの合計が閾値を超えているか否かを判定する（Ｓ３２０）。データサイズの合計は、変更されたデータの大きさを示すので、スナップショットを生成するか否かを判定する指標となる。サイズを指標とすることで、ＲＡＭ１２にデータを読み出す時間を一定時間に抑えられ、起動時間も一定時間を超えて増加することをなくすことができる。
【０１１６】
データサイズの合計が閾値以下の場合（Ｓ３２０のＮｏ）、スナップショットを生成する必要はないので図１７の処理はそのまま終了する。
【０１１７】
データサイズの合計が閾値を超えている場合（Ｓ３２０のＹｅｓ）、スナップショットを生成する必要があるので、システム状態制御部５１はデジタル複合機１００を「スナップショット生成」状態に遷移させる（Ｓ３３０）。システム状態制御部５１はスナップショット制御部５２にスナップショットの生成を要求する。
【０１１８】
スナップショット保存部５８は、スナップショットを生成しＨＤＤ又はフラッシュメモリ１５ａに記憶させる（Ｓ３４０）。スナップショットを生成するとデータ変更管理表６３は不要になるので、スナップショット保存部５８は、スナップショットを生成すると、変更管理部６１にデータ変更管理表６３をクリアするよう要求する（Ｓ３５０）。
【０１１９】
そして、システム状態制御部５１は、スナップショット保存部５８から生成した旨の通知を受けると、デジタル複合機１００を「省エネ」状態に遷移させる（Ｓ３６０）。
【０１２０】
以上の処理により、スナップショット保存部５８は、データ変更フラグ５７を用いなくても、スナップショットを生成することができる。
【０１２１】
なお、ステップＳ３２０において、スナップショット生成の判断において、単純にデータサイズの合計を閾値と比較するのではなく、保管場所に応じた重み(係数)を掛け合わせた上で合計してもよい。この係数には、例えば、読み出し時間(データ形式の構文解析を含む)に比例し、記憶装置の書き換え可能回数に比例する値を使うとよい。読み出し時間が長いと起動時間が長くなるので重み付けを大きくすることで、スナップショットを生成しやすくなり、記憶装置の書き換え可能回数が小さいと書き換えが耐久性に与える影響が大きいので、重み付けを小さくすることで、スナップショットを生成しにくくすることができる。
【０１２２】
同様に、データ変更フラグ５７を用いずにデジタル複合機１００を起動させる手順を図１８のフローチャート図を用いて説明する。
【０１２３】
図１８は、デジタル複合機１００が、データベース（永続記憶領域）６２からキャッシュを読み直すか否かを判定する手順を示すフローチャート図の一例である。図１８のフローチャート図は、例えば、主電源スイッチがオンになるとスタートする。
【０１２４】
主電源スイッチがオンになると、システム状態制御部５１はデジタル複合機１００を「スナップショット起動」状態に遷移させる。また、これまで説明したように、システム状態制御部５１は、コンポーネント４０に、状態遷移を通知する。
【０１２５】
システム状態制御部５１から通知を受けた各コンポーネント４０は、変更管理部６１に、そのコンポーネント４０がＲＡＭ１２にキャッシュするデータに対する変更が登録されているかどうかを問い合わせる。問い合わせを受けて、変更管理部６１はデータ変更管理表６３を参照し、データ変更管理表６３における登録有無を調べてその結果をコンポーネント４０に返す（Ｓ４１０）。
【０１２６】
各コンポーネント４０は変更が登録されていた場合のみ（Ｓ４２０のＹｅｓ）、データベース（永続記憶領域）６２からデータを読み直す。データ変更管理表６３は、スナップショットが生成されるとクリアされるので（図１７のＳ３５０）、変更管理部６１がデータ変更管理表６３を参照できるということは、スナップショットが生成されていない場合である。このため、データ変更管理表６３にデータの変更が登録されている場合（Ｓ４２０のＹｅｓ）、スナップショットを展開しても変更が反映されないので、コンポーネント４０は変更のあったデータをデータベース（永続記憶領域）６２から読み直す（Ｓ４３０）。データ変更管理表６３がクリアされている場合（Ｓ４２０のＮｏ）、スナップショットを展開することで変更が反映されたことになるので、コンポーネント４０は変更のあったデータをデータベース（永続記憶領域）６２から読み直す必要がない。
【０１２７】
なお、図１８では、変更が発生したか否かをデータ変更管理表６３により判定したが、例えば変更管理部６１が、起動時にキャッシュしているデータのチェックサムと、データベース（永続記憶領域）６２のチェックサムを比較することで、変更の有無を判別するようにしてもよい。
【０１２８】
〔データベース（永続記憶領域）６２の記録フォーマット〕
これまで、データベース（永続記憶領域）６２の記録フォーマットについて言及していなかったが、データベース（永続記憶領域）６２のデータが、汎用のデータベース管理システム（ＤＢＭＳ）で管理されていたり、ＸＭＬファイル等の構造化言語で記述されている場合、コンポーネント４０がデータベース（永続記憶領域）６２からデータを読み出すには多くの時間を要する。これは、データベース（永続記憶領域）６２のqueryやＸＭＬファイルの構文解析のためである。
【０１２９】
しかし、起動時間を短縮するには、データベース（永続記憶領域）６２からのデータの読み直し時間を短縮する必要がある。そこで、データが変更された際に、より効率的に読み出し可能な別形式でＨＤＤ又はフラッシュメモリ１５ａにデータを保存しておくとよい。例えば、ＲＡＭ１２の内容をそのままバイナリ形式で保存する（いわゆるメモリダンプする）。Java言語で記述されたアプリケーション４１であれば、オブジェクト直列化（オブジェクトとそこから参照されているオブジェクトを、バイトストリームにコード化する）により保存してもよい。
【０１３０】
〔ＲＡＭ１２以外のイメージ（スナップショット）の生成〕
また、ハイバネーションにより生成されるスナップショットは、揮発性のメモリであるＲＡＭ１２の内容であることが一般的であるが、ＲＡＭ１２以外の内容からスナップショットを生成してもよい。
【０１３１】
図１９は、ＮＶＲＡＭ１５ｂの内容を含むスナップショットの一例を示す図である。例えば、コンポーネント４０の追加など、スナップショットを生成する条件が成立すると、スナップショット保存部５８は、ＮＶＲＡＭ１５ｂの内容をＲＡＭ１２にコピーする。そして、スナップショット保存部５８は、ＮＶＲＡＭ１５ｂの内容がコピーされたＲＡＭ１２からスナップショットを生成する。こうすることで、ＮＶＲＡＭ１５ｂの内容もスナップショットに含むことができる。
【０１３２】
また、ＨＤＤ又はフラッシュメモリ１５ａの内容を含むスナップショットを生成してもよい。図２０は、ＨＤＤ又はフラッシュメモリ１５ａの内容を含むスナップショットの一例を示す図である。ＨＤＤ又はフラッシュメモリ１５ａの容量が増強されれば、それまでＲＡＭ１２を作業メモリにしていたコンポーネント４０は、ＨＤＤ又はフラッシュメモリ１５ａにデータを移動して又は作業メモリを大きくしてプログラムを実行することができる。この場合、ＨＤＤ又はフラッシュメモリ１５ａにもコンポーネント４０のデータが存在することになるので、スナップショット保存部５８はＲＡＭ１２だけでなくＨＤＤ又はフラッシュメモリ１５ａの一部からスナップショットを生成する。ＨＤＤ又はフラッシュメモリ１５ａの全てをスナップショットにすることは困難なので、スナップショット保存部５８はコンポーネント４０からＨＤＤ又はフラッシュメモリ１５ａのうち使用しているアドレスを検出する。
【０１３３】
以上説明したように、スナップショットを生成する頻度を制限することで、フラッシュメモリの耐久性を延ばすことができる。また、スナップショットを生成せずにデジタル複合機１００の電源をオフにしても、起動時に、コンポーネント４０が変更のあったデータのみをデータベース（永続記憶領域）６２から読み出すので、起動時間を短縮することができる。また、ＲＡＭ１２とデータベース（永続記憶領域）６２の矛盾を解消できる。
【符号の説明】
【０１３４】
１２        ＲＡＭ
１２ａ      ＭＥＭ−Ｐ
１２ｂ      ＭＥＭ−Ｃ
１５ａ      ＨＤＤ  ｏｒ  フラッシュメモリ
１５ｂ      ＮＶＲＡＭ
４０        コンポーネント
４１        アプリケーション
４２        コントロールサービス
５１        システム状態制御部
５２        スナップショット制御部
５３        データ管理部
５７        データ変更フラグ
６１        データ変更管理表
１００      デジタル複合機
【先行技術文献】
【特許文献】
【０１３５】
【特許文献１】特開２００２−３２４０１２号公報
【図１】
2010218399.tif 000003
【図２】
2010218399.tif 000004
【図３】
2010218399.tif 000005
【図４】
2010218399.tif 000006
【図５】
2010218399.tif 000007
【図６】
2010218399.tif 000008
【図７】
2010218399.tif 000009
【図８】
2010218399.tif 000010
【図９】
2010218399.tif 000011
【図１０】
2010218399.tif 000012
【図１１】
2010218399.tif 000013
【図１２】
2010218399.tif 000014
【図１３】
2010218399.tif 000015
【図１４】
2010218399.tif 000016
【図１５】
2010218399.tif 000017
【図１６】
2010218399.tif 000018
【図１７】
2010218399.tif 000019
【図１８】
2010218399.tif 000020
【図１９】
2010218399.tif 000021
【図２０】
2010218399.tif 000022