画像処理装置、休止方法および復帰方法
【課題】休止状態への移行および休止状態からの復帰を迅速に実現することができる画像処理装置、休止方法および復帰方法を提供する。
【解決手段】画像処理装置100は、休止状態への移行要求に応答して、実行中のアプリケーション手段132,134に対して停止を通知する通知手段130と、休止状態への移行要求に対応して、主記憶装置の退避可能な1以上の区画内の情報をディスク型記憶装置26に退避するメモリ管理手段124と、主記憶装置のスナップショットであってディスク型記憶装置26に退避された情報による情報量が削減された当該スナップショットを、不揮発性記憶装置24が提供する領域を含む記憶領域に作成する作成手段122と、スナップショットの作成が完了した後、主記憶装置への電力供給を切断するリレー手段とを含む。
【解決手段】画像処理装置100は、休止状態への移行要求に応答して、実行中のアプリケーション手段132,134に対して停止を通知する通知手段130と、休止状態への移行要求に対応して、主記憶装置の退避可能な1以上の区画内の情報をディスク型記憶装置26に退避するメモリ管理手段124と、主記憶装置のスナップショットであってディスク型記憶装置26に退避された情報による情報量が削減された当該スナップショットを、不揮発性記憶装置24が提供する領域を含む記憶領域に作成する作成手段122と、スナップショットの作成が完了した後、主記憶装置への電力供給を切断するリレー手段とを含む。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複合機などの画像処理装置に関し、より詳細には、休止状態への移行および休止状態からの復帰を迅速に実現することができる画像処理装置、休止方法および復帰方法に関する。
【背景技術】
【0002】
近年、デジタル複合機では、高機能化が進み、コピー、プリント、スキャナ、ファクシミリ、ネットワークファイル機能などの諸機能が追加されるにつれ、それに伴い起動時間が長期化する傾向にある。
【0003】
従来より、コンピュータ機器の起動時間を短縮するための技術としては、電源を切断する際に、システムメモリおよびシステム内ハードウェアのレジスタの内容を含む作業環境情報(以下、スナップショットという)をハードディスクに退避し、電源投入時にスナップショットをシステムメモリに復帰する機能、いわゆるハイバネーション機能が知られており、この機能を複合機に適用することも試みられている(特開2002−324012号公報:特許文献1)。
【0004】
特許文献1は、複数のユーザ毎の作業環境に対応したハイバネーション退避および復帰処理が行える情報処理システムを提供することを目的として、デジタル複合機の起動時にオペレーティング・システムがいずれのハイバネーション領域を用いて起動するかをユーザに指定させ、この指定されたハイバネーション領域の情報を調べ、前回のオペレーティング・システムの終了がハイバネーション割り込みによって終了していた場合、その指定されたハイバネーション領域の情報を用いて復帰処理するデジタル複合機が開示されている。
【0005】
また特開平9−44417号公報(特許文献2)は、メインメモリに常駐すべきコードやデータを格納したメモリ常駐データ領域であるか、またはハードディスクとの間で適宜入れ替え可能なコードやデータを格納した非メモリ常駐データ領域であるかを管理し、給電停止の際には、メインメモリのうちメモリ非常駐データ領域の内容を先に、メモリ常駐データ領域の内容を後からハードディスクに格納することを特徴とする情報処理システムを開示する。
【0006】
特許文献2の技術では、ハイバネーションに遷移する時にメインメモリ中のメモリ非常駐データを前もってハードディスクドライブに退避、つまりスワップアウトして、次いでメモリ常駐データをハードディスクに格納する。ウェイクアップ時には、メモリ常駐データのみをメインメモリにリストアすれば、システムはタスクを再開することができるため、これによりウェイクアップ時の高速化を図ろうというものである。
【0007】
また特開2003−85041号公報(特許文献3)は、機器を高速に起動する目的で、キャッシュメモリを不揮発メモリとし、不揮発メモリにキャッシュされたデータを使うディスクキャッシュシステムであって、HDDのデータをキャッシュした不揮発メモリから起動時にデータを読み込むことにより、HDDのスピンアップ時間を待たずに起動処理を実行するディスクキャッシュシステムを開示する。特許文献3の技術によれば、HDDのスピンアップ前から起動処理を開始できるので、スピンアップ時間が起動時間に与える影響をある程度回避することができる。
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、上述した特許文献1および特許文献2に開示される従来技術では、スナップショットイメージは、通常、ハードディスクに退避されるため、復帰時には、ハードディスクのスピンアップを完了させなければならず、起動時間の短縮には限界があった。上記特許文献1には、半導体記憶装置についての言及があるが、フラッシュSSD(Solid State Drive)などの半導体記憶装置は、ハードディスクよりも記憶容量の単価が一般に高く、充分なスナップショット領域を確保するために大容量のSSDを採用すると、HDDの容量を増加させるよりも装置のコストアップにつながる。また、特許文献1の技術のように、ユーザ毎にハイバネーション領域を設けることを想定すると、さらにコストアップとなる。
【0009】
一方、SSD内に充分なスナップショット領域が確保できない場合、SSDに確保されたスナップショット領域の容量を超えた分はHDD内に保存されることになる。この場合、スピンアップ完了前にSSD内のスナップショット領域の読み出しが完了してしまうと、結局スピンアップの完了を待たなければならない。特許文献3の技術は、HDDのデータをキャッシュした不揮発メモリから起動時にデータを読み込むことにより、スピンアップ時間の問題を緩和しようというものであるが、キャッシュメモリに容量は小さいため、上述したスピンアップの完了を待たなければならない点は解消されない。
【0010】
またフラッシュSSD等には記憶素子の書換回数の実質的な上限があるため、ハイバネーション遷移のたびにスナップショット全体がSSDに書き込まれてしまうことは、フラッシュSSDの寿命が改善されているとはいえ、複合機などこまめな省電力動作が要請される機器においては特に好ましいとは言えない。
【0011】
つまり、上述した起動時間の短縮化の要請を満たし、かつ、フラッシュSSDなどの不揮発性記憶装置に保存されるスナップショットを削減することを可能とする技術の開発が望まれていた。
【0012】
本発明は、上記従来技術の問題点に鑑みてなされたものであり、本発明は、確保すべき不揮発性記憶装置内のスナップショット領域の容量を削減することができ、不揮発性記憶装置への負荷を削減し、かつ、休止状態への移行および休止状態からの復帰を短縮することができる画像処理装置、休止方法および復帰方法を提供することを目的する。
【課題を解決するための手段】
【0013】
本発明は、上記課題を解決するために、主記憶装置、不揮発性記憶装置およびディスク型記憶装置を備え、下記の特徴を有する画像処理装置を提供する。すなわち本発明の画像処理装置は、当該画像処理装置の電源スイッチの切断等による休止状態への移行要求に応答して、実行中のアプリケーション手段に対して停止を通知する通知手段と、休止状態への移行要求に対応して、上記主記憶装置の退避可能な1以上のページまたはセグメントといった区画内の情報を上記ディスク型記憶装置に退避するメモリ管理手段と、主記憶装置のスナップショットであってディスク型記憶装置に退避された情報による情報量が削減された当該スナップショットを、上記不揮発性記憶装置が提供する領域を少なくとも含む記憶領域に作成する作成手段とを含む。本発明の画像処理装置が備えるリレー手段は、スナップショットの作成が完了した後、上記主記憶装置への電力供給を切断する。
【0014】
さらに本発明では、画像処理装置は、当該画像処理装置の電源スイッチの投入等による休止状態からの復帰要求に応答して、上記記憶領域からスナップショットを読み出して主記憶装置上に展開する展開手段を含むことができる。この場合、メモリ管理手段は、動作を再開したアプリケーション手段からの要求に応答して、上記ディスク型記憶装置に退避されている1以上の区画のうちの該要求に対応する区画内の情報を主記憶装置に書き戻すことができる。
【0015】
また本発明では、上記スナップショットのうちの少なくとも不揮発性記憶装置のデータ転送速度でディスク型記憶装置のスピンアップ時間をかけて転送可能な容量分については、不揮発性記憶装置が提供する領域に保存し、上記スナップショットのうちの残余分については、ディスク型記憶装置が提供する領域に保存することができる。
【0016】
また本発明によれば、上記画像処理装置が実行する休止方法が提供される。本発明の休止方法では、画像処理装置は、休止状態への移行要求に応答して、実行中のアプリケーション手段に対して停止を通知するステップと、休止状態への移行要求に対応して、主記憶装置の退避可能な1以上の区画内の情報をディスク型記憶装置に退避するステップと、主記憶装置のスナップショットであってディスク型記憶装置に退避された情報による情報量が削減された当該スナップショットを、不揮発性記憶装置が提供する領域を少なくとも含む記憶領域に作成するステップと、スナップショットの作成が完了した後、リレー手段を制御して主記憶装置への電力供給を切断するステップとを実行する。
【0017】
さらに本発明によれば、上記画像処理装置が実行する復帰方法が提供される。本発明の復帰方法では、画像処理装置は、休止状態からの復帰要求に応答して、不揮発性記憶装置が提供する領域を少なくとも含む記憶領域から、主記憶装置の前回の休止時点のスナップショットであってディスク型記憶装置に退避された情報による情報量が削減された当該スナップショットを読み出して、主記憶装置上に展開するステップと、展開が完了した後、停止中のアプリケーション手段に対して復帰通知を行うステップと、動作を再開したアプリケーション手段からの要求に応答して、ディスク型記憶装置に退避されている主記憶装置内の1以上の区画のうちの該要求に対応する区画内の情報を主記憶装置に書き戻すステップとを実行する。
【発明の効果】
【0018】
上記構成によれば、主記憶装置内の退避可能なページをディスク型記憶装置に退避し、主記憶装置上の退避した区画に対応する情報量を削減した上で、主記憶装置のスナップショットが不揮発性記憶装置に保存されるため、確保すべき不揮発性記憶装置内の容量を削減することができ、不揮発性記憶装置への負荷を削減し、休止状態への移行および休止状態からの復帰の短縮を図ることが可能となる。
【図面の簡単な説明】
【0019】
【図1】第1の実施形態の複合機のハードウェア構成を示す図。
【図2】第1の実施形態の複合機上に実現される機能ブロック図。
【図3】第1の実施形態の複合機が実行する休止処理を示すシーケンス図。
【図4】第1の実施形態の複合機が実行する強制スワップアウト処理を示すフローチャート。
【図5】システムメモリのメモリマップのデータ構造を示す図。
【図6】第1の実施形態の複合機が実行する(A)スナップショット作成処理、および(B)スナップショット展開処理を示すフローチャート。
【図7】電源投入後SSDから読み出される累積的な情報量を示すグラフ(A)、およびスナップショットの保存先を説明する図(B)。
【図8】第1の実施形態の複合機が実行する復帰処理を示すシーケンス図。
【図9】第2の実施形態の複合機が実行する休止処理を示すシーケンス図。
【図10】第2の実施形態の複合機が実行する強制スワップアウト処理を示すフローチャート。
【図11】第2の実施形態の複合機が実行するスナップショット作成処理を示すフローチャート。
【図12】第2の実施形態の複合機が実行する復帰処理を示すシーケンス図。
【図13】第2の実施形態の複合機が実行するスナップショット展開処理を示すフローチャート。
【発明を実施するための形態】
【0020】
以下、本発明の実施形態を説明するが、本発明の実施形態は、以下の実施形態に限定されるものではない。なお、以下の実施形態では、画像処理装置の一例として、コピー、スキャナ、プリント等の画像を扱う複数の機能を有する複合機を用いて説明する。
【0021】
図1は、第1の実施形態の複合機10のハードウェア構成を示す。複合機10は、コントローラ12と、オペレーションパネル40と、FCU(ファクシミリ・コントロール・ユニット)42と、エンジン部44とを含み構成される。コントローラ12は、CPU(中央演算処理装置)14と、NB(ノース・ブリッジ)18と、NB18を介してCPU14と接続するASIC20と、システムメモリ16とを含み構成される。
【0022】
システムメモリ16は、作業用メモリなどとして用いられ、本実施形態の主記憶装置を構成する。ASIC20は、画像処理用のハードウェア要素を有する画像処理用途向けのICであり、各種画像処理を実行し、AGP(Accelerated Graphic Port)46を介してNB18と接続される。
【0023】
ASIC20は、ROM(Read Only Memory)22と、SSD(Solid State Drive)24と、HDD(Hard Disk Drive)26と接続される。ROM22は、後述するブートローダを含む各種制御プログラムやフォントデータを格納する。SSD24は、オペレーティング・システム(以下、OSという。)からドライブとして認識される記憶装置であり、OS、ドライバ、標準アプリケーションなどの各種プログラム、各種システム情報を格納し、また、複合機10が休止状態に遷移する際に使用するスナップショット領域を提供する。SSD24は、本実施形態の不揮発性記憶装置を構成する。なお、不揮発性記憶装置としては、上述したSSDの他、EEPROM、FeRAM、MRAMなど、スピンアップが不要な如何なる不揮発性の半導体記憶装置を採用することができる。
【0024】
HDD26は、画像データ、文書データ、プログラム、フォントデータやフォームデータ、拡張アプリケーションのプログラムなどを蓄積し、また仮想記憶におけるスワップ領域、画像処理における画像領域を提供する。また、SSD24にハイバネーションのために確保できる容量の大きさによっては、HDD26は、スナップショット領域の一部を提供することもできる。HDD26は、アーム、ヘッド等の機械機構を含んで構成され、規定の回転数までスピンアップする必要のある記憶装置であり、本実施形態のディスク型記憶装置を構成する。
【0025】
コントローラ12は、さらにSB(サウス・ブリッジ)28と、NIC(ネットワーク・インタフェース・カード)30と、SD(Secure Digital)カード・スロット32と、USBインタフェース34と、IEEE1394インタフェース36と、セントロニクス・インタフェース38とを含み構成され、これらはPCIバス48を介してNB18と接続される。
【0026】
SB28は、図示しないPCIバス周辺デバイスなどとNB18とを接続するためのブリッジである。NIC30は、複合機10をインターネットやLANなどのネットワークに接続するインタフェース機器である。SDカード・スロット32は、図示しないSDカードを着脱可能に装着する。USBインタフェース34、IEEE1394インタフェース36およびセントロニクス・インタフェース38は、それぞれの規格に準じたインタフェースであり、印刷ジョブなどを受付けている。
【0027】
オペレーションパネル40は、コントローラ12上のASIC20と接続され、オペレータからの各種指示の入力を受付けや、画面表示を行うためのユーザ・インタフェースを提供する。FCU42およびエンジン部44は、PCIバス50を介してASIC20と接続する。FCU42は、G3またはG4といったファクシミリ通信規格に準じた通信方法を実行する。エンジン部44は、アプリケーションが発行したプリント指令やスキャン指令を受け、画像形成処理や画像読取処理を実行する。
【0028】
また本実施形態の複合機10は、さらに、電源スイッチ52とリレースイッチ54とを含み、電源スイッチ52とリレースイッチ54との両方が切断された場合に、各部への給電が停止されるよう構成されている。電源スイッチ52は、複合機10の外部から物理的に電源を投入または切断するためのスイッチである。リレースイッチ54は、複合機10の内部のソフトウェアから電源の投入または切断を制御するためのスイッチであり、本実施形態のリレー手段を提供する。ASIC20は、汎用入出力ポートを備え、本複合機10の電源スイッチ52の開閉状態を検知し、電源スイッチ52をバイパスするリレースイッチ54の開閉を制御することで、本複合機10の電力供給を制御する。
【0029】
本実施形態の複合機10は、上述したROM22、SSD24、HDD26、SDカード(図示せず)などから、ブートローダ、OS、各種アプリケーションなどの各種プログラムを読出し、システムメモリ16に展開して起動し、このシステムメモリ16を作業領域としてCPU14の制御の下、後述する各機能部を実現する。
【0030】
以下、機能ブロック図を参照しながら、本実施形態の複合機が有するハイバネーション機能について説明する。図2は、第1の実施形態の複合機10上に実現される機能ブロックを示す。図2に示す複合機10は、ブートローダ110と、OS120と、システム状態管理部130と、標準アプリケーション132と、拡張アプリケーション134とを含む。
【0031】
ブートローダ110は、複合機10への電源投入時に実行され、ハードウェアの初期化、コントローラの診断、ソフトウェアの初期化などを行う。また、ブートローダ110は、図示しないNVRAM(Non Volatile Random Access Memory)などに格納される起動フラグを参照するなどして、スナップショット領域にスナップショットが存在するか否かを判断し、通常起動を行うか、ハイバネーション復帰を行うかを判断する。
【0032】
通常起動時のシーケンスでは、CPU14は、ROM22からプログラムを読み出してブートローダ110を起動し、ブートローダ110の制御の下、SSD24からOS120を起動する。続いてOS120の制御の下、CPU14は、SSD24およびHDD26から上述したシステム状態管理部130およびアプリケーション132,134といった上位のソフトウェア・コンポーネントを起動し、複合機10の起動処理を完了させる。図2においては、ROM22、SSD24およびHDD26にプログラムが格納されている各機能手段がそれぞれ短形140a,140b,140cで示されているが、図2に示す実施形態に限定されるものではない。
【0033】
OS120は、UNIX(登録商標)などのオペレーティング・システムであり、複数のプロセスを並列に実行する、いわゆるマルチプロセス環境を提供する。説明する実施形態では、UNIX(登録商標)とするが、特に限定されるものではなく、その他、LINUX(登録商標)、Windows(登録商標)などの如何なるアーキテクチャのオペレーティング・システムを採用することができる。OS120は、具体的には、スナップショット作成部122と、メモリ管理部124と、OS用デバイスドライバ126と、電源スイッチ監視部128とを含む。
【0034】
メモリ管理部124は、OS120が管理するシステムメモリ16の範囲を決定し、各種ソフトウェア・コンポーネントに対し仮想メモリを提供する。メモリ管理部124は、プログラム毎にユーザプログラム領域とスタック領域とを割り当てる。またメモリ管理部124は、各種プログラムのプロセスの起動、動作状態、プロセススイッチに応じて、ページテーブルの内容を作成または変更し、各プログラムのプロセスに対して適切な物理メモリを割り当てる。プロセスに対して新たに割り当てる物理メモリが不足した場合には、メモリ管理部124は、HDD26上に確保されるスワップ領域と物理メモリとの間で、NRU(Not Recently Used)、LRU(Least Recently Used)アルゴリズムなどのページ置換アルゴリズムに従ってページの入れ替え、いわゆるスワッピング処理を行う。メモリ管理部124は、本実施形態のメモリ管理手段を提供する。
【0035】
なお、本実施形態では、ページング方式の仮想メモリのメモリ管理方式に従い、物理メモリとスワップ領域との間で入れ替えられる記憶領域の区間の単位がページ単位であるものとして説明するが、特に限定されるものではなく、他の実施形態では、セグメント方式を採用してもよい。
【0036】
OS用デバイスドライバ126は、OS120上からSSD24やHDD26などのストレージドライブへのアクセスを提供し、そのデータの読み書きを制御する。電源スイッチ監視部128は、図1に示したASIC20の電源スイッチ52の開閉状態が入力される汎用入出力ポートを監視し、電源スイッチ52の切断または投入を検知し、システム状態管理部130に通知する。
【0037】
スナップショット作成部122は、ハイバネーション機能により休止状態に移行する際に、現時点のスナップショットを作成し、次回起動時にハイバネーション復帰するべく起動フラグを変更して、リレー制御により電源を切断する。スナップショット作成部122は、より詳細には、複合機10内の各ハードウェアやプロセスのコンテキストを取得し、このコンテキストとともにシステムメモリ16の現時点のスナップショットをスナップショット領域に保存することで、スナップショットの作成を行う。スナップショット領域は、本実施形態では、少なくともSSD24が提供する領域を含む記憶領域であり、後述するように、他の実施形態では、HDD26が提供する領域を含むこともできる。なお、スナップショット作成部122は、本実施形態の作成手段を提供する。
【0038】
OS120の上位のシステム状態管理部130は、アプリケーション132,134の管理、オペレーションパネル40の制御、システム画面表示、LED表示、ハードウェア資源管理、割り込みアプリケーション制御などの処理を行う。システム状態管理部130は、本実施形態の通知手段を提供する。標準アプリケーション132としては、例えば、ページ記述言語(PDL:Page Description Language)により記述された印刷対象のデータをラスタライズして印刷設定に従い印刷するプリンタアプリケーションや、その他、コピーアプリケーション、スキャナアプリケーション、ファクシミリアプリケーション、ネットワークファイル機能を提供するウェブアプリケーションを挙げることができる。
【0039】
拡張アプリケーション134は、上記標準アプリケーション132に追加してインストールされるアプリケーションであり、複合機10のSDK(Software Development Kit)により作成されたアプリケーションなどを挙げることができる。なお、図2に示すように、拡張アプリケーション134は、一般的に、SSD24またはHDD26のいずれか任意のドライブにインストールすることができる。
【0040】
上述したように、通常の起動シーケンスでは、複合機10に電源投入後、ROM22、SSD24、HDD26に格納されている各種プログラムがシステムメモリ16上に読み込まれ、図2に示す各機能部が複合機10上に実現される。一方、ハイバネーション機能による休止状態からの復帰時のシーケンスでは、上述したスナップショット作成部122により作成された休止時点のシステムメモリ16のスナップショットが、スナップショット領域から読み出されて、システムメモリ16上に展開される。これにより、複合機10は、休止状態に遷移する直前の状態に復帰し、図2に示す各機能部が複合機10上に実現されることになる。
【0041】
上記復帰処理を実現するため、本実施形態のブートローダ110は、スナップショット展開部112と、ブートローダ用デバイスドライバ114とを含む。スナップショット展開部112は、複合機10が休止状態から復帰する際に、ブートローダ用デバイスドライバ114を介して、スナップショット領域からスナップショットを読み出し、システムメモリ16上に展開し、各ハードウェアや各プロセスのコンテキストを復帰させる。ブートローダ用デバイスドライバ114は、スナップショット展開部112からの要求に従い、SSD24またはHDD26からのデータ読み出しを行う。このブートローダ用デバイスドライバ114は、ブートローダ110の内部要求に対してデバイスアクセスを簡素に可能にしたものであり、OS120上のOS用デバイスドライバ126とは異なるモジュールである。
【0042】
以下、図3〜図8を参照しながら、本実施形態の複合機10が実行する休止処理および復帰処理についてより詳細に説明する。図3は、第1の実施形態の複合機10が実行する休止処理を示すシーケンス図である。図3に示す処理は、オペレータが電源スイッチ52を切断したことに応答してステップS101から開始される。
【0043】
オペレータが電源スイッチ52を切断すると、電源スイッチ監視部128は、ステップS101で、ASIC20の汎用入出力ポートの変化から電源スイッチ52の切断を検知し、ステップS102で、電源切断をシステム状態管理部130に状態通知する。なお、説明する実施形態では、複合機10に対する休止状態への移行要求は、複合機10の電源スイッチ52の切断により行われるものとするが、特に限定されるものではない。他の実施形態では、オペレーションパネル40のソフトウェアキーや、リモート管理インタフェースを介して休止状態への移行要求が行われてもよい。
【0044】
ステップS103では、システム状態管理部130は、予め登録されているアプリケーション群132,134のそれぞれに対し、停止の通知(状態変更依頼)を実施し、シャットダウン処理を依頼する。シャットダウン処理の依頼を受信した各アプリケーション132,134は、ステップS104で、内部で保持しているジョブをクリアし、シャットダウン処理を行い、ステップS105で、システム状態管理部130に完了を応答する。
【0045】
システム状態管理部130は、アプリケーション群132,134からの完了応答をすべて受信した後、ステップS106で、スナップショット作成部122に対し、スナップショットの作成の依頼を行う。ステップS107では、スナップショット作成部122は、スナップショット作成に先立って、スナップショットのデータサイズを削減するために、強制スワップアウト処理を実行する。
【0046】
強制スワップアウト処理中、ステップS108では、スナップショット作成部122がメモリ管理部124に対しページ取得要求を行い、ステップS109では、メモリ管理部124がシステムメモリ16内の管理しているページのうちから犠牲ページを選択し、当該犠牲ページのスワップアウトをOS用デバイスドライバ126に対して行う。なお、強制スワップアウト処理については、詳細を後述する。
【0047】
スナップショット作成部122は、ステップS110で、現時点のコンテキストを取得し、ステップS111で、スナップショット作成する。スナップショット作成中、スナップショット作成部122は、ステップS112で、OS用デバイスドライバ126を介して、スナップショットの範囲を示す付属情報と、スナップショット自体と、上記コンテキストとを保存する。ステップS113では、起動時のモードを示す起動フラグを、ハイバネーション復帰を示す値に書き換える。ステップS114では、スナップショット作成部122は、リレースイッチ54に接続する入出力ポートを介してリレースイッチ54を開くよう制御し、複合機10への電力供給を停止する。
【0048】
なお、説明する実施形態では、説明の便宜上、ステップS114のリレー制御により複合機10全体の電力供給が停止されるものとするが、より詳細な単位で給電を管理する他の実施形態では、ここでいう電力供給の停止は、少なくともシステムメモリ16への電力供給が停止することをいう。他の実施形態では、ステップS114でリレースイッチ54が開かれた後も、複合機10の定着ユニットなどへの電力の供給が継続されてもよく、この定着ユニットへの給電を個別に制御してもよい。また、システムメモリ16への電力供給の停止は、スナップショット作成後直ちに実施される必要はなく、システムメモリ16からの復帰に対応させるべく、所定時間維持されていてもよい。
【0049】
図4は、第1の実施形態の複合機10が実行する強制スワップアウト処理を示すフローチャートである。図4に示す処理は、図3に示したステップS106でスナップショット作成部122がスナップショット作成依頼を受信して、図3に示したステップS107に対応してステップS200から開始される。ステップS201では、スナップショット作成部122は、カーネル内のmalloc関数などを使用してメモリ取得を行う。ステップS202では、メモリ管理部124は、メモリ取得の要求に対して、空きページの取得を試みる。
【0050】
図5は、システムメモリ16のメモリマップを示す図である。図5に示すようにシステムメモリ16は、OS120の命令コード領域(text)と、OS120のデータ領域(data)とを含んで構成される。システムメモリ16は、さらにOS領域の後方に、ページ管理領域と、それ以下のページメモリ領域とを含んで構成される。OS120内のメモリ管理部124は、OS120、システム状態管理部130および各アプリケーション132,134に対し、このページメモリを提供する。ページメモリは、図5に示すように、全くの未使用状態である空きページと、プログラムが使用中であるアクティブページと、プログラムがしばらく使用しておらず、HDD26にスワップアウト可能なスワップアウト可能ページとの3種類から構成される。ここで、スワップアウト可能ページとは、所定のページ置換アルゴリズムに従って犠牲ページとして選択されうる領域をいい、一般に、ビット、キュー、リスト、カウンタ値などにより管理される。
【0051】
再び図4を参照すると、ステップS203では、メモリ管理部124は、空きページの取得に成功したか否かを判定する。ステップS203で、取得に成功したと判定された場合(YES)には、スナップショット作成部122に空きページを返却し、ステップS204へ処理を進める。ステップS204では、スナップショット作成部122は、取得した空きページをゼロフィルし、単一のパターンで埋め尽くし、ステップS201へ処理をループさせる。ステップS201〜S203の処理は、システムメモリ16内の空きページがスナップショット作成部122により取得され尽くすまで繰り返される。
【0052】
一方、ステップS203で、強制スワップアウト処理の開始時点の空きページがすべて取得されるなどし、空きページの取得に失敗したと判定された場合(NO)には、ステップS205へ処理を進める。ステップS205では、メモリ管理部124は、スワップアウト可能なページの取得を試み、ステップS206では、スワップアウト可能ページの取得に成功したか否かを判定する。ステップS206で、取得に成功したと判定された場合(YES)には、ステップS207へ処理を進め、メモリ管理部124は、OS用デバイスドライバ126のうちのHDD26のデバイスドライバを使用して、その取得したスワップ可能ページ内の情報をHDD26へスワップアウトさせる。
【0053】
ステップS208では、メモリ管理部124は、スワップアウトさせたページに関連してページ管理領域の内容の更新を行い、ステップS202へ処理を分岐させる。この場合、スワップアウトによって空きページが生成されているため、空きページの取得に成功し、ステップS204では、当該ページをゼロフィルし、ステップS201へ再び処理をループさせることになる。一方、ステップS206で、取得に失敗したと判定された場合(NO)には、ステップS209へ処理を分岐させ、本強制スワップアウト処理を終了させる。ステップS201〜ステップS209の処理フローにより、強制スワップアウト処理の開始時点の空きページおよびスワップアウト可能ページのすべてが、スナップショット作成部122に取得され、単一パターンで埋め尽くされることとなる。
【0054】
図6(A)は、第1の実施形態の複合機10が実行するスナップショット作成処理を示すフローチャートである。図6(A)は、図3に示したステップS111のスナップショット作成部122が実行する処理の詳細を示すものである。図6(A)に示す処理は、図3に示したステップS111に対応してステップS300から開始される。スナップショット作成部122は、ステップS301で、OS120の命令コード領域(text)の先頭アドレスpを取得し、ステップS302で、ページメモリ領域の終端アドレスqを取得し、ステップS303で、取得した先頭アドレスpと終端アドレスqとをスナップショットの付属情報としてスナップショット領域に保存する。
【0055】
ステップS304では、スナップショット作成部122は、先頭アドレスpから終端アドレスpの範囲を圧縮し、ステップS305で、OS用デバイスドライバ126を介して、圧縮された範囲をスナップショットの本体情報としてスナップショット領域に保存する。本実施形態では、スナップショットの範囲は、OS120の先頭からページメモリ領域の終端までの全体を含むが、上述した強制スワップアウト処理が実施されているため、スナップショット作成部122が取得したページは単一パターンで埋められており、実質的に情報量を増加させるものではない。したがって、本実施形態では、HDD26にスワップアウトされたページ分の情報量が実質的に削減されたスナップショットが保存されることとなる。
【0056】
上述したスナップショット領域は、第1の実施形態では、SSD24が提供する記憶領域のみを含むものとして説明するが、他の実施形態では、少なくともSSD24が提供する記憶領域を含み、加えてHDD26が提供する記憶領域を含むこともできる。以下、HDD26が提供する記憶領域を含むスナップショット領域を利用する他の実施形態について説明する。HDD26の記憶領域を利用する場合、復帰時におけるHDD26のスピンアップ時間による不具合の回避と、SSD24上のスナップショット領域の削減とを両立させる観点からは、SSD24のデータ転送速度によりHDD26のスピンアップ時間をかけて転送可能な容量分を少なくともSSD24に保存しておけば良いということになる。
【0057】
図7(A)は、電源投入後SSD24から読み出される累積的な情報量を示すグラフである。図7(A)に示すTiは、電源投入後からブートローダ110がSSD24にアクセス可能となるまでの時間を示し、Tsは、電源投入後からHDD26のスピンアップが完了するまでの時間を示す。Isは、電源投入後からHDD26のスピンアップが完了するまでの間にSSD24から読み出すことができる情報量を示す。スピンアップ時間TsでSSD24から読み出された累積情報量は、アクセスが可能となった後(Ti以降)、SSD24の読出時のデータ転送速度rに概ね比例して増加する。
【0058】
したがって、情報量Isは下記式(1)で表すことができる。また、SSD24は、スピンアップ時間を待つ必要がなく、電源投入後から即座にアクセス可能できる記憶装置であり、ブートローダ110もROM22に格納されていることを考慮すると、下記式(1)におけるTiは無視することができ、下記式(1)は下記式(2)として表される。
【0059】
【数1】
【0060】
つまり、スナップショット領域全体のうちSSD24上に保存されるデータ部の情報量I1がIs以上であれば、ハイバネーション復帰の際、HDD26のスピンアップ中、システムメモリ16へのスナップショットの読み込みが途切れないことになる。この得られた情報量IsまたはI1の値は、NVRAMなどに予め保存され、スナップショット作成時に参照されることになる。
【0061】
すなわち、以下、HDD26を利用する他の実施形態では、図6のステップS305で圧縮後のスナップショットの本体情報を保存する際に、図7(B)に示すように、先頭からI1(≧Is)分のスナップショットのデータ部については、OS用デバイスドライバ126のうちのSSDに対応するデバイスドライバを介してSSD内スナップショット記憶領域に保存し、残余分(I2)のデータ部は、OS用デバイスドライバ126のうちのHDDに対応するデバイスドライバを介してHDD内スナップショット記憶領域に保存する。なお、この場合、SSD内スナップショット記憶領域に保存されるアドレス範囲と、HDD内スナップショット記憶領域に保存されるアドレス範囲とは、付属情報として個別に保存することができる。
【0062】
SSD24自体の容量は、SSD24に格納されるOSやファームウェアの容量Vfと、スナップショットの情報量I1を保存するための記憶領域容量V1(≧I1≧Is)との和(Vf+V1)以上となるように決定すればよい。また、ユーザ毎というようにスナップショット領域を複数準備するような場合には、SSD24自体の容量は、用意するスナップショット領域数NをV1に乗算して求められる和(Vf+V1×N)以上となるように決定すればよい。したがって、HDD26を利用する他の実施形態では、複合機10のシステムメモリ16の容量にかかわらず、HDD26のスピンアップ時間中読み出しを継続できる容量をSSD24に確保できればよいということになる。
【0063】
さらに、SSD24上に保存される情報量I1にマージンを設ける場合や圧縮保存される場合など、ハイバネーション復帰時において、HDD26がスピンアップ完了した後、SSD24からの読み出しとHDD26からの読み出しが並列して行われる場合がある。この場合、好ましくはSSD24およびHDD26へのデータ転送バスをそれぞれ独立したものとすることにより、効率的にスナップショットをシステムメモリ16上に展開することができる。さらに他の実施形態では、HDD26には圧縮しない形式でスナップショットを保存することで、HDD26からは直接メモリアクセス(DMA)モードでデータ転送することが可能となる。DMAモードのデータ転送では、CPU14を使用しないため、SSD24からの読み出しと独立してHDD26内のスナップショットをシステムメモリ16上に展開することができる。
【0064】
以下、第1の実施形態の複合機10が実行する復帰処理について説明する。図8は、第1の実施形態の複合機10が実行する復帰処理を示すシーケンス図である。図8に示す処理は、オペレータが電源スイッチ52を投入したことに応答してステップS401から開始される。説明する実施形態では、複合機10に対する休止状態からの復帰要求は、複合機10の電源スイッチ52の投入により行われるものとするが、特に限定されるものではない。
【0065】
オペレータが電源スイッチ52を投入すると、コントローラ12に給電が開始され、ステップS401で、CPU14は、ROM22からプログラムを読み出してブートローダ110を起動する。ステップS402では、ブートローダ110は、ハードウェアを初期化し、コントローラの診断をし、ソフトウェアの初期化をし、NVRAMの起動フラグを確認する。ここでは、ハイバネーション復帰を示す値が確認されるものとし、通常起動のシーケンスについては説明を割愛する。
【0066】
ハイバネーション復帰を示す値が確認されると、ステップS403で、ブートローダ110は、スナップショット展開部112にスナップショットの展開処理の実行を依頼する。ステップS404で、スナップショット展開部112は、ブートローダ用デバイスドライバ114を介して、スナップショット領域からコンテキストを読み出し、スナップショットの付属情報を読み出してスナップショットの展開先のアドレス範囲を割り出し、スナップショット本体情報を読み出しながらシステムメモリ16上に展開する。
【0067】
図6(B)は、第1の実施形態の複合機10が実行するスナップショット展開処理を示すフローチャートである。図6(B)は、図8に示したステップS404のスナップショット展開部112が実行する処理の詳細を示すものである。図6(B)に示す処理は、図8に示したステップS404に対応してステップS500から開始される。スナップショット展開部112は、ステップS501で、SSD24のスナップショット領域からスナップショットの付属情報として保存された先頭アドレスpと、終端アドレスqとを取得し、ステップS502で、スナップショット領域からスナップショットを読み出し、伸張しながら、取得した先頭アドレスpから終端アドレスqまでの領域に展開し、ステップS503で処理を終了させる。
【0068】
上述したHDD26の記憶領域を含むスナップショット領域を利用する他の実施形態では、スナップショット展開部112は、まずブートローダ用デバイスドライバ114のSSD24に関するデバイスドライバを介して、スナップショットのうちSSD24内のデータ部をSSD24が提供する記憶領域から読み出し、システムメモリ16上に伸張展開する。一方、スナップショット展開部112は、起動直後からHDD26のスピンアップを開始し、スピンアップが完了しアクセスが可能となることを待ち合わせる。スナップショット展開部112は、HDD26のスピンアップが完了すると、スナップショットのうちHDD26内のデータ部をHDD26が提供する記憶領域から読み出し、システムメモリ16上に伸張展開する。この際に展開先は付属情報から取得することができる。
【0069】
SSD24およびHDD26へのデータ転送バスが独立している場合は、スナップショットをシステムメモリ16上に効率的に展開することができる。さらに圧縮しない形式でスナップショットがHDD26に保存されている場合には、HDD26からは直接メモリアクセス(DMA)モードでデータ転送することができる。
【0070】
再び図8を参照して第1の実施形態について説明する。ステップS405では、スナップショット展開部112は、読み出したコンテキストをハードウェアに復元し、スナップショット作成部122に制御を戻す。このとき、CPU14のプログラムカウンタを、図3に示すステップS114のリレー制御の後に変更しておき、電源切断処理分の命令をスキップさせるものとする。
【0071】
コンテキスト復帰後、スナップショット作成部122は、ステップS406で起動フラグを通常起動を示す値に変更し、ステップS407でリレースイッチ54を閉じる。ステップS408では、スナップショット作成部122は、メモリ管理部124に対し、休止状態に移行した際に要求した分のページを開放するよう依頼し、メモリ管理部124は、空きページを増加させる。ステップS409では、スナップショット作成部122は、システム状態管理部130にスナップショット作成依頼に対応する完了応答を行う。
【0072】
ステップS410では、完了応答を受けたシステム状態管理部130は、予め登録されているアプリケーション群132,134のそれぞれに対し、復帰の通知(状態変更依頼)を実施し、復帰処理を依頼する。ステップS411では、各アプリケーション132,134は、再度動作開始を行う。この間、HDD26上にスワップアウトされてシステムメモリ16上にページが存在しないアプリケーションは、ステップS412で、メモリ管理部124に対しページ要求をし、ステップS413で、メモリ管理部124は、OS用デバイスドライバ126を介してHDD26上に退避されていた要求のページをシステムメモリ16上にページインする。このように、アプリケーション132,134は、HDD26からページインさせながら動作し、最終的にアプリケーション群132,134が復帰処理を完了させると、ステップS414で、システム状態管理部130に完了を応答し、本ハイバネーション復帰処理を完了させる。
【0073】
上述した第1の実施形態によれば、システムメモリ16内のスワップアウト可能なページをHDD26に強制的にスワップアウトし、システムメモリ16上の退避したページを単一パターンで埋めることで、SSD24に保存されるスナップショットの情報量を削減し、復帰時にはスピンアップの制約なく起動時間を短縮することが可能となる。ひいては、高速起動が可能な複合機を低コストで実現することが可能となる。また、SSD24に発生する書き込みの情報量が削減されるため、負荷が軽減され、こまめな省電力動作が要請される観点から好適である。
【0074】
また、HDD26の記憶領域を含むスナップショット領域を利用する実施形態では、さらに、スピンアップ中のSSDからの継続的なスナップショットの読み出しを保証しつつ、SSD24に確保しなければならない容量を最小化することができるため、高速起動が可能な複合機をさらに低コストで実現することが可能となり、SSD24に発生する書き込みの情報量をさらに削減できる。
【0075】
以下、異なる強制スワップアウト処理を実行する第2の実施形態の複合機について説明する。なお、第2の実施形態の複合機は、第1の実施形態のものと類似しているため、以下、図9〜図13を参照しながら、相違点を中心に説明する。図9は、第2の実施形態の複合機10が実行する休止処理を示すシーケンス図である。図9に示す処理は、第1の実施形態の説明の際に参照した図3に示す処理と類似し、ステップS601〜S606の処理がステップS101〜S106の処理と同一であるため、以下、ステップS607から説明する。
【0076】
システム状態管理部130からスナップショット作成依頼を受けて、スナップショット作成部122は、ステップS607で、スナップショット作成に先立って、スナップショットのデータサイズを削減するために、強制スワップアウト処理を実行する。
【0077】
強制スワップアウト処理中、ステップS608では、スナップショット作成部122は、メモリ管理部124で管理しているページ管理情報の変更を行う。ステップS609では、メモリ管理部124は、OS用デバイスドライバ126のうちHDDのデバイスドライバに対して、スワップアウト可能ページのスワップアウト要求を行う。ステップS610では、メモリ管理部124は、スワップアウト処理の完了をスナップショット作成部122に報告する。ステップS611では、スナップショット作成部122は、メモリ管理部124で管理しているページ管理情報を元に戻す。
【0078】
図10は、第2の実施形態の複合機10が実行する強制スワップアウト処理を示すフローチャートである。図10に示す処理は、図9に示したステップS606でスナップショット作成部122がスナップショット作成依頼を受信して、図9に示したステップS607に対応してステップS700から開始される。スナップショット作成部122は、メモリ管理部124にページ管理情報を問い合わせて、ステップS701で、ページメモリの総数Xを取得し、ステップS702で、アクティブページの数Yを取得し、ステップS703で、空きページの目標値Z1を取得する。メモリ管理部124は、空きページの数が設定された目標値に一致するように仮想メモリを管理する。
【0079】
ステップS704では、スナップショット作成部122は、メモリ管理部124の目標値をZ1から、アクティブページを除くページの総数(つまりX−Y)に変更し、当該目標値が達成されるまで動作を一旦停止し、処理はステップS705へ進められる。ステップS705〜S708の処理では、メモリ管理部124は、この目標値の変更に伴い、空きページの数を目標値に一致させるべく制御を行う。ステップS705では、メモリ管理部124は、現実の空きページ数Z2が目標値(X−Y)に達したか否かを判断する。
【0080】
ステップS705で、現実の空きページ数Z2が目標値(X−Y)に達していないと判定された場合(YES)、ステップS706へ処理を進める。ステップS706では、メモリ管理部124は、ページメモリ領域内のスワップアウト可能ページを取得し、ステップS707で、OS用デバイスドライバ126のうちのHDD26のデバイスドライバを使用して、その取得したスワップ可能ページ内の情報をHDD26へスワップアウトさせる。
【0081】
ステップS708では、メモリ管理部124は、スワップアウトさせたページに関連してページ管理領域の内容の更新を行い、ステップS705へ処理を戻し、空きページZ2が目標値(X−Y)に一致するまでループさせる。ステップS705で、現実の空きページ数Z2が目標値(X−Y)に達したと判定された場合(NO)には、ステップS709へ処理を進める。ステップS709では、スナップショット作成部122は、動作を再開し、現在の目標値(X−Y)から元の目標値Z1に戻し、ステップS710で本強制スワップアウト処理を終了させる。ステップS701〜S710の処理フローにより、強制スワップアウト処理の開始時点のスワップアウト可能ページがすべて空きページとなる。
【0082】
再び図9を参照すると、スナップショット作成部122は、ステップS612で、現時点のコンテキストを取得し、ステップS613で、スナップショット作成する。スナップショット作成中、スナップショット作成部122は、ステップS614で、OS用デバイスドライバ126を介して、スナップショットの範囲を示す付属情報と、スナップショット自体と、上記コンテキストとを保存する。
【0083】
図11は、第2の実施形態の複合機10が実行するスナップショット作成処理を示すフローチャートである。図11は、図9に示したステップS613のスナップショット作成部122が実行する処理の詳細を示すものである。図11に示す処理は、図9に示したステップS613に対応してステップS800から開始される。スナップショット作成部122は、ステップS801で、OS120の命令コード領域(text)の先頭アドレスpを取得し、ステップS802で、ページ管理領域の終端アドレスqを取得し、ステップS803で、取得した先頭アドレスpと終端アドレスqとをスナップショットの付属情報(基本部分)としてスナップショット領域に保存する。ステップS804では、スナップショット作成部122は、OS用デバイスドライバ126を介して、先頭アドレスpから終端アドレスpの範囲をスナップショット(基本部分)としてスナップショット領域に保存する。
【0084】
スナップショット作成部122は、ステップS805で、ページ番号を1を処理対象の初期値として設定し、ステップS806で、ページ管理領域からページ番号n(つまり初回は1である。)のページに関する情報を取得し、ステップS807で、ページ情報の取得に成功したか否かを判定する。ステップS807で、ページ情報の取得に成功した場合(YES)、ステップS808へ処理を進める。ステップS808では、スナップショット作成部122は、n番目のページがアクティブページであるか否かを判定する。ステップS808で、アクティブページであると判定された場合(YES)には、ステップS809へ処理を進める。
【0085】
スナップショット作成部122は、ステップS809で、当該ページ番号nの物理アドレス(例えば4バイト)をスナップショットの付属情報としてスナップショット領域に保存し、ステップS810で、当該ページ番号nのページをスナップショット(ページ部)としてスナップショット領域に保存する。ステップS811では、スナップショット作成部122は、ページ番号nを1インクリメントし、ステップS806へ処理をループさせる。一方、ステップS808で、アクティブページではないと判定された場合(NO)には、ステップS811へ直接処理を進め、ページ番号nをインクリメントし、ステップS806へ処理をループさせる。
【0086】
終端のページまで上述した判定が繰り返されると、ステップS807では、ページ情報の取得に失敗することとなる。ステップS807で、ページ情報の取得に失敗した場合(NO)には、ステップS812へ処理を進める。ステップS812では、スナップショット作成部122は、スナップショット終端情報(例えば4バイトのゼロ)を付属情報として書き込み、ステップS813で処理を終了する。ステップS806〜S811の処理により、管理対象のページのうちすべてのアクティブページについて、物理アドレスが付属情報(ページ部)として、データがスナップショット(ページ部)としてページ毎に保存されることになる。
【0087】
再び図9を参照すると、ステップS615では、起動フラグをハイバネーション復帰を示す値に書き換え、ステップS616では、スナップショット作成部122は、入出力ポートを介してリレースイッチ54を開くよう制御し、複合機10への電力供給を停止する。
【0088】
本実施形態では、スナップショットは、OS120の先頭からページ管理領域の終端までの基本部分と、各アクティブページのページ部分とから構成され、休止状態へ移行する開始時点でのアクティブページ以外のページ、すなわち空きページおよびスワップアウト可能ページはスナップショットの対象から除外される。したがって、第2の実施形態においても、HDD26にスワップアウトされたページ分の情報量が削減されたスナップショットが保存されることとなる。
【0089】
以下、第2の実施形態の複合機10が実行する復帰処理について説明する。図12は、第2の実施形態の複合機10が実行する復帰処理を示すシーケンス図である。図12に示す処理は、オペレータが電源スイッチ52を投入したことに応答してステップS901から開始される。オペレータが電源スイッチ52を投入すると、コントローラ12に給電が開始され、ステップS901で、ブートローダ110が起動し、ステップS902では、ブートローダ110は、ハードウェアを初期化し、コントローラの診断をし、ソフトウェアの初期化をし、NVRAMの起動フラグを確認する。ここでは、第1の実施形態と同様に、ハイバネーション復帰を示す値が確認されるものとし、通常起動のシーケンスについては説明を割愛する。
【0090】
ハイバネーション復帰を示す値が確認されると、ステップS903で、ブートローダ110は、スナップショット展開部112にスナップショットの展開処理の実行を依頼する。ステップS904で、スナップショット展開部112は、ブートローダ用デバイスドライバ114を介して、スナップショット領域からコンテキストを読み出し、スナップショットの付属情報を読み出してスナップショットの展開先のアドレス範囲を割り出し、スナップショット本体情報を読み出しながらシステムメモリ16上に展開する。
【0091】
図13は、第2の実施形態の複合機10が実行するスナップショット展開処理を示すフローチャートである。図13は、図12に示したステップS904のスナップショット展開部112が実行する処理の詳細を示すものである。図13に示す処理は、図12に示したステップS904に対応してステップS1000から開始される。スナップショット展開部112は、ステップS1001で、SSD24のスナップショット領域からスナップショットの付属情報(基本部)として保存された先頭アドレスpと、終端アドレスqとを取得し、ステップS1002で、スナップショット領域からスナップショット(基本部)を読み出し、取得した先頭アドレスpから終端アドレスqまでのシステムメモリ16の領域に展開する。
【0092】
ステップS1003では、スナップショット展開部112は、スナップショットの付属情報(基本部)直後の付属情報を読み出し、ステップS1004で、付属情報に記述されるアドレス情報が終端情報であるか否かを判定する。ステップS1004で、終端情報ではないと判定された場合(NO)には、ステップS1005へ処理を進める。ステップS1005では、上述したアドレス情報を物理アドレスと読み替えて、スナップショット領域からページを読み込出し、システムメモリ16上の当該物理アドレスに展開する。ステップS1006では、スナップショット展開部112は、付属情報(ページ部)のアドレスを物理アドレスのバイト数(例えば4バイト)進め、ステップS1003へ処理をループさせる。
【0093】
休止状態へ移行時に保存されたすべてのアクティブページの展開が完了すると、終端情報に到達することとなる。ステップS1004で、終端情報ではあると判定された場合(YES)には、ステップS1007へ分岐させ、本処理を終了する。なお、上記実施形態では、スナップショットの本体と、付属情報とが分離して保存される場合について説明したが、他の実施形態では、スナップショットの付属情報と、本体とを交互に順に保存してもよい。
【0094】
再び図12を参照すると、ステップS905では、読み出したコンテキストをハードウェアに復元し、スナップショット作成部122に制御を戻す。このとき、CPU14のプログラムカウンタを、図9に示すステップS616のリレー制御の後に変更しておき、電源切断処理分の命令をスキップさせるものとする。
【0095】
コンテキスト復帰後、スナップショット作成部122は、ステップS906で起動フラグを通常起動を示す値に変更し、ステップS907でリレースイッチ54を閉じる。ステップS908では、スナップショット作成部122は、システム状態管理部130にスナップショット作成依頼に対応する完了応答を行う。以降のステップS909〜S913の処理は、図8に示したステップS410〜414の処理と同様であるため割愛する。
【0096】
上述した第2の実施形態によれば、さらに、メモリ管理部124の基本機構を流用してスワップアウト可能なページをHDD26へ保存しているため、第1の実施形態に比較して、スナップショット作成部122における強制スワップアウト処理が簡素化されている。
【0097】
以上説明したように上述した実施形態によれば、確保すべき不揮発性記憶装置(SSD24)内のスナップショット領域の容量を削減することができ、不揮発性記憶装置(SSD24)への負荷を削減し、かつ、休止状態への移行および休止状態からの復帰を迅速に実現することができる画像処理装置、該画像処理装置の休止方法および復帰方法を提供することができる。
【0098】
なお画像処理装置としては、上述した実施形態の複合機能を有した複合機に限られるものではなく、特定の用途に応じて、複写機やプリンタや印刷機などの画像形成装置、スキャナなどの画像読取装置、デジタルカメラやデジタルビデオカメラなどの撮像装置、プロジェクタなどの音声映像入出力装置、不揮発性記憶装置およびディスク型記憶装置の両方を備える如何なる装置として好適に構成することができる。
【0099】
これまで本発明の実施形態について説明してきたが、本発明の実施形態は上述した実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
【符号の説明】
【0100】
10…複合機、12…コントローラ、14…CPU、16…システムメモリ、18…NB、20…ASIC、22…ROM、24…SSD、26…HDD、28…SB、30…NIC、32…SDカード・スロット、34…USBインタフェース、36…IEEE1394インタフェース、38…セントロニクス・インタフェース、40…オペレーションパネル、42…FCU、44…エンジン部、46…AGP、48…PCIバス、50…PCIバス、52…電源スイッチ、54…リレースイッチ、110…ブートローダ、112…スナップショット展開部、114…ブートローダ用デバイスドライバ、120…OS、122…スナップショット作成部、124…メモリ管理部、126…OS用デバイスドライバ、128…電源スイッチ監視部、130…システム状態管理部、132…標準アプリケーション、134…拡張アプリケーション
【先行技術文献】
【特許文献】
【0101】
【特許文献1】特開2002−324012号公報
【特許文献2】特開平9−44417号公報
【特許文献3】特開2003−85041号公報
【技術分野】
【0001】
本発明は、複合機などの画像処理装置に関し、より詳細には、休止状態への移行および休止状態からの復帰を迅速に実現することができる画像処理装置、休止方法および復帰方法に関する。
【背景技術】
【0002】
近年、デジタル複合機では、高機能化が進み、コピー、プリント、スキャナ、ファクシミリ、ネットワークファイル機能などの諸機能が追加されるにつれ、それに伴い起動時間が長期化する傾向にある。
【0003】
従来より、コンピュータ機器の起動時間を短縮するための技術としては、電源を切断する際に、システムメモリおよびシステム内ハードウェアのレジスタの内容を含む作業環境情報(以下、スナップショットという)をハードディスクに退避し、電源投入時にスナップショットをシステムメモリに復帰する機能、いわゆるハイバネーション機能が知られており、この機能を複合機に適用することも試みられている(特開2002−324012号公報:特許文献1)。
【0004】
特許文献1は、複数のユーザ毎の作業環境に対応したハイバネーション退避および復帰処理が行える情報処理システムを提供することを目的として、デジタル複合機の起動時にオペレーティング・システムがいずれのハイバネーション領域を用いて起動するかをユーザに指定させ、この指定されたハイバネーション領域の情報を調べ、前回のオペレーティング・システムの終了がハイバネーション割り込みによって終了していた場合、その指定されたハイバネーション領域の情報を用いて復帰処理するデジタル複合機が開示されている。
【0005】
また特開平9−44417号公報(特許文献2)は、メインメモリに常駐すべきコードやデータを格納したメモリ常駐データ領域であるか、またはハードディスクとの間で適宜入れ替え可能なコードやデータを格納した非メモリ常駐データ領域であるかを管理し、給電停止の際には、メインメモリのうちメモリ非常駐データ領域の内容を先に、メモリ常駐データ領域の内容を後からハードディスクに格納することを特徴とする情報処理システムを開示する。
【0006】
特許文献2の技術では、ハイバネーションに遷移する時にメインメモリ中のメモリ非常駐データを前もってハードディスクドライブに退避、つまりスワップアウトして、次いでメモリ常駐データをハードディスクに格納する。ウェイクアップ時には、メモリ常駐データのみをメインメモリにリストアすれば、システムはタスクを再開することができるため、これによりウェイクアップ時の高速化を図ろうというものである。
【0007】
また特開2003−85041号公報(特許文献3)は、機器を高速に起動する目的で、キャッシュメモリを不揮発メモリとし、不揮発メモリにキャッシュされたデータを使うディスクキャッシュシステムであって、HDDのデータをキャッシュした不揮発メモリから起動時にデータを読み込むことにより、HDDのスピンアップ時間を待たずに起動処理を実行するディスクキャッシュシステムを開示する。特許文献3の技術によれば、HDDのスピンアップ前から起動処理を開始できるので、スピンアップ時間が起動時間に与える影響をある程度回避することができる。
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、上述した特許文献1および特許文献2に開示される従来技術では、スナップショットイメージは、通常、ハードディスクに退避されるため、復帰時には、ハードディスクのスピンアップを完了させなければならず、起動時間の短縮には限界があった。上記特許文献1には、半導体記憶装置についての言及があるが、フラッシュSSD(Solid State Drive)などの半導体記憶装置は、ハードディスクよりも記憶容量の単価が一般に高く、充分なスナップショット領域を確保するために大容量のSSDを採用すると、HDDの容量を増加させるよりも装置のコストアップにつながる。また、特許文献1の技術のように、ユーザ毎にハイバネーション領域を設けることを想定すると、さらにコストアップとなる。
【0009】
一方、SSD内に充分なスナップショット領域が確保できない場合、SSDに確保されたスナップショット領域の容量を超えた分はHDD内に保存されることになる。この場合、スピンアップ完了前にSSD内のスナップショット領域の読み出しが完了してしまうと、結局スピンアップの完了を待たなければならない。特許文献3の技術は、HDDのデータをキャッシュした不揮発メモリから起動時にデータを読み込むことにより、スピンアップ時間の問題を緩和しようというものであるが、キャッシュメモリに容量は小さいため、上述したスピンアップの完了を待たなければならない点は解消されない。
【0010】
またフラッシュSSD等には記憶素子の書換回数の実質的な上限があるため、ハイバネーション遷移のたびにスナップショット全体がSSDに書き込まれてしまうことは、フラッシュSSDの寿命が改善されているとはいえ、複合機などこまめな省電力動作が要請される機器においては特に好ましいとは言えない。
【0011】
つまり、上述した起動時間の短縮化の要請を満たし、かつ、フラッシュSSDなどの不揮発性記憶装置に保存されるスナップショットを削減することを可能とする技術の開発が望まれていた。
【0012】
本発明は、上記従来技術の問題点に鑑みてなされたものであり、本発明は、確保すべき不揮発性記憶装置内のスナップショット領域の容量を削減することができ、不揮発性記憶装置への負荷を削減し、かつ、休止状態への移行および休止状態からの復帰を短縮することができる画像処理装置、休止方法および復帰方法を提供することを目的する。
【課題を解決するための手段】
【0013】
本発明は、上記課題を解決するために、主記憶装置、不揮発性記憶装置およびディスク型記憶装置を備え、下記の特徴を有する画像処理装置を提供する。すなわち本発明の画像処理装置は、当該画像処理装置の電源スイッチの切断等による休止状態への移行要求に応答して、実行中のアプリケーション手段に対して停止を通知する通知手段と、休止状態への移行要求に対応して、上記主記憶装置の退避可能な1以上のページまたはセグメントといった区画内の情報を上記ディスク型記憶装置に退避するメモリ管理手段と、主記憶装置のスナップショットであってディスク型記憶装置に退避された情報による情報量が削減された当該スナップショットを、上記不揮発性記憶装置が提供する領域を少なくとも含む記憶領域に作成する作成手段とを含む。本発明の画像処理装置が備えるリレー手段は、スナップショットの作成が完了した後、上記主記憶装置への電力供給を切断する。
【0014】
さらに本発明では、画像処理装置は、当該画像処理装置の電源スイッチの投入等による休止状態からの復帰要求に応答して、上記記憶領域からスナップショットを読み出して主記憶装置上に展開する展開手段を含むことができる。この場合、メモリ管理手段は、動作を再開したアプリケーション手段からの要求に応答して、上記ディスク型記憶装置に退避されている1以上の区画のうちの該要求に対応する区画内の情報を主記憶装置に書き戻すことができる。
【0015】
また本発明では、上記スナップショットのうちの少なくとも不揮発性記憶装置のデータ転送速度でディスク型記憶装置のスピンアップ時間をかけて転送可能な容量分については、不揮発性記憶装置が提供する領域に保存し、上記スナップショットのうちの残余分については、ディスク型記憶装置が提供する領域に保存することができる。
【0016】
また本発明によれば、上記画像処理装置が実行する休止方法が提供される。本発明の休止方法では、画像処理装置は、休止状態への移行要求に応答して、実行中のアプリケーション手段に対して停止を通知するステップと、休止状態への移行要求に対応して、主記憶装置の退避可能な1以上の区画内の情報をディスク型記憶装置に退避するステップと、主記憶装置のスナップショットであってディスク型記憶装置に退避された情報による情報量が削減された当該スナップショットを、不揮発性記憶装置が提供する領域を少なくとも含む記憶領域に作成するステップと、スナップショットの作成が完了した後、リレー手段を制御して主記憶装置への電力供給を切断するステップとを実行する。
【0017】
さらに本発明によれば、上記画像処理装置が実行する復帰方法が提供される。本発明の復帰方法では、画像処理装置は、休止状態からの復帰要求に応答して、不揮発性記憶装置が提供する領域を少なくとも含む記憶領域から、主記憶装置の前回の休止時点のスナップショットであってディスク型記憶装置に退避された情報による情報量が削減された当該スナップショットを読み出して、主記憶装置上に展開するステップと、展開が完了した後、停止中のアプリケーション手段に対して復帰通知を行うステップと、動作を再開したアプリケーション手段からの要求に応答して、ディスク型記憶装置に退避されている主記憶装置内の1以上の区画のうちの該要求に対応する区画内の情報を主記憶装置に書き戻すステップとを実行する。
【発明の効果】
【0018】
上記構成によれば、主記憶装置内の退避可能なページをディスク型記憶装置に退避し、主記憶装置上の退避した区画に対応する情報量を削減した上で、主記憶装置のスナップショットが不揮発性記憶装置に保存されるため、確保すべき不揮発性記憶装置内の容量を削減することができ、不揮発性記憶装置への負荷を削減し、休止状態への移行および休止状態からの復帰の短縮を図ることが可能となる。
【図面の簡単な説明】
【0019】
【図1】第1の実施形態の複合機のハードウェア構成を示す図。
【図2】第1の実施形態の複合機上に実現される機能ブロック図。
【図3】第1の実施形態の複合機が実行する休止処理を示すシーケンス図。
【図4】第1の実施形態の複合機が実行する強制スワップアウト処理を示すフローチャート。
【図5】システムメモリのメモリマップのデータ構造を示す図。
【図6】第1の実施形態の複合機が実行する(A)スナップショット作成処理、および(B)スナップショット展開処理を示すフローチャート。
【図7】電源投入後SSDから読み出される累積的な情報量を示すグラフ(A)、およびスナップショットの保存先を説明する図(B)。
【図8】第1の実施形態の複合機が実行する復帰処理を示すシーケンス図。
【図9】第2の実施形態の複合機が実行する休止処理を示すシーケンス図。
【図10】第2の実施形態の複合機が実行する強制スワップアウト処理を示すフローチャート。
【図11】第2の実施形態の複合機が実行するスナップショット作成処理を示すフローチャート。
【図12】第2の実施形態の複合機が実行する復帰処理を示すシーケンス図。
【図13】第2の実施形態の複合機が実行するスナップショット展開処理を示すフローチャート。
【発明を実施するための形態】
【0020】
以下、本発明の実施形態を説明するが、本発明の実施形態は、以下の実施形態に限定されるものではない。なお、以下の実施形態では、画像処理装置の一例として、コピー、スキャナ、プリント等の画像を扱う複数の機能を有する複合機を用いて説明する。
【0021】
図1は、第1の実施形態の複合機10のハードウェア構成を示す。複合機10は、コントローラ12と、オペレーションパネル40と、FCU(ファクシミリ・コントロール・ユニット)42と、エンジン部44とを含み構成される。コントローラ12は、CPU(中央演算処理装置)14と、NB(ノース・ブリッジ)18と、NB18を介してCPU14と接続するASIC20と、システムメモリ16とを含み構成される。
【0022】
システムメモリ16は、作業用メモリなどとして用いられ、本実施形態の主記憶装置を構成する。ASIC20は、画像処理用のハードウェア要素を有する画像処理用途向けのICであり、各種画像処理を実行し、AGP(Accelerated Graphic Port)46を介してNB18と接続される。
【0023】
ASIC20は、ROM(Read Only Memory)22と、SSD(Solid State Drive)24と、HDD(Hard Disk Drive)26と接続される。ROM22は、後述するブートローダを含む各種制御プログラムやフォントデータを格納する。SSD24は、オペレーティング・システム(以下、OSという。)からドライブとして認識される記憶装置であり、OS、ドライバ、標準アプリケーションなどの各種プログラム、各種システム情報を格納し、また、複合機10が休止状態に遷移する際に使用するスナップショット領域を提供する。SSD24は、本実施形態の不揮発性記憶装置を構成する。なお、不揮発性記憶装置としては、上述したSSDの他、EEPROM、FeRAM、MRAMなど、スピンアップが不要な如何なる不揮発性の半導体記憶装置を採用することができる。
【0024】
HDD26は、画像データ、文書データ、プログラム、フォントデータやフォームデータ、拡張アプリケーションのプログラムなどを蓄積し、また仮想記憶におけるスワップ領域、画像処理における画像領域を提供する。また、SSD24にハイバネーションのために確保できる容量の大きさによっては、HDD26は、スナップショット領域の一部を提供することもできる。HDD26は、アーム、ヘッド等の機械機構を含んで構成され、規定の回転数までスピンアップする必要のある記憶装置であり、本実施形態のディスク型記憶装置を構成する。
【0025】
コントローラ12は、さらにSB(サウス・ブリッジ)28と、NIC(ネットワーク・インタフェース・カード)30と、SD(Secure Digital)カード・スロット32と、USBインタフェース34と、IEEE1394インタフェース36と、セントロニクス・インタフェース38とを含み構成され、これらはPCIバス48を介してNB18と接続される。
【0026】
SB28は、図示しないPCIバス周辺デバイスなどとNB18とを接続するためのブリッジである。NIC30は、複合機10をインターネットやLANなどのネットワークに接続するインタフェース機器である。SDカード・スロット32は、図示しないSDカードを着脱可能に装着する。USBインタフェース34、IEEE1394インタフェース36およびセントロニクス・インタフェース38は、それぞれの規格に準じたインタフェースであり、印刷ジョブなどを受付けている。
【0027】
オペレーションパネル40は、コントローラ12上のASIC20と接続され、オペレータからの各種指示の入力を受付けや、画面表示を行うためのユーザ・インタフェースを提供する。FCU42およびエンジン部44は、PCIバス50を介してASIC20と接続する。FCU42は、G3またはG4といったファクシミリ通信規格に準じた通信方法を実行する。エンジン部44は、アプリケーションが発行したプリント指令やスキャン指令を受け、画像形成処理や画像読取処理を実行する。
【0028】
また本実施形態の複合機10は、さらに、電源スイッチ52とリレースイッチ54とを含み、電源スイッチ52とリレースイッチ54との両方が切断された場合に、各部への給電が停止されるよう構成されている。電源スイッチ52は、複合機10の外部から物理的に電源を投入または切断するためのスイッチである。リレースイッチ54は、複合機10の内部のソフトウェアから電源の投入または切断を制御するためのスイッチであり、本実施形態のリレー手段を提供する。ASIC20は、汎用入出力ポートを備え、本複合機10の電源スイッチ52の開閉状態を検知し、電源スイッチ52をバイパスするリレースイッチ54の開閉を制御することで、本複合機10の電力供給を制御する。
【0029】
本実施形態の複合機10は、上述したROM22、SSD24、HDD26、SDカード(図示せず)などから、ブートローダ、OS、各種アプリケーションなどの各種プログラムを読出し、システムメモリ16に展開して起動し、このシステムメモリ16を作業領域としてCPU14の制御の下、後述する各機能部を実現する。
【0030】
以下、機能ブロック図を参照しながら、本実施形態の複合機が有するハイバネーション機能について説明する。図2は、第1の実施形態の複合機10上に実現される機能ブロックを示す。図2に示す複合機10は、ブートローダ110と、OS120と、システム状態管理部130と、標準アプリケーション132と、拡張アプリケーション134とを含む。
【0031】
ブートローダ110は、複合機10への電源投入時に実行され、ハードウェアの初期化、コントローラの診断、ソフトウェアの初期化などを行う。また、ブートローダ110は、図示しないNVRAM(Non Volatile Random Access Memory)などに格納される起動フラグを参照するなどして、スナップショット領域にスナップショットが存在するか否かを判断し、通常起動を行うか、ハイバネーション復帰を行うかを判断する。
【0032】
通常起動時のシーケンスでは、CPU14は、ROM22からプログラムを読み出してブートローダ110を起動し、ブートローダ110の制御の下、SSD24からOS120を起動する。続いてOS120の制御の下、CPU14は、SSD24およびHDD26から上述したシステム状態管理部130およびアプリケーション132,134といった上位のソフトウェア・コンポーネントを起動し、複合機10の起動処理を完了させる。図2においては、ROM22、SSD24およびHDD26にプログラムが格納されている各機能手段がそれぞれ短形140a,140b,140cで示されているが、図2に示す実施形態に限定されるものではない。
【0033】
OS120は、UNIX(登録商標)などのオペレーティング・システムであり、複数のプロセスを並列に実行する、いわゆるマルチプロセス環境を提供する。説明する実施形態では、UNIX(登録商標)とするが、特に限定されるものではなく、その他、LINUX(登録商標)、Windows(登録商標)などの如何なるアーキテクチャのオペレーティング・システムを採用することができる。OS120は、具体的には、スナップショット作成部122と、メモリ管理部124と、OS用デバイスドライバ126と、電源スイッチ監視部128とを含む。
【0034】
メモリ管理部124は、OS120が管理するシステムメモリ16の範囲を決定し、各種ソフトウェア・コンポーネントに対し仮想メモリを提供する。メモリ管理部124は、プログラム毎にユーザプログラム領域とスタック領域とを割り当てる。またメモリ管理部124は、各種プログラムのプロセスの起動、動作状態、プロセススイッチに応じて、ページテーブルの内容を作成または変更し、各プログラムのプロセスに対して適切な物理メモリを割り当てる。プロセスに対して新たに割り当てる物理メモリが不足した場合には、メモリ管理部124は、HDD26上に確保されるスワップ領域と物理メモリとの間で、NRU(Not Recently Used)、LRU(Least Recently Used)アルゴリズムなどのページ置換アルゴリズムに従ってページの入れ替え、いわゆるスワッピング処理を行う。メモリ管理部124は、本実施形態のメモリ管理手段を提供する。
【0035】
なお、本実施形態では、ページング方式の仮想メモリのメモリ管理方式に従い、物理メモリとスワップ領域との間で入れ替えられる記憶領域の区間の単位がページ単位であるものとして説明するが、特に限定されるものではなく、他の実施形態では、セグメント方式を採用してもよい。
【0036】
OS用デバイスドライバ126は、OS120上からSSD24やHDD26などのストレージドライブへのアクセスを提供し、そのデータの読み書きを制御する。電源スイッチ監視部128は、図1に示したASIC20の電源スイッチ52の開閉状態が入力される汎用入出力ポートを監視し、電源スイッチ52の切断または投入を検知し、システム状態管理部130に通知する。
【0037】
スナップショット作成部122は、ハイバネーション機能により休止状態に移行する際に、現時点のスナップショットを作成し、次回起動時にハイバネーション復帰するべく起動フラグを変更して、リレー制御により電源を切断する。スナップショット作成部122は、より詳細には、複合機10内の各ハードウェアやプロセスのコンテキストを取得し、このコンテキストとともにシステムメモリ16の現時点のスナップショットをスナップショット領域に保存することで、スナップショットの作成を行う。スナップショット領域は、本実施形態では、少なくともSSD24が提供する領域を含む記憶領域であり、後述するように、他の実施形態では、HDD26が提供する領域を含むこともできる。なお、スナップショット作成部122は、本実施形態の作成手段を提供する。
【0038】
OS120の上位のシステム状態管理部130は、アプリケーション132,134の管理、オペレーションパネル40の制御、システム画面表示、LED表示、ハードウェア資源管理、割り込みアプリケーション制御などの処理を行う。システム状態管理部130は、本実施形態の通知手段を提供する。標準アプリケーション132としては、例えば、ページ記述言語(PDL:Page Description Language)により記述された印刷対象のデータをラスタライズして印刷設定に従い印刷するプリンタアプリケーションや、その他、コピーアプリケーション、スキャナアプリケーション、ファクシミリアプリケーション、ネットワークファイル機能を提供するウェブアプリケーションを挙げることができる。
【0039】
拡張アプリケーション134は、上記標準アプリケーション132に追加してインストールされるアプリケーションであり、複合機10のSDK(Software Development Kit)により作成されたアプリケーションなどを挙げることができる。なお、図2に示すように、拡張アプリケーション134は、一般的に、SSD24またはHDD26のいずれか任意のドライブにインストールすることができる。
【0040】
上述したように、通常の起動シーケンスでは、複合機10に電源投入後、ROM22、SSD24、HDD26に格納されている各種プログラムがシステムメモリ16上に読み込まれ、図2に示す各機能部が複合機10上に実現される。一方、ハイバネーション機能による休止状態からの復帰時のシーケンスでは、上述したスナップショット作成部122により作成された休止時点のシステムメモリ16のスナップショットが、スナップショット領域から読み出されて、システムメモリ16上に展開される。これにより、複合機10は、休止状態に遷移する直前の状態に復帰し、図2に示す各機能部が複合機10上に実現されることになる。
【0041】
上記復帰処理を実現するため、本実施形態のブートローダ110は、スナップショット展開部112と、ブートローダ用デバイスドライバ114とを含む。スナップショット展開部112は、複合機10が休止状態から復帰する際に、ブートローダ用デバイスドライバ114を介して、スナップショット領域からスナップショットを読み出し、システムメモリ16上に展開し、各ハードウェアや各プロセスのコンテキストを復帰させる。ブートローダ用デバイスドライバ114は、スナップショット展開部112からの要求に従い、SSD24またはHDD26からのデータ読み出しを行う。このブートローダ用デバイスドライバ114は、ブートローダ110の内部要求に対してデバイスアクセスを簡素に可能にしたものであり、OS120上のOS用デバイスドライバ126とは異なるモジュールである。
【0042】
以下、図3〜図8を参照しながら、本実施形態の複合機10が実行する休止処理および復帰処理についてより詳細に説明する。図3は、第1の実施形態の複合機10が実行する休止処理を示すシーケンス図である。図3に示す処理は、オペレータが電源スイッチ52を切断したことに応答してステップS101から開始される。
【0043】
オペレータが電源スイッチ52を切断すると、電源スイッチ監視部128は、ステップS101で、ASIC20の汎用入出力ポートの変化から電源スイッチ52の切断を検知し、ステップS102で、電源切断をシステム状態管理部130に状態通知する。なお、説明する実施形態では、複合機10に対する休止状態への移行要求は、複合機10の電源スイッチ52の切断により行われるものとするが、特に限定されるものではない。他の実施形態では、オペレーションパネル40のソフトウェアキーや、リモート管理インタフェースを介して休止状態への移行要求が行われてもよい。
【0044】
ステップS103では、システム状態管理部130は、予め登録されているアプリケーション群132,134のそれぞれに対し、停止の通知(状態変更依頼)を実施し、シャットダウン処理を依頼する。シャットダウン処理の依頼を受信した各アプリケーション132,134は、ステップS104で、内部で保持しているジョブをクリアし、シャットダウン処理を行い、ステップS105で、システム状態管理部130に完了を応答する。
【0045】
システム状態管理部130は、アプリケーション群132,134からの完了応答をすべて受信した後、ステップS106で、スナップショット作成部122に対し、スナップショットの作成の依頼を行う。ステップS107では、スナップショット作成部122は、スナップショット作成に先立って、スナップショットのデータサイズを削減するために、強制スワップアウト処理を実行する。
【0046】
強制スワップアウト処理中、ステップS108では、スナップショット作成部122がメモリ管理部124に対しページ取得要求を行い、ステップS109では、メモリ管理部124がシステムメモリ16内の管理しているページのうちから犠牲ページを選択し、当該犠牲ページのスワップアウトをOS用デバイスドライバ126に対して行う。なお、強制スワップアウト処理については、詳細を後述する。
【0047】
スナップショット作成部122は、ステップS110で、現時点のコンテキストを取得し、ステップS111で、スナップショット作成する。スナップショット作成中、スナップショット作成部122は、ステップS112で、OS用デバイスドライバ126を介して、スナップショットの範囲を示す付属情報と、スナップショット自体と、上記コンテキストとを保存する。ステップS113では、起動時のモードを示す起動フラグを、ハイバネーション復帰を示す値に書き換える。ステップS114では、スナップショット作成部122は、リレースイッチ54に接続する入出力ポートを介してリレースイッチ54を開くよう制御し、複合機10への電力供給を停止する。
【0048】
なお、説明する実施形態では、説明の便宜上、ステップS114のリレー制御により複合機10全体の電力供給が停止されるものとするが、より詳細な単位で給電を管理する他の実施形態では、ここでいう電力供給の停止は、少なくともシステムメモリ16への電力供給が停止することをいう。他の実施形態では、ステップS114でリレースイッチ54が開かれた後も、複合機10の定着ユニットなどへの電力の供給が継続されてもよく、この定着ユニットへの給電を個別に制御してもよい。また、システムメモリ16への電力供給の停止は、スナップショット作成後直ちに実施される必要はなく、システムメモリ16からの復帰に対応させるべく、所定時間維持されていてもよい。
【0049】
図4は、第1の実施形態の複合機10が実行する強制スワップアウト処理を示すフローチャートである。図4に示す処理は、図3に示したステップS106でスナップショット作成部122がスナップショット作成依頼を受信して、図3に示したステップS107に対応してステップS200から開始される。ステップS201では、スナップショット作成部122は、カーネル内のmalloc関数などを使用してメモリ取得を行う。ステップS202では、メモリ管理部124は、メモリ取得の要求に対して、空きページの取得を試みる。
【0050】
図5は、システムメモリ16のメモリマップを示す図である。図5に示すようにシステムメモリ16は、OS120の命令コード領域(text)と、OS120のデータ領域(data)とを含んで構成される。システムメモリ16は、さらにOS領域の後方に、ページ管理領域と、それ以下のページメモリ領域とを含んで構成される。OS120内のメモリ管理部124は、OS120、システム状態管理部130および各アプリケーション132,134に対し、このページメモリを提供する。ページメモリは、図5に示すように、全くの未使用状態である空きページと、プログラムが使用中であるアクティブページと、プログラムがしばらく使用しておらず、HDD26にスワップアウト可能なスワップアウト可能ページとの3種類から構成される。ここで、スワップアウト可能ページとは、所定のページ置換アルゴリズムに従って犠牲ページとして選択されうる領域をいい、一般に、ビット、キュー、リスト、カウンタ値などにより管理される。
【0051】
再び図4を参照すると、ステップS203では、メモリ管理部124は、空きページの取得に成功したか否かを判定する。ステップS203で、取得に成功したと判定された場合(YES)には、スナップショット作成部122に空きページを返却し、ステップS204へ処理を進める。ステップS204では、スナップショット作成部122は、取得した空きページをゼロフィルし、単一のパターンで埋め尽くし、ステップS201へ処理をループさせる。ステップS201〜S203の処理は、システムメモリ16内の空きページがスナップショット作成部122により取得され尽くすまで繰り返される。
【0052】
一方、ステップS203で、強制スワップアウト処理の開始時点の空きページがすべて取得されるなどし、空きページの取得に失敗したと判定された場合(NO)には、ステップS205へ処理を進める。ステップS205では、メモリ管理部124は、スワップアウト可能なページの取得を試み、ステップS206では、スワップアウト可能ページの取得に成功したか否かを判定する。ステップS206で、取得に成功したと判定された場合(YES)には、ステップS207へ処理を進め、メモリ管理部124は、OS用デバイスドライバ126のうちのHDD26のデバイスドライバを使用して、その取得したスワップ可能ページ内の情報をHDD26へスワップアウトさせる。
【0053】
ステップS208では、メモリ管理部124は、スワップアウトさせたページに関連してページ管理領域の内容の更新を行い、ステップS202へ処理を分岐させる。この場合、スワップアウトによって空きページが生成されているため、空きページの取得に成功し、ステップS204では、当該ページをゼロフィルし、ステップS201へ再び処理をループさせることになる。一方、ステップS206で、取得に失敗したと判定された場合(NO)には、ステップS209へ処理を分岐させ、本強制スワップアウト処理を終了させる。ステップS201〜ステップS209の処理フローにより、強制スワップアウト処理の開始時点の空きページおよびスワップアウト可能ページのすべてが、スナップショット作成部122に取得され、単一パターンで埋め尽くされることとなる。
【0054】
図6(A)は、第1の実施形態の複合機10が実行するスナップショット作成処理を示すフローチャートである。図6(A)は、図3に示したステップS111のスナップショット作成部122が実行する処理の詳細を示すものである。図6(A)に示す処理は、図3に示したステップS111に対応してステップS300から開始される。スナップショット作成部122は、ステップS301で、OS120の命令コード領域(text)の先頭アドレスpを取得し、ステップS302で、ページメモリ領域の終端アドレスqを取得し、ステップS303で、取得した先頭アドレスpと終端アドレスqとをスナップショットの付属情報としてスナップショット領域に保存する。
【0055】
ステップS304では、スナップショット作成部122は、先頭アドレスpから終端アドレスpの範囲を圧縮し、ステップS305で、OS用デバイスドライバ126を介して、圧縮された範囲をスナップショットの本体情報としてスナップショット領域に保存する。本実施形態では、スナップショットの範囲は、OS120の先頭からページメモリ領域の終端までの全体を含むが、上述した強制スワップアウト処理が実施されているため、スナップショット作成部122が取得したページは単一パターンで埋められており、実質的に情報量を増加させるものではない。したがって、本実施形態では、HDD26にスワップアウトされたページ分の情報量が実質的に削減されたスナップショットが保存されることとなる。
【0056】
上述したスナップショット領域は、第1の実施形態では、SSD24が提供する記憶領域のみを含むものとして説明するが、他の実施形態では、少なくともSSD24が提供する記憶領域を含み、加えてHDD26が提供する記憶領域を含むこともできる。以下、HDD26が提供する記憶領域を含むスナップショット領域を利用する他の実施形態について説明する。HDD26の記憶領域を利用する場合、復帰時におけるHDD26のスピンアップ時間による不具合の回避と、SSD24上のスナップショット領域の削減とを両立させる観点からは、SSD24のデータ転送速度によりHDD26のスピンアップ時間をかけて転送可能な容量分を少なくともSSD24に保存しておけば良いということになる。
【0057】
図7(A)は、電源投入後SSD24から読み出される累積的な情報量を示すグラフである。図7(A)に示すTiは、電源投入後からブートローダ110がSSD24にアクセス可能となるまでの時間を示し、Tsは、電源投入後からHDD26のスピンアップが完了するまでの時間を示す。Isは、電源投入後からHDD26のスピンアップが完了するまでの間にSSD24から読み出すことができる情報量を示す。スピンアップ時間TsでSSD24から読み出された累積情報量は、アクセスが可能となった後(Ti以降)、SSD24の読出時のデータ転送速度rに概ね比例して増加する。
【0058】
したがって、情報量Isは下記式(1)で表すことができる。また、SSD24は、スピンアップ時間を待つ必要がなく、電源投入後から即座にアクセス可能できる記憶装置であり、ブートローダ110もROM22に格納されていることを考慮すると、下記式(1)におけるTiは無視することができ、下記式(1)は下記式(2)として表される。
【0059】
【数1】
【0060】
つまり、スナップショット領域全体のうちSSD24上に保存されるデータ部の情報量I1がIs以上であれば、ハイバネーション復帰の際、HDD26のスピンアップ中、システムメモリ16へのスナップショットの読み込みが途切れないことになる。この得られた情報量IsまたはI1の値は、NVRAMなどに予め保存され、スナップショット作成時に参照されることになる。
【0061】
すなわち、以下、HDD26を利用する他の実施形態では、図6のステップS305で圧縮後のスナップショットの本体情報を保存する際に、図7(B)に示すように、先頭からI1(≧Is)分のスナップショットのデータ部については、OS用デバイスドライバ126のうちのSSDに対応するデバイスドライバを介してSSD内スナップショット記憶領域に保存し、残余分(I2)のデータ部は、OS用デバイスドライバ126のうちのHDDに対応するデバイスドライバを介してHDD内スナップショット記憶領域に保存する。なお、この場合、SSD内スナップショット記憶領域に保存されるアドレス範囲と、HDD内スナップショット記憶領域に保存されるアドレス範囲とは、付属情報として個別に保存することができる。
【0062】
SSD24自体の容量は、SSD24に格納されるOSやファームウェアの容量Vfと、スナップショットの情報量I1を保存するための記憶領域容量V1(≧I1≧Is)との和(Vf+V1)以上となるように決定すればよい。また、ユーザ毎というようにスナップショット領域を複数準備するような場合には、SSD24自体の容量は、用意するスナップショット領域数NをV1に乗算して求められる和(Vf+V1×N)以上となるように決定すればよい。したがって、HDD26を利用する他の実施形態では、複合機10のシステムメモリ16の容量にかかわらず、HDD26のスピンアップ時間中読み出しを継続できる容量をSSD24に確保できればよいということになる。
【0063】
さらに、SSD24上に保存される情報量I1にマージンを設ける場合や圧縮保存される場合など、ハイバネーション復帰時において、HDD26がスピンアップ完了した後、SSD24からの読み出しとHDD26からの読み出しが並列して行われる場合がある。この場合、好ましくはSSD24およびHDD26へのデータ転送バスをそれぞれ独立したものとすることにより、効率的にスナップショットをシステムメモリ16上に展開することができる。さらに他の実施形態では、HDD26には圧縮しない形式でスナップショットを保存することで、HDD26からは直接メモリアクセス(DMA)モードでデータ転送することが可能となる。DMAモードのデータ転送では、CPU14を使用しないため、SSD24からの読み出しと独立してHDD26内のスナップショットをシステムメモリ16上に展開することができる。
【0064】
以下、第1の実施形態の複合機10が実行する復帰処理について説明する。図8は、第1の実施形態の複合機10が実行する復帰処理を示すシーケンス図である。図8に示す処理は、オペレータが電源スイッチ52を投入したことに応答してステップS401から開始される。説明する実施形態では、複合機10に対する休止状態からの復帰要求は、複合機10の電源スイッチ52の投入により行われるものとするが、特に限定されるものではない。
【0065】
オペレータが電源スイッチ52を投入すると、コントローラ12に給電が開始され、ステップS401で、CPU14は、ROM22からプログラムを読み出してブートローダ110を起動する。ステップS402では、ブートローダ110は、ハードウェアを初期化し、コントローラの診断をし、ソフトウェアの初期化をし、NVRAMの起動フラグを確認する。ここでは、ハイバネーション復帰を示す値が確認されるものとし、通常起動のシーケンスについては説明を割愛する。
【0066】
ハイバネーション復帰を示す値が確認されると、ステップS403で、ブートローダ110は、スナップショット展開部112にスナップショットの展開処理の実行を依頼する。ステップS404で、スナップショット展開部112は、ブートローダ用デバイスドライバ114を介して、スナップショット領域からコンテキストを読み出し、スナップショットの付属情報を読み出してスナップショットの展開先のアドレス範囲を割り出し、スナップショット本体情報を読み出しながらシステムメモリ16上に展開する。
【0067】
図6(B)は、第1の実施形態の複合機10が実行するスナップショット展開処理を示すフローチャートである。図6(B)は、図8に示したステップS404のスナップショット展開部112が実行する処理の詳細を示すものである。図6(B)に示す処理は、図8に示したステップS404に対応してステップS500から開始される。スナップショット展開部112は、ステップS501で、SSD24のスナップショット領域からスナップショットの付属情報として保存された先頭アドレスpと、終端アドレスqとを取得し、ステップS502で、スナップショット領域からスナップショットを読み出し、伸張しながら、取得した先頭アドレスpから終端アドレスqまでの領域に展開し、ステップS503で処理を終了させる。
【0068】
上述したHDD26の記憶領域を含むスナップショット領域を利用する他の実施形態では、スナップショット展開部112は、まずブートローダ用デバイスドライバ114のSSD24に関するデバイスドライバを介して、スナップショットのうちSSD24内のデータ部をSSD24が提供する記憶領域から読み出し、システムメモリ16上に伸張展開する。一方、スナップショット展開部112は、起動直後からHDD26のスピンアップを開始し、スピンアップが完了しアクセスが可能となることを待ち合わせる。スナップショット展開部112は、HDD26のスピンアップが完了すると、スナップショットのうちHDD26内のデータ部をHDD26が提供する記憶領域から読み出し、システムメモリ16上に伸張展開する。この際に展開先は付属情報から取得することができる。
【0069】
SSD24およびHDD26へのデータ転送バスが独立している場合は、スナップショットをシステムメモリ16上に効率的に展開することができる。さらに圧縮しない形式でスナップショットがHDD26に保存されている場合には、HDD26からは直接メモリアクセス(DMA)モードでデータ転送することができる。
【0070】
再び図8を参照して第1の実施形態について説明する。ステップS405では、スナップショット展開部112は、読み出したコンテキストをハードウェアに復元し、スナップショット作成部122に制御を戻す。このとき、CPU14のプログラムカウンタを、図3に示すステップS114のリレー制御の後に変更しておき、電源切断処理分の命令をスキップさせるものとする。
【0071】
コンテキスト復帰後、スナップショット作成部122は、ステップS406で起動フラグを通常起動を示す値に変更し、ステップS407でリレースイッチ54を閉じる。ステップS408では、スナップショット作成部122は、メモリ管理部124に対し、休止状態に移行した際に要求した分のページを開放するよう依頼し、メモリ管理部124は、空きページを増加させる。ステップS409では、スナップショット作成部122は、システム状態管理部130にスナップショット作成依頼に対応する完了応答を行う。
【0072】
ステップS410では、完了応答を受けたシステム状態管理部130は、予め登録されているアプリケーション群132,134のそれぞれに対し、復帰の通知(状態変更依頼)を実施し、復帰処理を依頼する。ステップS411では、各アプリケーション132,134は、再度動作開始を行う。この間、HDD26上にスワップアウトされてシステムメモリ16上にページが存在しないアプリケーションは、ステップS412で、メモリ管理部124に対しページ要求をし、ステップS413で、メモリ管理部124は、OS用デバイスドライバ126を介してHDD26上に退避されていた要求のページをシステムメモリ16上にページインする。このように、アプリケーション132,134は、HDD26からページインさせながら動作し、最終的にアプリケーション群132,134が復帰処理を完了させると、ステップS414で、システム状態管理部130に完了を応答し、本ハイバネーション復帰処理を完了させる。
【0073】
上述した第1の実施形態によれば、システムメモリ16内のスワップアウト可能なページをHDD26に強制的にスワップアウトし、システムメモリ16上の退避したページを単一パターンで埋めることで、SSD24に保存されるスナップショットの情報量を削減し、復帰時にはスピンアップの制約なく起動時間を短縮することが可能となる。ひいては、高速起動が可能な複合機を低コストで実現することが可能となる。また、SSD24に発生する書き込みの情報量が削減されるため、負荷が軽減され、こまめな省電力動作が要請される観点から好適である。
【0074】
また、HDD26の記憶領域を含むスナップショット領域を利用する実施形態では、さらに、スピンアップ中のSSDからの継続的なスナップショットの読み出しを保証しつつ、SSD24に確保しなければならない容量を最小化することができるため、高速起動が可能な複合機をさらに低コストで実現することが可能となり、SSD24に発生する書き込みの情報量をさらに削減できる。
【0075】
以下、異なる強制スワップアウト処理を実行する第2の実施形態の複合機について説明する。なお、第2の実施形態の複合機は、第1の実施形態のものと類似しているため、以下、図9〜図13を参照しながら、相違点を中心に説明する。図9は、第2の実施形態の複合機10が実行する休止処理を示すシーケンス図である。図9に示す処理は、第1の実施形態の説明の際に参照した図3に示す処理と類似し、ステップS601〜S606の処理がステップS101〜S106の処理と同一であるため、以下、ステップS607から説明する。
【0076】
システム状態管理部130からスナップショット作成依頼を受けて、スナップショット作成部122は、ステップS607で、スナップショット作成に先立って、スナップショットのデータサイズを削減するために、強制スワップアウト処理を実行する。
【0077】
強制スワップアウト処理中、ステップS608では、スナップショット作成部122は、メモリ管理部124で管理しているページ管理情報の変更を行う。ステップS609では、メモリ管理部124は、OS用デバイスドライバ126のうちHDDのデバイスドライバに対して、スワップアウト可能ページのスワップアウト要求を行う。ステップS610では、メモリ管理部124は、スワップアウト処理の完了をスナップショット作成部122に報告する。ステップS611では、スナップショット作成部122は、メモリ管理部124で管理しているページ管理情報を元に戻す。
【0078】
図10は、第2の実施形態の複合機10が実行する強制スワップアウト処理を示すフローチャートである。図10に示す処理は、図9に示したステップS606でスナップショット作成部122がスナップショット作成依頼を受信して、図9に示したステップS607に対応してステップS700から開始される。スナップショット作成部122は、メモリ管理部124にページ管理情報を問い合わせて、ステップS701で、ページメモリの総数Xを取得し、ステップS702で、アクティブページの数Yを取得し、ステップS703で、空きページの目標値Z1を取得する。メモリ管理部124は、空きページの数が設定された目標値に一致するように仮想メモリを管理する。
【0079】
ステップS704では、スナップショット作成部122は、メモリ管理部124の目標値をZ1から、アクティブページを除くページの総数(つまりX−Y)に変更し、当該目標値が達成されるまで動作を一旦停止し、処理はステップS705へ進められる。ステップS705〜S708の処理では、メモリ管理部124は、この目標値の変更に伴い、空きページの数を目標値に一致させるべく制御を行う。ステップS705では、メモリ管理部124は、現実の空きページ数Z2が目標値(X−Y)に達したか否かを判断する。
【0080】
ステップS705で、現実の空きページ数Z2が目標値(X−Y)に達していないと判定された場合(YES)、ステップS706へ処理を進める。ステップS706では、メモリ管理部124は、ページメモリ領域内のスワップアウト可能ページを取得し、ステップS707で、OS用デバイスドライバ126のうちのHDD26のデバイスドライバを使用して、その取得したスワップ可能ページ内の情報をHDD26へスワップアウトさせる。
【0081】
ステップS708では、メモリ管理部124は、スワップアウトさせたページに関連してページ管理領域の内容の更新を行い、ステップS705へ処理を戻し、空きページZ2が目標値(X−Y)に一致するまでループさせる。ステップS705で、現実の空きページ数Z2が目標値(X−Y)に達したと判定された場合(NO)には、ステップS709へ処理を進める。ステップS709では、スナップショット作成部122は、動作を再開し、現在の目標値(X−Y)から元の目標値Z1に戻し、ステップS710で本強制スワップアウト処理を終了させる。ステップS701〜S710の処理フローにより、強制スワップアウト処理の開始時点のスワップアウト可能ページがすべて空きページとなる。
【0082】
再び図9を参照すると、スナップショット作成部122は、ステップS612で、現時点のコンテキストを取得し、ステップS613で、スナップショット作成する。スナップショット作成中、スナップショット作成部122は、ステップS614で、OS用デバイスドライバ126を介して、スナップショットの範囲を示す付属情報と、スナップショット自体と、上記コンテキストとを保存する。
【0083】
図11は、第2の実施形態の複合機10が実行するスナップショット作成処理を示すフローチャートである。図11は、図9に示したステップS613のスナップショット作成部122が実行する処理の詳細を示すものである。図11に示す処理は、図9に示したステップS613に対応してステップS800から開始される。スナップショット作成部122は、ステップS801で、OS120の命令コード領域(text)の先頭アドレスpを取得し、ステップS802で、ページ管理領域の終端アドレスqを取得し、ステップS803で、取得した先頭アドレスpと終端アドレスqとをスナップショットの付属情報(基本部分)としてスナップショット領域に保存する。ステップS804では、スナップショット作成部122は、OS用デバイスドライバ126を介して、先頭アドレスpから終端アドレスpの範囲をスナップショット(基本部分)としてスナップショット領域に保存する。
【0084】
スナップショット作成部122は、ステップS805で、ページ番号を1を処理対象の初期値として設定し、ステップS806で、ページ管理領域からページ番号n(つまり初回は1である。)のページに関する情報を取得し、ステップS807で、ページ情報の取得に成功したか否かを判定する。ステップS807で、ページ情報の取得に成功した場合(YES)、ステップS808へ処理を進める。ステップS808では、スナップショット作成部122は、n番目のページがアクティブページであるか否かを判定する。ステップS808で、アクティブページであると判定された場合(YES)には、ステップS809へ処理を進める。
【0085】
スナップショット作成部122は、ステップS809で、当該ページ番号nの物理アドレス(例えば4バイト)をスナップショットの付属情報としてスナップショット領域に保存し、ステップS810で、当該ページ番号nのページをスナップショット(ページ部)としてスナップショット領域に保存する。ステップS811では、スナップショット作成部122は、ページ番号nを1インクリメントし、ステップS806へ処理をループさせる。一方、ステップS808で、アクティブページではないと判定された場合(NO)には、ステップS811へ直接処理を進め、ページ番号nをインクリメントし、ステップS806へ処理をループさせる。
【0086】
終端のページまで上述した判定が繰り返されると、ステップS807では、ページ情報の取得に失敗することとなる。ステップS807で、ページ情報の取得に失敗した場合(NO)には、ステップS812へ処理を進める。ステップS812では、スナップショット作成部122は、スナップショット終端情報(例えば4バイトのゼロ)を付属情報として書き込み、ステップS813で処理を終了する。ステップS806〜S811の処理により、管理対象のページのうちすべてのアクティブページについて、物理アドレスが付属情報(ページ部)として、データがスナップショット(ページ部)としてページ毎に保存されることになる。
【0087】
再び図9を参照すると、ステップS615では、起動フラグをハイバネーション復帰を示す値に書き換え、ステップS616では、スナップショット作成部122は、入出力ポートを介してリレースイッチ54を開くよう制御し、複合機10への電力供給を停止する。
【0088】
本実施形態では、スナップショットは、OS120の先頭からページ管理領域の終端までの基本部分と、各アクティブページのページ部分とから構成され、休止状態へ移行する開始時点でのアクティブページ以外のページ、すなわち空きページおよびスワップアウト可能ページはスナップショットの対象から除外される。したがって、第2の実施形態においても、HDD26にスワップアウトされたページ分の情報量が削減されたスナップショットが保存されることとなる。
【0089】
以下、第2の実施形態の複合機10が実行する復帰処理について説明する。図12は、第2の実施形態の複合機10が実行する復帰処理を示すシーケンス図である。図12に示す処理は、オペレータが電源スイッチ52を投入したことに応答してステップS901から開始される。オペレータが電源スイッチ52を投入すると、コントローラ12に給電が開始され、ステップS901で、ブートローダ110が起動し、ステップS902では、ブートローダ110は、ハードウェアを初期化し、コントローラの診断をし、ソフトウェアの初期化をし、NVRAMの起動フラグを確認する。ここでは、第1の実施形態と同様に、ハイバネーション復帰を示す値が確認されるものとし、通常起動のシーケンスについては説明を割愛する。
【0090】
ハイバネーション復帰を示す値が確認されると、ステップS903で、ブートローダ110は、スナップショット展開部112にスナップショットの展開処理の実行を依頼する。ステップS904で、スナップショット展開部112は、ブートローダ用デバイスドライバ114を介して、スナップショット領域からコンテキストを読み出し、スナップショットの付属情報を読み出してスナップショットの展開先のアドレス範囲を割り出し、スナップショット本体情報を読み出しながらシステムメモリ16上に展開する。
【0091】
図13は、第2の実施形態の複合機10が実行するスナップショット展開処理を示すフローチャートである。図13は、図12に示したステップS904のスナップショット展開部112が実行する処理の詳細を示すものである。図13に示す処理は、図12に示したステップS904に対応してステップS1000から開始される。スナップショット展開部112は、ステップS1001で、SSD24のスナップショット領域からスナップショットの付属情報(基本部)として保存された先頭アドレスpと、終端アドレスqとを取得し、ステップS1002で、スナップショット領域からスナップショット(基本部)を読み出し、取得した先頭アドレスpから終端アドレスqまでのシステムメモリ16の領域に展開する。
【0092】
ステップS1003では、スナップショット展開部112は、スナップショットの付属情報(基本部)直後の付属情報を読み出し、ステップS1004で、付属情報に記述されるアドレス情報が終端情報であるか否かを判定する。ステップS1004で、終端情報ではないと判定された場合(NO)には、ステップS1005へ処理を進める。ステップS1005では、上述したアドレス情報を物理アドレスと読み替えて、スナップショット領域からページを読み込出し、システムメモリ16上の当該物理アドレスに展開する。ステップS1006では、スナップショット展開部112は、付属情報(ページ部)のアドレスを物理アドレスのバイト数(例えば4バイト)進め、ステップS1003へ処理をループさせる。
【0093】
休止状態へ移行時に保存されたすべてのアクティブページの展開が完了すると、終端情報に到達することとなる。ステップS1004で、終端情報ではあると判定された場合(YES)には、ステップS1007へ分岐させ、本処理を終了する。なお、上記実施形態では、スナップショットの本体と、付属情報とが分離して保存される場合について説明したが、他の実施形態では、スナップショットの付属情報と、本体とを交互に順に保存してもよい。
【0094】
再び図12を参照すると、ステップS905では、読み出したコンテキストをハードウェアに復元し、スナップショット作成部122に制御を戻す。このとき、CPU14のプログラムカウンタを、図9に示すステップS616のリレー制御の後に変更しておき、電源切断処理分の命令をスキップさせるものとする。
【0095】
コンテキスト復帰後、スナップショット作成部122は、ステップS906で起動フラグを通常起動を示す値に変更し、ステップS907でリレースイッチ54を閉じる。ステップS908では、スナップショット作成部122は、システム状態管理部130にスナップショット作成依頼に対応する完了応答を行う。以降のステップS909〜S913の処理は、図8に示したステップS410〜414の処理と同様であるため割愛する。
【0096】
上述した第2の実施形態によれば、さらに、メモリ管理部124の基本機構を流用してスワップアウト可能なページをHDD26へ保存しているため、第1の実施形態に比較して、スナップショット作成部122における強制スワップアウト処理が簡素化されている。
【0097】
以上説明したように上述した実施形態によれば、確保すべき不揮発性記憶装置(SSD24)内のスナップショット領域の容量を削減することができ、不揮発性記憶装置(SSD24)への負荷を削減し、かつ、休止状態への移行および休止状態からの復帰を迅速に実現することができる画像処理装置、該画像処理装置の休止方法および復帰方法を提供することができる。
【0098】
なお画像処理装置としては、上述した実施形態の複合機能を有した複合機に限られるものではなく、特定の用途に応じて、複写機やプリンタや印刷機などの画像形成装置、スキャナなどの画像読取装置、デジタルカメラやデジタルビデオカメラなどの撮像装置、プロジェクタなどの音声映像入出力装置、不揮発性記憶装置およびディスク型記憶装置の両方を備える如何なる装置として好適に構成することができる。
【0099】
これまで本発明の実施形態について説明してきたが、本発明の実施形態は上述した実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
【符号の説明】
【0100】
10…複合機、12…コントローラ、14…CPU、16…システムメモリ、18…NB、20…ASIC、22…ROM、24…SSD、26…HDD、28…SB、30…NIC、32…SDカード・スロット、34…USBインタフェース、36…IEEE1394インタフェース、38…セントロニクス・インタフェース、40…オペレーションパネル、42…FCU、44…エンジン部、46…AGP、48…PCIバス、50…PCIバス、52…電源スイッチ、54…リレースイッチ、110…ブートローダ、112…スナップショット展開部、114…ブートローダ用デバイスドライバ、120…OS、122…スナップショット作成部、124…メモリ管理部、126…OS用デバイスドライバ、128…電源スイッチ監視部、130…システム状態管理部、132…標準アプリケーション、134…拡張アプリケーション
【先行技術文献】
【特許文献】
【0101】
【特許文献1】特開2002−324012号公報
【特許文献2】特開平9−44417号公報
【特許文献3】特開2003−85041号公報
【特許請求の範囲】
【請求項1】
主記憶装置、不揮発性記憶装置およびディスク型記憶装置を備える画像処理装置であって、
休止状態への移行要求に応答して、実行中のアプリケーション手段に対して停止を通知する通知手段と、
前記休止状態への移行要求に対応して、前記主記憶装置の退避可能な1以上の区画内の情報を前記ディスク型記憶装置に退避するメモリ管理手段と、
前記主記憶装置のスナップショットであって前記ディスク型記憶装置に退避された情報による情報量が削減された当該スナップショットを、前記不揮発性記憶装置が提供する領域を含む記憶領域に作成する作成手段と、
前記スナップショットの作成が完了した後、前記主記憶装置への電力供給を切断するリレー手段と
を含む、画像処理装置。
【請求項2】
休止状態からの復帰要求に応答して、前記記憶領域から前記スナップショットを読み出して前記主記憶装置上に展開する展開手段を含み、前記メモリ管理手段は、動作を再開した前記アプリケーション手段からの要求に応答して、前記ディスク型記憶装置に退避されている前記1以上の区画のうちの該要求に対応する区画内の情報を前記主記憶装置に書き戻す、請求項1に記載の画像処理装置。
【請求項3】
前記作成手段は、前記スナップショットのうちの少なくとも前記不揮発性記憶装置のデータ転送速度により前記ディスク型記憶装置のスピンアップ時間をかけて転送可能な容量分については前記不揮発性記憶装置が提供する領域に保存し、前記スナップショットのうちの残余分を前記ディスク型記憶装置が提供する領域に保存する、請求項1または2に記載の画像処理装置。
【請求項4】
前記展開手段は、先ず前記不揮発性記憶装置から前記スナップショットの読み出しを開始し、前記ディスク型記憶装置のスピンアップが完了した後、前記ディスク型記憶装置から前記スナップショットの読み出しを開始する、請求項3に記載の画像処理装置。
【請求項5】
前記不揮発性記憶装置と、前記ディスク型記憶装置とは、独立したデータ転送バスに接続され、前記不揮発性記憶装置および前記ディスク型記憶装置からの前記スナップショットの読み出しは、並列に行われる、請求項4に記載の画像処理装置。
【請求項6】
前記作成手段は、前記スナップショットの作成の前に、前記メモリ管理手段に対し前記主記憶装置内の区画の取得要求を行い、取得された前記主記憶装置の未使用の区画または退避後の区画内を単一の値で埋めることを特徴とし、前記スナップショットは、圧縮されて前記記憶領域に保存される、請求項1〜5のいずれか1項に記載の画像処理装置。
【請求項7】
前記作成手段は、前記スナップショットの作成の前に、前記メモリ管理手段に対し、前記主記憶装置内の未使用の区画の数に対する目標値を、使用中の区画を除く区画の総数へ変更させ、未使用の区画の数が目標値に達した後、前記目標値を元に戻すことを特徴とし、前記スナップショットは、前記使用中の区画のイメージと、付属情報として該使用中の区画の物理アドレスとを含み、前記未使用の区画が除外されている、請求項1〜5のいずれか1項に記載の画像処理装置。
【請求項8】
主記憶装置、不揮発性記憶装置およびディスク型記憶装置を備える画像処理装置が実行する方法であって、
画像処理装置が、休止状態への移行要求に応答して、実行中のアプリケーション手段に対して停止を通知するステップと、
画像処理装置が、前記休止状態への移行要求に対応して、前記主記憶装置の退避可能な1以上の区画内の情報を前記ディスク型記憶装置に退避するステップと、
画像処理装置が、前記主記憶装置のスナップショットであって前記ディスク型記憶装置に退避された情報による情報量が削減された該スナップショットを、前記不揮発性記憶装置が提供する領域を含む記憶領域に作成するステップと、
画像処理装置が、前記スナップショットの作成が完了した後、リレー手段を制御して、前記主記憶装置への電力供給を切断するステップと
を含む、休止方法。
【請求項9】
前記作成するステップは、画像処理装置が、前記スナップショットのうちの少なくとも前記不揮発性記憶装置のデータ転送速度により前記ディスク型記憶装置のスピンアップ時間をかけて転送可能な容量分については前記不揮発性記憶装置が提供する領域に保存するステップと、画像処理装置が、前記スナップショットのうちの残余分を前記ディスク型記憶装置が提供する領域に保存するステップとを含む、請求項8に記載の休止方法。
【請求項10】
前記作成するステップは、メモリ管理手段に対し前記主記憶装置内の区画の取得要求を行うステップと、取得された前記主記憶装置の未使用の区画または退避された区画内を単一の値で埋めるステップと、前記スナップショットを圧縮するステップとを含む、請求項8または9に記載の休止方法。
【請求項11】
前記作成するステップは、メモリ管理手段に対し、前記主記憶装置内の未使用の区画の数に対する目標値を、使用中の区画を除く区画の数へ変更させるステップと、未使用の区画の数が目標値に達した後、前記目標値を元に戻すステップと、前記未使用の区画を除外して前記使用中の区画のイメージを、付属情報として該使用中の区画の物理アドレスとともにをスナップショットに含めるステップとを含み、請求項8または9に記載の休止方法。
【請求項12】
主記憶装置、不揮発性記憶装置およびディスク型記憶装置を備える画像処理装置が実行する方法であって、
画像処理装置が、休止状態からの復帰要求に応答して、前記不揮発性記憶装置が提供する領域を含む記憶領域から、前記主記憶装置の前回の休止時点のスナップショットであって前記ディスク型記憶装置に退避された情報による情報量が削減された該スナップショットを読み出して前記主記憶装置上に展開するステップと、
画像処理装置が、前記展開が完了した後、停止中のアプリケーション手段に対して復帰通知を行うステップと、
画像処理装置が、動作を再開した前記アプリケーション手段からの要求に応答して、前記ディスク型記憶装置に退避されている前記主記憶装置内の1以上の区画のうちの該要求に対応する区画内の情報を前記主記憶装置に書き戻すステップと、
を含む、復帰方法。
【請求項13】
前記展開するステップは、
前記不揮発性記憶装置から、前記スナップショットのうちの前記不揮発性記憶装置のデータ転送速度により前記ディスク型記憶装置のスピンアップ時間をかけて転送可能な容量分の読み出しを開始するステップと、
前記ディスク型記憶装置のスピンアップが完了した後、前記ディスク型記憶装置から前記スナップショットのうちの残余分の読み出しを開始するステップと
を含む、請求項12に記載の復帰方法。
【請求項1】
主記憶装置、不揮発性記憶装置およびディスク型記憶装置を備える画像処理装置であって、
休止状態への移行要求に応答して、実行中のアプリケーション手段に対して停止を通知する通知手段と、
前記休止状態への移行要求に対応して、前記主記憶装置の退避可能な1以上の区画内の情報を前記ディスク型記憶装置に退避するメモリ管理手段と、
前記主記憶装置のスナップショットであって前記ディスク型記憶装置に退避された情報による情報量が削減された当該スナップショットを、前記不揮発性記憶装置が提供する領域を含む記憶領域に作成する作成手段と、
前記スナップショットの作成が完了した後、前記主記憶装置への電力供給を切断するリレー手段と
を含む、画像処理装置。
【請求項2】
休止状態からの復帰要求に応答して、前記記憶領域から前記スナップショットを読み出して前記主記憶装置上に展開する展開手段を含み、前記メモリ管理手段は、動作を再開した前記アプリケーション手段からの要求に応答して、前記ディスク型記憶装置に退避されている前記1以上の区画のうちの該要求に対応する区画内の情報を前記主記憶装置に書き戻す、請求項1に記載の画像処理装置。
【請求項3】
前記作成手段は、前記スナップショットのうちの少なくとも前記不揮発性記憶装置のデータ転送速度により前記ディスク型記憶装置のスピンアップ時間をかけて転送可能な容量分については前記不揮発性記憶装置が提供する領域に保存し、前記スナップショットのうちの残余分を前記ディスク型記憶装置が提供する領域に保存する、請求項1または2に記載の画像処理装置。
【請求項4】
前記展開手段は、先ず前記不揮発性記憶装置から前記スナップショットの読み出しを開始し、前記ディスク型記憶装置のスピンアップが完了した後、前記ディスク型記憶装置から前記スナップショットの読み出しを開始する、請求項3に記載の画像処理装置。
【請求項5】
前記不揮発性記憶装置と、前記ディスク型記憶装置とは、独立したデータ転送バスに接続され、前記不揮発性記憶装置および前記ディスク型記憶装置からの前記スナップショットの読み出しは、並列に行われる、請求項4に記載の画像処理装置。
【請求項6】
前記作成手段は、前記スナップショットの作成の前に、前記メモリ管理手段に対し前記主記憶装置内の区画の取得要求を行い、取得された前記主記憶装置の未使用の区画または退避後の区画内を単一の値で埋めることを特徴とし、前記スナップショットは、圧縮されて前記記憶領域に保存される、請求項1〜5のいずれか1項に記載の画像処理装置。
【請求項7】
前記作成手段は、前記スナップショットの作成の前に、前記メモリ管理手段に対し、前記主記憶装置内の未使用の区画の数に対する目標値を、使用中の区画を除く区画の総数へ変更させ、未使用の区画の数が目標値に達した後、前記目標値を元に戻すことを特徴とし、前記スナップショットは、前記使用中の区画のイメージと、付属情報として該使用中の区画の物理アドレスとを含み、前記未使用の区画が除外されている、請求項1〜5のいずれか1項に記載の画像処理装置。
【請求項8】
主記憶装置、不揮発性記憶装置およびディスク型記憶装置を備える画像処理装置が実行する方法であって、
画像処理装置が、休止状態への移行要求に応答して、実行中のアプリケーション手段に対して停止を通知するステップと、
画像処理装置が、前記休止状態への移行要求に対応して、前記主記憶装置の退避可能な1以上の区画内の情報を前記ディスク型記憶装置に退避するステップと、
画像処理装置が、前記主記憶装置のスナップショットであって前記ディスク型記憶装置に退避された情報による情報量が削減された該スナップショットを、前記不揮発性記憶装置が提供する領域を含む記憶領域に作成するステップと、
画像処理装置が、前記スナップショットの作成が完了した後、リレー手段を制御して、前記主記憶装置への電力供給を切断するステップと
を含む、休止方法。
【請求項9】
前記作成するステップは、画像処理装置が、前記スナップショットのうちの少なくとも前記不揮発性記憶装置のデータ転送速度により前記ディスク型記憶装置のスピンアップ時間をかけて転送可能な容量分については前記不揮発性記憶装置が提供する領域に保存するステップと、画像処理装置が、前記スナップショットのうちの残余分を前記ディスク型記憶装置が提供する領域に保存するステップとを含む、請求項8に記載の休止方法。
【請求項10】
前記作成するステップは、メモリ管理手段に対し前記主記憶装置内の区画の取得要求を行うステップと、取得された前記主記憶装置の未使用の区画または退避された区画内を単一の値で埋めるステップと、前記スナップショットを圧縮するステップとを含む、請求項8または9に記載の休止方法。
【請求項11】
前記作成するステップは、メモリ管理手段に対し、前記主記憶装置内の未使用の区画の数に対する目標値を、使用中の区画を除く区画の数へ変更させるステップと、未使用の区画の数が目標値に達した後、前記目標値を元に戻すステップと、前記未使用の区画を除外して前記使用中の区画のイメージを、付属情報として該使用中の区画の物理アドレスとともにをスナップショットに含めるステップとを含み、請求項8または9に記載の休止方法。
【請求項12】
主記憶装置、不揮発性記憶装置およびディスク型記憶装置を備える画像処理装置が実行する方法であって、
画像処理装置が、休止状態からの復帰要求に応答して、前記不揮発性記憶装置が提供する領域を含む記憶領域から、前記主記憶装置の前回の休止時点のスナップショットであって前記ディスク型記憶装置に退避された情報による情報量が削減された該スナップショットを読み出して前記主記憶装置上に展開するステップと、
画像処理装置が、前記展開が完了した後、停止中のアプリケーション手段に対して復帰通知を行うステップと、
画像処理装置が、動作を再開した前記アプリケーション手段からの要求に応答して、前記ディスク型記憶装置に退避されている前記主記憶装置内の1以上の区画のうちの該要求に対応する区画内の情報を前記主記憶装置に書き戻すステップと、
を含む、復帰方法。
【請求項13】
前記展開するステップは、
前記不揮発性記憶装置から、前記スナップショットのうちの前記不揮発性記憶装置のデータ転送速度により前記ディスク型記憶装置のスピンアップ時間をかけて転送可能な容量分の読み出しを開始するステップと、
前記ディスク型記憶装置のスピンアップが完了した後、前記ディスク型記憶装置から前記スナップショットのうちの残余分の読み出しを開始するステップと
を含む、請求項12に記載の復帰方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2011−192142(P2011−192142A)
【公開日】平成23年9月29日(2011.9.29)
【国際特許分類】
【出願番号】特願2010−59121(P2010−59121)
【出願日】平成22年3月16日(2010.3.16)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】
【公開日】平成23年9月29日(2011.9.29)
【国際特許分類】
【出願日】平成22年3月16日(2010.3.16)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】
[ Back to top ]