(57)【要約】【課題】  従来のハイバネーション処理では、データを退避する不揮発性記憶装置に特化した処理が行われていない。【解決手段】  ハイバネーション機能を備えた情報処理装置であって、ハイバネーションのために、揮発性メモリのデータを、不揮発性記憶手段に連続する可変長のデータで退避するか、或いは一定長のデータで退避し、退避されたデータが記憶されていた揮発性メモリのアドレス、当該データを退避した不揮発性記憶手段のアドレス、及び可変長であるか一定長であるかを示す情報を記憶する。そして復元時、不揮発性記憶手段に退避したデータを、管理情報記憶手段に記憶された情報に従って揮発性メモリに書き戻す。【選択図】  図５
2012173814.tif 000002
【特許請求の範囲】
【請求項１】
ハイバネーション機能を備えた情報処理装置であって、
不揮発性記憶手段と、
前記ハイバネーションのために、揮発性メモリのデータを、前記不揮発性記憶手段に、連続する可変長のデータで退避するか、或いは一定長のデータの単位で退避する退避手段と、
少なくとも、前記退避手段により退避された前記データが記憶されていた前記揮発性メモリのアドレス、当該データを退避した前記不揮発性記憶手段のアドレス、及び前記可変長であるか一定長のデータの単位であるかを示す情報を記憶する管理情報記憶手段と、
前記退避手段により前記不揮発性記憶手段に退避したデータを、前記管理情報記憶手段に記憶された情報に従って前記揮発性メモリに書き戻す復元手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記不揮発性記憶手段に所定のデータを連続して書き込んで読み出す連続読み込み速度と、前記不揮発性記憶手段に一定長のデータの単位でランダムアクセスで書き込んで読み出すランダム読み込み速度とを比較し、その比較結果に基づいて、前記不揮発性記憶手段に可変長のデータで退避するか、或いは一定長のデータの単位で退避するかを決定する決定手段を更に有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記不揮発性記憶手段に連続する可変長のデータで退避する場合、当該連続する可変長のデータのデータサイズを算出する算出手段と、
前記算出手段が算出した前記データサイズを前記管理情報記憶手段に記憶する手段とを更に有することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
ハイバネーション機能を備えた情報処理装置を制御する制御方法であって、
ハイバネーションのために、揮発性メモリのデータを、不揮発性メモリに、連続する可変長のデータで退避するか、或いは一定長のデータの単位で退避する退避工程と、
少なくとも、前記退避工程で退避された前記データが記憶されていた前記揮発性メモリのアドレス、当該データを退避した前記不揮発性メモリのアドレス、及び前記可変長であるか一定長のデータの単位であるかを示す情報を記憶する管理情報記憶工程と、
前記退避工程で前記不揮発性メモリに退避したデータを、前記管理情報記憶工程で記憶された情報に従って前記揮発性メモリに書き戻す復元工程と、
を有することを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハイバネーション機能を備えた情報処理装置及び情報処理装置を制御する制御方法に関するものである。
【背景技術】
【０００２】
システムを構成するソフトウェア規模の肥大化に伴い、電源スイッチをオンしてからシステムの起動が完了するまでの時間（システム起動時間）は増大する傾向にある。この起動時間の増大に対する解決策の一つとして、ハイバネーション技術がある。
【０００３】
ハイバネーションとは、任意の時点におけるシステムの揮発性メモリ（ＲＡＭ）に記憶されている情報をハードディスク（ＨＤＤ）、ＳＳＤ(Solid State Drive)或いはＵＳＢメモリ等の不揮発性記憶装置に退避する。そして次回のシステム起動の際に、その退避しておいた情報を揮発性メモリに書き戻すことにより、システムの状態を「退避時の状態」に復元する技術のことである。近年のオペレーティングシステム（ＯＳ）では、ハイバネーションをソフトウェアにより実現しており、起動の際に不要な情報の退避、復元処理を省く等して、復元時間の短縮が図られている。このハイバネーションでは、揮発性メモリと不揮発性記憶装置の間で情報のやり取りが行われるため、アクセス速度が低速なデバイス（一般的に不揮発性記憶装置）のアクセス速度が、ハイバネーションの処理時間に大きく影響を与える。
【０００４】
通常のシステム起動処理に要する時間と、ハイバネーションによるシステムの復元時間とを比較し、後者の時間が短ければ、システムを起動する際にハイバネーションを用いるのが有用であると言える。特許文献１では、この有用性の判定を、情報の退避先となる不揮発記憶装置の性能を測定し、その測定した情報によりハイバネーションの復元時間を予測することにより行っている。そして、この予測した復元時間に基づいて、次回のシステムの起動時にハイバネーションによる起動を行うか否かを決定している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−１４６０６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら従来は、ハイバネーション用データの退避先となる不揮発性記憶装置の性能に依らず、一定の手順でハイバネーション処理が行われていた。そのため、不揮発性記憶装置に特化した処理が行われていないという課題がある。例えばＨＤＤは、機器内部のヘッドが機械的に動作することにより、磁気ディスクに保存された情報へアクセスする。このため、アクセス対象の情報が磁気ディスク上に点在するほど機械的な動作の回数が増加して、情報へのアクセス速度が低下するという構造上の特性がある。一方、ＳＳＤの場合は、電気的処理によって、保存されている情報へアクセスするため、情報の点在度合いに依らず、一定のアクセス速度で情報にアクセスできる。
【０００７】
このような不揮発性揮発装置の特徴に鑑みて、例えばハイバネーションデータの退避先としてＨＤＤを用いる場合は、アクセス速度を低下させないためにハイバネーションデータの点在を抑えることが望ましい。例えば、Ｌｉｎｕｘの場合は、一部のハイバネーションデータは、使われないメモリ領域を退避しておき、必要になった際にメモリ上に復元するというスワップファイルの仕組みを用いている。スワップファイルの復元処理はメモリ管理上の最小サイズ単位で行われるたあめ、復元対象領域を最小サイズで割った回数分のランダムアクセスが発生する。従って、ＨＤＤを用いる場合は、スワップファイルによる復元処理をなるべく行わないことが望ましいといえる。
【０００８】
本発明の目的は、上記従来技術の問題点を解決することにある。
【０００９】
本願発明の特徴は、ハイバネーション用にデータを退避する不揮発性メモリの特徴に応じたハイバネーション処理を行うことにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するために本発明の一態様に係る情報処理装置は以下のような構成を備える。即ち、
ハイバネーション機能を備えた情報処理装置であって、
不揮発性記憶手段と、
前記ハイバネーションのために、揮発性メモリのデータを、前記不揮発性記憶手段に、連続する可変長のデータで退避するか、或いは一定長のデータの単位で退避する退避手段と、
少なくとも、前記退避手段により退避された前記データが記憶されていた前記揮発性メモリのアドレス、当該データを退避した前記不揮発性記憶手段のアドレス、及び前記可変長であるか一定長のデータの単位であるかを示す情報を記憶する管理情報記憶手段と、
前記退避手段により前記不揮発性記憶手段に退避したデータを、前記管理情報記憶手段に記憶された情報に従って前記揮発性メモリに書き戻す復元手段と、
を有することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、ハイバネーション用にデータを退避する不揮発性メモリの性能に特化したハイバネーション処理を行うことにより、情報処理装置を高速に起動できる。
【図面の簡単な説明】
【００１２】
【図１】実施形態に係る画像形成装置（複合機）の構成を示すブロック図。
【図２】本実施形態に係る基本動作を簡易的に説明するフローチャート。
【図３】図２のＳ２０１の不揮発性記憶装置の読み書き性能を測定する処理を説明するフローチャート。
【図４】ハイバネーション用管理情報のデータ構造の一例を説明する図。
【図５】本実施形態に係る画像形成装置によるハイバネーションデータの退避処理を説明するフローチャート。
【図６】図５のＳ５０６の、連続読み込み用のハイバネーション用管理情報の作成処理を説明するフローチャート。
【図７】図５のＳ５０７のランダム読み込み用ハイバネーション用管理情報の作成処理を説明するフローチャート。
【図８】本実施形態に係るハイバネーション用データの復元処理を簡易的に説明するフローチャート。
【図９】図８のＳ８０３の、連続読み込みデータの復元処理を説明するフローチャート。
【図１０】図８のＳ８０５のランダム読み込みデータの復元処理を説明するフローチャート。
【発明を実施するための形態】
【００１３】
以下、添付図面を参照して本発明の好適な実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１４】
図１は、本発明の実施形態に係るハイバネーション機能を備える情報処理装置の一例である画像形成装置（複合機）の構成を示すブロック図である。尚、この実施形態では、プリンタ機能、スキャナ機能、ファクシミリ機能、ストレージ機能等を有する多機能装置（複合機）の場合で説明する。しかし本発明の情報処理装置はこれに限定されるものでなく、例えばＰＣ等の情報処理装置やゲーム機器、各種モバイル機器等にも適用できる。尚、本実施例では不揮発性記憶装置（不揮発性メモリ）としてＨＤＤを用いた実施形態を記載するが、ＳＳＤやＵＳＢメモリ等の他の不揮発性記憶装置を用いても構わない。
【００１５】
図１において、画像形成装置１００は、ＨＤＤ１０２にインストールされているプログラムがＲＡＭ１０３にロードされた状態で実行するＣＰＵ１０１を備えている。ＣＰＵ１０１は、ＲＡＭ１０３にロードされたプログラムに従ってシステムバス１１３に接続される各デバイスを総括的に制御する。ＲＡＭ１０３（揮発性メモリ）は、ＣＰＵ１０１のメインメモリ、ワークエリア等として機能する。操作部コントローラ（ＰＡＮＥＬＣ）１０５は、操作パネル１０６に備えられた各種ボタン或いはタッチパネル等からの指示入力を制御する。表示制御部（ＤＩＳＰＣ）１０７は、例えば液晶ディスプレイ等で構成される表示部１０８への表示を制御する。尚、この表示部１０８は操作パネル１０６に設けられている。ネットワークインタフェースカード（ＮＩＣ）１０４は、ＬＡＮＩＦ１１０にＬＡＮケーブルを接続し、他のネットワーク機器或いはファイルサーバ等と双方向にデータをやりとりする。プリンタ部１１１は、例えば電子写真方式或いはインクジェット方式等のプリンタエンジンを有し、紙等の記録媒体に画像を記録（印刷）する。スキャナ部１１２は、原稿の画像を読み取って、その画像を表す画像信号を生成する。多くの場合、スキャナ部１１２には、オプションとしてオートドキュメントフィーダ（不図示）が装着されており、複数枚の原稿を搬送して、それらを自動的に読み込むことができる。ＥＥＰＲＯＭ１１４は、書き換え可能な小容量の不揮発性メモリであり、画像形成装置１００の設定情報等を記憶している。タイマ１１５は、ＣＰＵ１０１からの指示に応じて、経過時間の測定等の計時を行う。
【００１６】
装置１００の電源が投入された後、操作パネル１０６の各種ボタンやタッチパネルからの指示を入力可能になった時点でシステムの起動が完了したと定義する。ここで起動完了の定義を、表示部１０８が点灯した時点や、表示部１０８が点灯して所定の画像が表示された時点としても良い。また或いは、表示部１０８のＬＥＤライトの明滅状態や点灯色が変化した時点としてもよい。
【００１７】
図２は、本実施形態に係る特徴である、不揮発性記憶装置（ハイバネーションデータの退避先）の性能に応じて、ハイバネーションの処理を変更する基本動作を簡易的に説明するフローチャートである。各処理部の詳細な処理内容については後ほど図を用いて述べるが、このフローチャートを参照して本実施形態の特徴である大まかな基本動作について説明する。本実施例では、不揮発性記憶装置の連続読み込み速度とランダム読み込み速度に基づいてハイバネーション処理を行う場合で説明する。尚、この処理は、ＨＤＤ１０２にインストールされている、この処理を実行するプログラムをＲＡＭ１０３にロードし、そのプログラムをＣＰＵ１０１が実行することにより実現される。
【００１８】
例えばＬｉｎｕｘの場合、ハイバネーションにおけるメモリの復元処理は、メモリ全体を大まかに復元する第一処理と、残りの未復元領域は、その領域が使用された際に復元する第二処理によって行われる。第一処理では、システムは他の作業を行わず、連続する大きなサイズの領域のデータを復元する。このため、第一処理は連続読み込み速度に依存する処理といえる。一方の第二処理は、復元要求を受けた際に、要求先の領域を最小メモリサイズだけ復元する処理であるため、ランダム読み込み速度に依存する。これら二種類の処理の内、不揮発性記憶装置の得意な処理のみを用いて復元処理を行った場合は、両処理を用いて復元を行う場合に比べ、短時間で復元処理が完了することが期待される。
【００１９】
ここで第二処理は、プログラムが未復元領域にアクセスした際の例外処理であるため、復元が完了しないと、このプログラムは動作できない。そのため第二処理では、復元処理は最小メモリ管理サイズ単位で、最短処理で行われる。更に第二処理は、復元領域が予想しづらいため、ランダム読み込み（ランダムアクセス）処理でしか行うことができない。この第二処理は、システムを見かけ上止めることなく復元処理を行う点で重要であり、他のオペレーティングシステムでも実装されている処理である（デマンドページング処理）。
【００２０】
まずＳ２０１で、画像形成装置１００が起動された後の任意の時点で、ＨＤＤ１０２の性能測定を行う。この処理を行うタイミングは、例えば、ＨＤＤ１０２が換装されたことを検知した時点や、画像形成装置１００がハイバネーション処理要求を受けた時点や、画像形成装置１００がアイドル状態の時点等がある。その後、Ｓ２０２で、ハイバネーション処理要求を受信すると、Ｓ２０１での性能測定結果を基に、Ｓ２０３で、その測定結果に応じて、ハイバネーションデータの退避処理を行う。
【００２１】
図３は、図２のＳ２０１の不揮発性記憶装置の読み書き性能を測定する処理を説明するフローチャートである。このフローチャートで示す処理を実行することにより、この画像形成装置１００は、不揮発性記憶装置の連続読み書き性能及びランダム読み書き性能の測定値を得て、この測定値に基づきハイバネーション処理を行う。
【００２２】
まずＳ３０１で、ＨＤＤ１０２に所定のデータを書き込み、その書き込みに要した時間をタイマ１１５を用いて測定する。ここで、所定のデータとは、連続書き込み性能及びランダム書き込み性能を測定可能なデータサイズ及びデータ形式のデータであるものとする。次にＳ３０２に進み、Ｓ３０１書き込んだ所定のデータをＨＤＤ１０２から読み込み、その読み込み処理に要した時間をタイマ１１５を用いて測定する。ここで、所定のデータは、連続読み込み性能及びランダム読み込み性能を測定可能なデータサイズ及びデータ形式のデータであり、Ｓ３０１で書き込んだデータであっても良い。
【００２３】
次にＳ３０３に進み、Ｓ３０１で書き込んだデータは不要であるので削除する。次にＳ３０４に進み、Ｓ３０１，Ｓ３０２で読み書きしたデータのサイズと、それに要した各時間から、その不揮発性記憶装置のアクセス性能を算出する。このアクセス性能の算出方法は、読み書きしたデータサイズを、その読み書きに要した時間の平均値で除算することにより、おおまかな性能値を求めることができる。そしてＳ３０５に進み、Ｓ３０４で算出した性能値をＨＤＤ１０２に保存する。
【００２４】
尚、この図３のフローチャートは、不揮発性記憶装置の読み書き性能を測定する手法の一例であり、他の方法により、この不揮発性記憶装置のアクセス性能を測定しても構わない。
【００２５】
図４は、実施形態に係るハイバネーション用管理情報のデータ構造の一例を説明する図である。これらデータは、ハイバネーション用データの退避処理時及び復元処理時に用いる。
【００２６】
ハイバネーション用管理情報は、メモリ領域識別ＩＤ４０１、領域の開始アドレス４０２、領域サイズ４０３、ハイバネーション時の復元処理方法４０４、退避先アドレス（ハイバネーションデータの不揮発性記憶装置上のアドレス）４０５を備えている。
【００２７】
ここで開始アドレス４０２は、退避されたＲＡＭ１０３のデータの先頭アドレスを示し、領域サイズ４０３は、そのデータの長さ（可変長のサイズ）を示している。従って、例えば、メモリ領域識別ＩＤ４０１は、ＲＡＭ１０３のアドレス「０ｘ０１００００００」から３２Ｍバイトのデータが、不揮発性記憶装置のアドレス「０ｘＥ１００００００」から連続して記憶されていることを示している。また復元処理が「ランダム」の場合は、最小メモリ管理サイズである４ＫＢ（キロバイト）のデータの単位（一定長）で読み書きされる。尚、ハイバネーション用管理情報は、管理情報記憶手段であるＨＤＤ１０２に記憶される。
【００２８】
図５は、本実施形態に係る画像形成装置によるハイバネーションデータの退避処理を説明するフローチャートである。尚、この処理は、図２のＳ２０３の処理に対応している。このフローチャートのＳ５０６，Ｓ５０７のハイバネーション用管理情報作成処理の詳細は後述する。このフローチャートにより、退避対象となるＲＡＭ１０３上のデータを、退避先となる不揮発性記憶装置が得意とする読み込み形式に変換して退避する。
【００２９】
まずＳ５０１で、ハイバネーション用管理情報の有無を確認する。このハイバネーション用管理情報の詳細については後述する。ハイバネーション用管理情報が無いと判断するとＳ５０２に進み、図３のＳ３０５でＨＤＤ１０２に保存した性能値を読み出す。以下の説明では、この性能値として、連続読み込み速度とランダム読み込み速度を用いる。次にＳ５０３で、Ｓ５０２で読み出した性能値である連続読み込み速度と、ランダム読み込み速度との大小を比較する。ここでは速度が大きい方を高速読み込み速度Ｖｆ、速度が遅い方を低速読み込み速度Ｖｓとする。次にＳ５０４に進み、これら２つの速度ＶｆとＶｓとを用いて速度の比（Ｖｓ／Ｖｆ）を計算する。この速度の比と、予め定められた閾値Ｙとを比較する。参考値として、Ｙはここでは「０．６７」としているが、「０」より大きく「１」以下の数値であれば、任意の値で構わない。Ｓ５０４で、その比較結果として速度の比がＹよりも小さいと判定すると、両読み込み速度の差が著しいとみなしてＳ５０５に進む。Ｓ５０５では、高速読み込み処理が、連続読み込み処理に対応しているかどうかを判定し、そうであればＳ５０６に進んで、連続読み込み処理用のハイバネーション用管理情報を作成する。
【００３０】
一方、Ｓ５０５で、高速読み込み処理が、ランダム読み込み処理に対応しているかどうかを判定し、そうであればＳ５０７に進んで、ランダム読み込み処理用のハイバネーション用管理情報を作成する。またＳ５０４で、速度比がＹ以上であると判定するとＳ５０７に進み、ランダム読み込み処理のみでハイバネーション処理を行うように、ハイバネーション用のメモリ管理情報を作成する。
【００３１】
こうしてＳ５０６或いはＳ５０７を実行した後、或いはＳ５０１でハイバネーション用管理情報があると判断したときはＳ５０８に進み、そのハイバネーション用管理情報に基づき、退避対象のＲＡＭ１０３の内容をＨＤＤ１０２の所定領域に保存する。ここで、連続読み込み処理対象のメモリ領域は、メモリ領域識別ＩＤ４０１の小さい順から、ＤＭＡ処理の転送可能サイズ単位で、ＨＤＤ１０２の予め定められたＤＭＡ転送用の領域に保存する。一方、ランダム読み込み処理対象のメモリ領域は、最小メモリ管理単位サイズごとにＲＡＭ１０３のアドレス情報を付加して、ＨＤＤ１０２の予め定められたデマンドページング用領域に保存する。そしてＳ５０９に進み、メモリ領域の退避先のＨＤＤ１０２上のアドレス情報をハイバネーション用メモリ管理領域に退避先アドレス４０５として保存する。
【００３２】
このように図５の処理では、連続読み込み速度と、ランダム読み込み速度と差がそれほど大きくないときは、ランダム読み込み処理によりＲＡＭ１０３のデータをＨＤＤ等の不揮発性メモリに退避する。これは連続読み込み処理では、そのデータ転送に要する待機時間が長くなって操作性が低下するのに対し、ランダム読み込みでは、バックグラウンドでの実行が可能となって、操作性の低下を抑えることができるためである。
【００３３】
図６は、図５のＳ５０６の、連続読み込み用のハイバネーション用管理情報の作成処理を説明するフローチャートである。尚、この実施形態では、最小メモリ管理サイズとして４ＫＢ（キロバイト）としているが、本発明はこれに限らず、メモリ管理システム上の最小管理サイズとしても良い。
【００３４】
まずＳ６０１で、この処理で用いる変数ＩＤを「１」に、アドレスを示す変数ＡＤを「０」に初期化する。ここで、ＩＤはメモリ領域識別ＩＤ４０１（図４）に、ＡＤは開始アドレス４０２（図４）に対応しており、ハイバネーション用管理情報の作成時に用いられる。次にＳ６０２に進み、変数ＡＤの指すアドレスのメモリ領域（ＲＡＭ領域）が存在するかどうかを判定する。
【００３５】
まず、ＲＡＭ１０３の退避データの開始アドレス４０２を決定する処理について説明する。Ｓ６０２で、ＡＤ（アドレス）の指す領域がＲＡＭ１０３に存在する場合はＳ６０３に進み、ＡＤの指すアドレスが退避対象領域かどうかを判定する。Ｓ６０３で退避対象であると判定した場合はＳ６０４に進み、ハイバネーション用管理情報のＩＤ番目のデータ（管理情報）が存在するかどうかを判定する。ＩＤ番目のデータが存在する時はＳ６０７に進むが、そうでないときはＳ６０５に進み、メモリ領域識別ＩＤ４０１の値をＩＤとしたデータを新規に作成する。そしてＳ６０６に進み、現在のＡＤの値を、ＩＤ番目のデータ領域の開始アドレス４０２として書き込んでＳ６０７に進む。この時点で、ＩＤ番目のデータには、メモリ領域識別ＩＤ４０１と開始アドレス４０２とが書かれていることになり他の値は空である。
【００３６】
次に、領域サイズ４０３を決定する処理について説明する。Ｓ６０７では、開始アドレス４０２に最小メモリ管理サイズ（ここでは４ＫＢ）分のアドレスを加算してＳ６０２に進む。そしてＳ６０３で、そのアドレスが指す領域が退避対象でなくなるとＳ６０８に進み、ＩＤ番目のデータに領域サイズ４０３の値が登録されているかどうかを判定する。ここでＩＤ番目のデータに領域サイズ４０３の値が登録されていると判定するとＳ６０７に進む。一方、Ｓ６０８で、登録されていないと判定するとＳ６０９に進み、現在の読み進めたアドレスＡＤとＩＤ番目のデータの開始アドレスの差（ＳＩＺＥ）を計算する。次にＳ６１０では、このＳＩＺＥ値を、ＩＤ番目のデータの領域サイズ４０３として書き込む。また復元処理方法４０４として「連続」を書き込む。次にＳ６１１に進み、ＩＤ値を１つ増加させ、次のデータを作成するための準備を行ってＳ６０７に進む。
【００３７】
こうしてメモリ（ＲＡＭ１０３）を読み進めて行き、Ｓ６０２で、ＡＤの指す領域がＲＡＭ１０３の管理外のメモリ領域に到達するとＳ６１２に進む。Ｓ６１２では、最後のメモリ領域識別ＩＤ４０１となるＩＤ番目のデータに領域サイズ４０３が登録されているか否かを判定する。登録されているときはこの処理を終了するが、領域サイズ４０３が登録されていないときはＳ６１３に進み、ステップ６０９と同様の計算により、領域サイズＳＩＺＥを計算する。そしてＳ６１４に進み、ステップ６１０と同様に、ＩＤ番目のデータ領域サイズ４０３としてＳＩＺＥを書き込み、復元処理方法４０４として「連続」を書き込んで、この処理を終了する。
【００３８】
このようにして、ＲＡＭ１０３の連続した退避データを、ＨＤＤ１０２の退避先アドレスで示される可変長領域に連続して格納することができる。
【００３９】
図７は、図５のＳ５０７のランダム読み込み用ハイバネーション用管理情報の作成処理を説明するフローチャートである。尚、この実施形態では、最小メモリ管理サイズとして４ＫＢ（キロバイト）としているが、本発明はこれに限らず、メモリ管理システム上の最小管理サイズとしても良い。
【００４０】
まずＳ７０１で、変数ＩＤを「１」に、ＡＤを「０」に初期化する。ここで、ＩＤはメモリ領域識別ＩＤ４０１に、ＡＤは開始アドレス４０２に対応しており、これらはハイバネーション用管理情報の作成時に用いられる。次にＳ７０２に進み、ＩＤ番目のデータを作成する。この時点で、管理情報（データ）にはメモリ領域識別ＩＤ４０１のみが書かれていることになり他の値は空である。次にＳ７０３に進み、変数ＡＤの指すアドレスのメモリ領域（ＲＡＭ１０３）が存在するかどうかを判定する。この判定の結果、メモリ領域が存在すると判定するとＳ７０４に進み、更にその領域が退避対象であるか否かを判定する。この判定の結果、退避対象領域であると判定するとＳ７０５に進み、ＩＤ番目のデータの開始アドレス４０２として変数ＡＤの値を、領域サイズ４０３として最小メモリ管理サイズを、復元処理方法４０４として「ランダム」を書き込む。次にＳ７０６で、変数ＩＤの値を１増加させ、次にＳ７０７で、ＩＤ番目のデータを新たに作成する。この時点で、このデータにはメモリ領域識別ＩＤ４０１のみが書かれていることになり他の値は空である。そしてＳ７０８に進み、変数ＡＤの値を、最小メモリ管理サイズだけ増加させてＳ７０３に進み、次のメモリ領域について読み進めていく。この結果、Ｓ７０３で、ＲＡＭ１０３にＡＤの指すメモリ領域が存在しなくなった場合はＳ７０９に進み、最後に作成した余分なＩＤ番目のデータを削除して、この処理を終了する。
【００４１】
このようにして、ＲＡＭ１０３の退避データを、最小メモリ管理サイズ（４ＫＢ）の単位で、ＨＤＤ１０２の退避先アドレスで示される領域（一定サイズ）に格納することができる。
【００４２】
次に図８のフローチャートを参照して、ハイバネーション用データの復元処理の流れを説明する。
【００４３】
図８は、本実施形態に係るハイバネーション用データの復元処理を簡易的に説明するフローチャートである。尚、この処理は、ＨＤＤ１０２にインストールされている、この処理を実行するプログラムをＲＡＭ１０３にロードし、そのプログラムをＣＰＵ１０１が実行することにより実現される。
【００４４】
まずＳ８０１で、電源投入後、ＨＤＤ１０２に保存された起動選択プログラムをＲＡＭ１０３上に展開する。次にＳ８０２で、起動選択プログラムは、ハイバネーション用管理情報の有無を判定する。Ｓ８０２で、ハイバネーション用管理情報が存在しないと判定するとＳ８０６に進み、ハイバネーションを行うことなく、通常の起動処理を行う。この通常の起動処理とは、ＨＤＤ１０２に保存されたオペレーティングシステムの読み込み及び初期化処理、デバイスドライバの読み込み及び初期化処理、他のソフトウェアの読み込み及び初期化処理等を指す。
【００４５】
一方、Ｓ８０２で、ハイバネーション用管理情報がＨＤＤ１０２に存在すると判定した場合はＳ８０３に進み、退避データを連続して読み込む復元処理を行う。このデータを連続して読み込む復元処理が完了した後、Ｓ８０４で、退避データをランダムのアドレスから読み込むデータの復元要求が発生するとＳ８０５に進み、最小メモリ管理サイズ単位での退避データの復元処理を行う。このデータの復元要求は、復元されていないメモリ領域をＣＰＵ１０１がアクセスすることにより逐次発生する。
【００４６】
図９は、図８のＳ８０３の、連続読み込みデータの復元処理を説明するフローチャートである。この処理では、ハイバネーション用管理情報に記載されている復元処理方法４０４が「連続」である退避データを、ＨＤＤ１０２からＲＡＭ１０３に復元するものとする。
【００４７】
まずＳ９０１で、変数ＩＤを「１」に初期化する。ここで変数ＩＤは、メモリ領域識別ＩＤ４０１に対応しており、ハイバネーション用管理情報から復元対象のメモリ領域（ＲＡＭ１０３の領域）を特定するために用いる。次にＳ９０２に進み、ハイバネーション用管理情報に、メモリ領域識別ＩＤ４０１がＩＤであるデータが存在するか否かを判定する。ここで存在すると判定するとＳ９０３に進み、そのレコードの復元処理方法４０４を調べる。ここで復元処理方法４０４が「連続」であると判定すると、対象の復元処理であるためＳ９０４に進む。Ｓ９０４では、そのデータから開始アドレス４０２と領域サイズ４０３と退避先アドレス４０５とを読み出す。次にＳ９０５に進み、Ｓ９０４で読み出した値を基に、ＨＤＤ１０２の退避先アドレス４０５から領域サイズ４０３だけのデータを読み出して、ＲＡＭ１０３の開始アドレス４０２から、領域サイズ４０３分のデータを書き戻す。こうしてＩＤ番目のデータを読み取った後Ｓ９０６に進み、次のデータを読み出すために、変数ＩＤ値を１だけ増やしてＳ９０２に進む。Ｓ９０２で、ハイバネーション用管理情報の最終データを読み取って、ＩＤ番目のデータが存在しなくなると、この連続読み込みデータの復元処理を終了する。
【００４８】
この図９の処理により、ＨＤＤ１０２の退避先アドレス４０５から連続して記憶されている領域サイズ分の退避データを読み出し、ＲＡＭ１０３の開始アドレスで示されるアドレスから連続して書き戻すことにより、ＲＡＭ１０３のデータを復元できる。
【００４９】
図１０は、図８のＳ８０５のランダム読み込みデータの復元処理を説明するフローチャートである。この処理において、ハイバネーション用管理情報に記載されている復元処理方法４０４が「ランダム」であるデータのうち、復元要求された、最小メモリ管理サイズ以下のデータをＨＤＤ１０２からＲＡＭ１０３に復元する。これは、復元処理が、対象の復元要求された領域に初めてアクセスされた際に、最小メモリサイズ単位で行われるオンデマンド処理であるためである。
【００５０】
まずＳ１００１で、復元要求の発生した領域のアドレスを変数ＡＤに保存する。次にＳ１００２に進み、ハイバネーション用管理情報の開始アドレスを順次調べ、ＡＤが含まれるかどうかを調べる。Ｓ１００２で、ＡＤと、いずれかのデータの開始アドレス４０２とが等しいと判定するとＳ１００３に進み、そのデータから退避先アドレス４０５を読み出す。次にＳ１００４に進み、Ｓ１００３で読出した退避先アドレス４０５を用いて、ＨＤＤ１０２の退避先アドレスから最小メモリ管理サイズだけの退避データを読み出し、ＲＡＭ１０３の開始アドレス４０２から最小メモリ管理サイズ分のデータを書き戻す。
【００５１】
一方、Ｓ１００２で、ハイバネーション用管理情報の全てに、該当する開始アドレス４０２が無い場合は、退避データが存在しないためＳ１００５に進んで、異常処理を行う。この異常処理としては、ＡＤの情報をデバッグログに出力するといった処理がある。
【００５２】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2012173814.tif 000003
【図２】
2012173814.tif 000004
【図３】
2012173814.tif 000005
【図４】
2012173814.tif 000006
【図５】
2012173814.tif 000007
【図６】
2012173814.tif 000008
【図７】
2012173814.tif 000009
【図８】
2012173814.tif 000010
【図９】
2012173814.tif 000011
【図１０】
2012173814.tif 000012