説明

情報処理装置及び情報処理装置を制御する制御方法

【課題】 従来のハイバネーション処理では、データを退避する不揮発性記憶装置に特化した処理が行われていない。
【解決手段】 ハイバネーション機能を備えた情報処理装置であって、ハイバネーションのために、揮発性メモリのデータを、不揮発性記憶手段に連続する可変長のデータで退避するか、或いは一定長のデータで退避し、退避されたデータが記憶されていた揮発性メモリのアドレス、当該データを退避した不揮発性記憶手段のアドレス、及び可変長であるか一定長であるかを示す情報を記憶する。そして復元時、不揮発性記憶手段に退避したデータを、管理情報記憶手段に記憶された情報に従って揮発性メモリに書き戻す。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ハイバネーション機能を備えた情報処理装置及び情報処理装置を制御する制御方法に関するものである。
【背景技術】
【0002】
システムを構成するソフトウェア規模の肥大化に伴い、電源スイッチをオンしてからシステムの起動が完了するまでの時間(システム起動時間)は増大する傾向にある。この起動時間の増大に対する解決策の一つとして、ハイバネーション技術がある。
【0003】
ハイバネーションとは、任意の時点におけるシステムの揮発性メモリ(RAM)に記憶されている情報をハードディスク(HDD)、SSD(Solid State Drive)或いはUSBメモリ等の不揮発性記憶装置に退避する。そして次回のシステム起動の際に、その退避しておいた情報を揮発性メモリに書き戻すことにより、システムの状態を「退避時の状態」に復元する技術のことである。近年のオペレーティングシステム(OS)では、ハイバネーションをソフトウェアにより実現しており、起動の際に不要な情報の退避、復元処理を省く等して、復元時間の短縮が図られている。このハイバネーションでは、揮発性メモリと不揮発性記憶装置の間で情報のやり取りが行われるため、アクセス速度が低速なデバイス(一般的に不揮発性記憶装置)のアクセス速度が、ハイバネーションの処理時間に大きく影響を与える。
【0004】
通常のシステム起動処理に要する時間と、ハイバネーションによるシステムの復元時間とを比較し、後者の時間が短ければ、システムを起動する際にハイバネーションを用いるのが有用であると言える。特許文献1では、この有用性の判定を、情報の退避先となる不揮発記憶装置の性能を測定し、その測定した情報によりハイバネーションの復元時間を予測することにより行っている。そして、この予測した復元時間に基づいて、次回のシステムの起動時にハイバネーションによる起動を行うか否かを決定している。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2009−146061号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら従来は、ハイバネーション用データの退避先となる不揮発性記憶装置の性能に依らず、一定の手順でハイバネーション処理が行われていた。そのため、不揮発性記憶装置に特化した処理が行われていないという課題がある。例えばHDDは、機器内部のヘッドが機械的に動作することにより、磁気ディスクに保存された情報へアクセスする。このため、アクセス対象の情報が磁気ディスク上に点在するほど機械的な動作の回数が増加して、情報へのアクセス速度が低下するという構造上の特性がある。一方、SSDの場合は、電気的処理によって、保存されている情報へアクセスするため、情報の点在度合いに依らず、一定のアクセス速度で情報にアクセスできる。
【0007】
このような不揮発性揮発装置の特徴に鑑みて、例えばハイバネーションデータの退避先としてHDDを用いる場合は、アクセス速度を低下させないためにハイバネーションデータの点在を抑えることが望ましい。例えば、Linuxの場合は、一部のハイバネーションデータは、使われないメモリ領域を退避しておき、必要になった際にメモリ上に復元するというスワップファイルの仕組みを用いている。スワップファイルの復元処理はメモリ管理上の最小サイズ単位で行われるたあめ、復元対象領域を最小サイズで割った回数分のランダムアクセスが発生する。従って、HDDを用いる場合は、スワップファイルによる復元処理をなるべく行わないことが望ましいといえる。
【0008】
本発明の目的は、上記従来技術の問題点を解決することにある。
【0009】
本願発明の特徴は、ハイバネーション用にデータを退避する不揮発性メモリの特徴に応じたハイバネーション処理を行うことにある。
【課題を解決するための手段】
【0010】
上記目的を達成するために本発明の一態様に係る情報処理装置は以下のような構成を備える。即ち、
ハイバネーション機能を備えた情報処理装置であって、
不揮発性記憶手段と、
前記ハイバネーションのために、揮発性メモリのデータを、前記不揮発性記憶手段に、連続する可変長のデータで退避するか、或いは一定長のデータの単位で退避する退避手段と、
少なくとも、前記退避手段により退避された前記データが記憶されていた前記揮発性メモリのアドレス、当該データを退避した前記不揮発性記憶手段のアドレス、及び前記可変長であるか一定長のデータの単位であるかを示す情報を記憶する管理情報記憶手段と、
前記退避手段により前記不揮発性記憶手段に退避したデータを、前記管理情報記憶手段に記憶された情報に従って前記揮発性メモリに書き戻す復元手段と、
を有することを特徴とする。
【発明の効果】
【0011】
本発明によれば、ハイバネーション用にデータを退避する不揮発性メモリの性能に特化したハイバネーション処理を行うことにより、情報処理装置を高速に起動できる。
【図面の簡単な説明】
【0012】
【図1】実施形態に係る画像形成装置(複合機)の構成を示すブロック図。
【図2】本実施形態に係る基本動作を簡易的に説明するフローチャート。
【図3】図2のS201の不揮発性記憶装置の読み書き性能を測定する処理を説明するフローチャート。
【図4】ハイバネーション用管理情報のデータ構造の一例を説明する図。
【図5】本実施形態に係る画像形成装置によるハイバネーションデータの退避処理を説明するフローチャート。
【図6】図5のS506の、連続読み込み用のハイバネーション用管理情報の作成処理を説明するフローチャート。
【図7】図5のS507のランダム読み込み用ハイバネーション用管理情報の作成処理を説明するフローチャート。
【図8】本実施形態に係るハイバネーション用データの復元処理を簡易的に説明するフローチャート。
【図9】図8のS803の、連続読み込みデータの復元処理を説明するフローチャート。
【図10】図8のS805のランダム読み込みデータの復元処理を説明するフローチャート。
【発明を実施するための形態】
【0013】
以下、添付図面を参照して本発明の好適な実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【0014】
図1は、本発明の実施形態に係るハイバネーション機能を備える情報処理装置の一例である画像形成装置(複合機)の構成を示すブロック図である。尚、この実施形態では、プリンタ機能、スキャナ機能、ファクシミリ機能、ストレージ機能等を有する多機能装置(複合機)の場合で説明する。しかし本発明の情報処理装置はこれに限定されるものでなく、例えばPC等の情報処理装置やゲーム機器、各種モバイル機器等にも適用できる。尚、本実施例では不揮発性記憶装置(不揮発性メモリ)としてHDDを用いた実施形態を記載するが、SSDやUSBメモリ等の他の不揮発性記憶装置を用いても構わない。
【0015】
図1において、画像形成装置100は、HDD102にインストールされているプログラムがRAM103にロードされた状態で実行するCPU101を備えている。CPU101は、RAM103にロードされたプログラムに従ってシステムバス113に接続される各デバイスを総括的に制御する。RAM103(揮発性メモリ)は、CPU101のメインメモリ、ワークエリア等として機能する。操作部コントローラ(PANELC)105は、操作パネル106に備えられた各種ボタン或いはタッチパネル等からの指示入力を制御する。表示制御部(DISPC)107は、例えば液晶ディスプレイ等で構成される表示部108への表示を制御する。尚、この表示部108は操作パネル106に設けられている。ネットワークインタフェースカード(NIC)104は、LANIF110にLANケーブルを接続し、他のネットワーク機器或いはファイルサーバ等と双方向にデータをやりとりする。プリンタ部111は、例えば電子写真方式或いはインクジェット方式等のプリンタエンジンを有し、紙等の記録媒体に画像を記録(印刷)する。スキャナ部112は、原稿の画像を読み取って、その画像を表す画像信号を生成する。多くの場合、スキャナ部112には、オプションとしてオートドキュメントフィーダ(不図示)が装着されており、複数枚の原稿を搬送して、それらを自動的に読み込むことができる。EEPROM114は、書き換え可能な小容量の不揮発性メモリであり、画像形成装置100の設定情報等を記憶している。タイマ115は、CPU101からの指示に応じて、経過時間の測定等の計時を行う。
【0016】
装置100の電源が投入された後、操作パネル106の各種ボタンやタッチパネルからの指示を入力可能になった時点でシステムの起動が完了したと定義する。ここで起動完了の定義を、表示部108が点灯した時点や、表示部108が点灯して所定の画像が表示された時点としても良い。また或いは、表示部108のLEDライトの明滅状態や点灯色が変化した時点としてもよい。
【0017】
図2は、本実施形態に係る特徴である、不揮発性記憶装置(ハイバネーションデータの退避先)の性能に応じて、ハイバネーションの処理を変更する基本動作を簡易的に説明するフローチャートである。各処理部の詳細な処理内容については後ほど図を用いて述べるが、このフローチャートを参照して本実施形態の特徴である大まかな基本動作について説明する。本実施例では、不揮発性記憶装置の連続読み込み速度とランダム読み込み速度に基づいてハイバネーション処理を行う場合で説明する。尚、この処理は、HDD102にインストールされている、この処理を実行するプログラムをRAM103にロードし、そのプログラムをCPU101が実行することにより実現される。
【0018】
例えばLinuxの場合、ハイバネーションにおけるメモリの復元処理は、メモリ全体を大まかに復元する第一処理と、残りの未復元領域は、その領域が使用された際に復元する第二処理によって行われる。第一処理では、システムは他の作業を行わず、連続する大きなサイズの領域のデータを復元する。このため、第一処理は連続読み込み速度に依存する処理といえる。一方の第二処理は、復元要求を受けた際に、要求先の領域を最小メモリサイズだけ復元する処理であるため、ランダム読み込み速度に依存する。これら二種類の処理の内、不揮発性記憶装置の得意な処理のみを用いて復元処理を行った場合は、両処理を用いて復元を行う場合に比べ、短時間で復元処理が完了することが期待される。
【0019】
ここで第二処理は、プログラムが未復元領域にアクセスした際の例外処理であるため、復元が完了しないと、このプログラムは動作できない。そのため第二処理では、復元処理は最小メモリ管理サイズ単位で、最短処理で行われる。更に第二処理は、復元領域が予想しづらいため、ランダム読み込み(ランダムアクセス)処理でしか行うことができない。この第二処理は、システムを見かけ上止めることなく復元処理を行う点で重要であり、他のオペレーティングシステムでも実装されている処理である(デマンドページング処理)。
【0020】
まずS201で、画像形成装置100が起動された後の任意の時点で、HDD102の性能測定を行う。この処理を行うタイミングは、例えば、HDD102が換装されたことを検知した時点や、画像形成装置100がハイバネーション処理要求を受けた時点や、画像形成装置100がアイドル状態の時点等がある。その後、S202で、ハイバネーション処理要求を受信すると、S201での性能測定結果を基に、S203で、その測定結果に応じて、ハイバネーションデータの退避処理を行う。
【0021】
図3は、図2のS201の不揮発性記憶装置の読み書き性能を測定する処理を説明するフローチャートである。このフローチャートで示す処理を実行することにより、この画像形成装置100は、不揮発性記憶装置の連続読み書き性能及びランダム読み書き性能の測定値を得て、この測定値に基づきハイバネーション処理を行う。
【0022】
まずS301で、HDD102に所定のデータを書き込み、その書き込みに要した時間をタイマ115を用いて測定する。ここで、所定のデータとは、連続書き込み性能及びランダム書き込み性能を測定可能なデータサイズ及びデータ形式のデータであるものとする。次にS302に進み、S301書き込んだ所定のデータをHDD102から読み込み、その読み込み処理に要した時間をタイマ115を用いて測定する。ここで、所定のデータは、連続読み込み性能及びランダム読み込み性能を測定可能なデータサイズ及びデータ形式のデータであり、S301で書き込んだデータであっても良い。
【0023】
次にS303に進み、S301で書き込んだデータは不要であるので削除する。次にS304に進み、S301,S302で読み書きしたデータのサイズと、それに要した各時間から、その不揮発性記憶装置のアクセス性能を算出する。このアクセス性能の算出方法は、読み書きしたデータサイズを、その読み書きに要した時間の平均値で除算することにより、おおまかな性能値を求めることができる。そしてS305に進み、S304で算出した性能値をHDD102に保存する。
【0024】
尚、この図3のフローチャートは、不揮発性記憶装置の読み書き性能を測定する手法の一例であり、他の方法により、この不揮発性記憶装置のアクセス性能を測定しても構わない。
【0025】
図4は、実施形態に係るハイバネーション用管理情報のデータ構造の一例を説明する図である。これらデータは、ハイバネーション用データの退避処理時及び復元処理時に用いる。
【0026】
ハイバネーション用管理情報は、メモリ領域識別ID401、領域の開始アドレス402、領域サイズ403、ハイバネーション時の復元処理方法404、退避先アドレス(ハイバネーションデータの不揮発性記憶装置上のアドレス)405を備えている。
【0027】
ここで開始アドレス402は、退避されたRAM103のデータの先頭アドレスを示し、領域サイズ403は、そのデータの長さ(可変長のサイズ)を示している。従って、例えば、メモリ領域識別ID401は、RAM103のアドレス「0x01000000」から32Mバイトのデータが、不揮発性記憶装置のアドレス「0xE1000000」から連続して記憶されていることを示している。また復元処理が「ランダム」の場合は、最小メモリ管理サイズである4KB(キロバイト)のデータの単位(一定長)で読み書きされる。尚、ハイバネーション用管理情報は、管理情報記憶手段であるHDD102に記憶される。
【0028】
図5は、本実施形態に係る画像形成装置によるハイバネーションデータの退避処理を説明するフローチャートである。尚、この処理は、図2のS203の処理に対応している。このフローチャートのS506,S507のハイバネーション用管理情報作成処理の詳細は後述する。このフローチャートにより、退避対象となるRAM103上のデータを、退避先となる不揮発性記憶装置が得意とする読み込み形式に変換して退避する。
【0029】
まずS501で、ハイバネーション用管理情報の有無を確認する。このハイバネーション用管理情報の詳細については後述する。ハイバネーション用管理情報が無いと判断するとS502に進み、図3のS305でHDD102に保存した性能値を読み出す。以下の説明では、この性能値として、連続読み込み速度とランダム読み込み速度を用いる。次にS503で、S502で読み出した性能値である連続読み込み速度と、ランダム読み込み速度との大小を比較する。ここでは速度が大きい方を高速読み込み速度Vf、速度が遅い方を低速読み込み速度Vsとする。次にS504に進み、これら2つの速度VfとVsとを用いて速度の比(Vs/Vf)を計算する。この速度の比と、予め定められた閾値Yとを比較する。参考値として、Yはここでは「0.67」としているが、「0」より大きく「1」以下の数値であれば、任意の値で構わない。S504で、その比較結果として速度の比がYよりも小さいと判定すると、両読み込み速度の差が著しいとみなしてS505に進む。S505では、高速読み込み処理が、連続読み込み処理に対応しているかどうかを判定し、そうであればS506に進んで、連続読み込み処理用のハイバネーション用管理情報を作成する。
【0030】
一方、S505で、高速読み込み処理が、ランダム読み込み処理に対応しているかどうかを判定し、そうであればS507に進んで、ランダム読み込み処理用のハイバネーション用管理情報を作成する。またS504で、速度比がY以上であると判定するとS507に進み、ランダム読み込み処理のみでハイバネーション処理を行うように、ハイバネーション用のメモリ管理情報を作成する。
【0031】
こうしてS506或いはS507を実行した後、或いはS501でハイバネーション用管理情報があると判断したときはS508に進み、そのハイバネーション用管理情報に基づき、退避対象のRAM103の内容をHDD102の所定領域に保存する。ここで、連続読み込み処理対象のメモリ領域は、メモリ領域識別ID401の小さい順から、DMA処理の転送可能サイズ単位で、HDD102の予め定められたDMA転送用の領域に保存する。一方、ランダム読み込み処理対象のメモリ領域は、最小メモリ管理単位サイズごとにRAM103のアドレス情報を付加して、HDD102の予め定められたデマンドページング用領域に保存する。そしてS509に進み、メモリ領域の退避先のHDD102上のアドレス情報をハイバネーション用メモリ管理領域に退避先アドレス405として保存する。
【0032】
このように図5の処理では、連続読み込み速度と、ランダム読み込み速度と差がそれほど大きくないときは、ランダム読み込み処理によりRAM103のデータをHDD等の不揮発性メモリに退避する。これは連続読み込み処理では、そのデータ転送に要する待機時間が長くなって操作性が低下するのに対し、ランダム読み込みでは、バックグラウンドでの実行が可能となって、操作性の低下を抑えることができるためである。
【0033】
図6は、図5のS506の、連続読み込み用のハイバネーション用管理情報の作成処理を説明するフローチャートである。尚、この実施形態では、最小メモリ管理サイズとして4KB(キロバイト)としているが、本発明はこれに限らず、メモリ管理システム上の最小管理サイズとしても良い。
【0034】
まずS601で、この処理で用いる変数IDを「1」に、アドレスを示す変数ADを「0」に初期化する。ここで、IDはメモリ領域識別ID401(図4)に、ADは開始アドレス402(図4)に対応しており、ハイバネーション用管理情報の作成時に用いられる。次にS602に進み、変数ADの指すアドレスのメモリ領域(RAM領域)が存在するかどうかを判定する。
【0035】
まず、RAM103の退避データの開始アドレス402を決定する処理について説明する。S602で、AD(アドレス)の指す領域がRAM103に存在する場合はS603に進み、ADの指すアドレスが退避対象領域かどうかを判定する。S603で退避対象であると判定した場合はS604に進み、ハイバネーション用管理情報のID番目のデータ(管理情報)が存在するかどうかを判定する。ID番目のデータが存在する時はS607に進むが、そうでないときはS605に進み、メモリ領域識別ID401の値をIDとしたデータを新規に作成する。そしてS606に進み、現在のADの値を、ID番目のデータ領域の開始アドレス402として書き込んでS607に進む。この時点で、ID番目のデータには、メモリ領域識別ID401と開始アドレス402とが書かれていることになり他の値は空である。
【0036】
次に、領域サイズ403を決定する処理について説明する。S607では、開始アドレス402に最小メモリ管理サイズ(ここでは4KB)分のアドレスを加算してS602に進む。そしてS603で、そのアドレスが指す領域が退避対象でなくなるとS608に進み、ID番目のデータに領域サイズ403の値が登録されているかどうかを判定する。ここでID番目のデータに領域サイズ403の値が登録されていると判定するとS607に進む。一方、S608で、登録されていないと判定するとS609に進み、現在の読み進めたアドレスADとID番目のデータの開始アドレスの差(SIZE)を計算する。次にS610では、このSIZE値を、ID番目のデータの領域サイズ403として書き込む。また復元処理方法404として「連続」を書き込む。次にS611に進み、ID値を1つ増加させ、次のデータを作成するための準備を行ってS607に進む。
【0037】
こうしてメモリ(RAM103)を読み進めて行き、S602で、ADの指す領域がRAM103の管理外のメモリ領域に到達するとS612に進む。S612では、最後のメモリ領域識別ID401となるID番目のデータに領域サイズ403が登録されているか否かを判定する。登録されているときはこの処理を終了するが、領域サイズ403が登録されていないときはS613に進み、ステップ609と同様の計算により、領域サイズSIZEを計算する。そしてS614に進み、ステップ610と同様に、ID番目のデータ領域サイズ403としてSIZEを書き込み、復元処理方法404として「連続」を書き込んで、この処理を終了する。
【0038】
このようにして、RAM103の連続した退避データを、HDD102の退避先アドレスで示される可変長領域に連続して格納することができる。
【0039】
図7は、図5のS507のランダム読み込み用ハイバネーション用管理情報の作成処理を説明するフローチャートである。尚、この実施形態では、最小メモリ管理サイズとして4KB(キロバイト)としているが、本発明はこれに限らず、メモリ管理システム上の最小管理サイズとしても良い。
【0040】
まずS701で、変数IDを「1」に、ADを「0」に初期化する。ここで、IDはメモリ領域識別ID401に、ADは開始アドレス402に対応しており、これらはハイバネーション用管理情報の作成時に用いられる。次にS702に進み、ID番目のデータを作成する。この時点で、管理情報(データ)にはメモリ領域識別ID401のみが書かれていることになり他の値は空である。次にS703に進み、変数ADの指すアドレスのメモリ領域(RAM103)が存在するかどうかを判定する。この判定の結果、メモリ領域が存在すると判定するとS704に進み、更にその領域が退避対象であるか否かを判定する。この判定の結果、退避対象領域であると判定するとS705に進み、ID番目のデータの開始アドレス402として変数ADの値を、領域サイズ403として最小メモリ管理サイズを、復元処理方法404として「ランダム」を書き込む。次にS706で、変数IDの値を1増加させ、次にS707で、ID番目のデータを新たに作成する。この時点で、このデータにはメモリ領域識別ID401のみが書かれていることになり他の値は空である。そしてS708に進み、変数ADの値を、最小メモリ管理サイズだけ増加させてS703に進み、次のメモリ領域について読み進めていく。この結果、S703で、RAM103にADの指すメモリ領域が存在しなくなった場合はS709に進み、最後に作成した余分なID番目のデータを削除して、この処理を終了する。
【0041】
このようにして、RAM103の退避データを、最小メモリ管理サイズ(4KB)の単位で、HDD102の退避先アドレスで示される領域(一定サイズ)に格納することができる。
【0042】
次に図8のフローチャートを参照して、ハイバネーション用データの復元処理の流れを説明する。
【0043】
図8は、本実施形態に係るハイバネーション用データの復元処理を簡易的に説明するフローチャートである。尚、この処理は、HDD102にインストールされている、この処理を実行するプログラムをRAM103にロードし、そのプログラムをCPU101が実行することにより実現される。
【0044】
まずS801で、電源投入後、HDD102に保存された起動選択プログラムをRAM103上に展開する。次にS802で、起動選択プログラムは、ハイバネーション用管理情報の有無を判定する。S802で、ハイバネーション用管理情報が存在しないと判定するとS806に進み、ハイバネーションを行うことなく、通常の起動処理を行う。この通常の起動処理とは、HDD102に保存されたオペレーティングシステムの読み込み及び初期化処理、デバイスドライバの読み込み及び初期化処理、他のソフトウェアの読み込み及び初期化処理等を指す。
【0045】
一方、S802で、ハイバネーション用管理情報がHDD102に存在すると判定した場合はS803に進み、退避データを連続して読み込む復元処理を行う。このデータを連続して読み込む復元処理が完了した後、S804で、退避データをランダムのアドレスから読み込むデータの復元要求が発生するとS805に進み、最小メモリ管理サイズ単位での退避データの復元処理を行う。このデータの復元要求は、復元されていないメモリ領域をCPU101がアクセスすることにより逐次発生する。
【0046】
図9は、図8のS803の、連続読み込みデータの復元処理を説明するフローチャートである。この処理では、ハイバネーション用管理情報に記載されている復元処理方法404が「連続」である退避データを、HDD102からRAM103に復元するものとする。
【0047】
まずS901で、変数IDを「1」に初期化する。ここで変数IDは、メモリ領域識別ID401に対応しており、ハイバネーション用管理情報から復元対象のメモリ領域(RAM103の領域)を特定するために用いる。次にS902に進み、ハイバネーション用管理情報に、メモリ領域識別ID401がIDであるデータが存在するか否かを判定する。ここで存在すると判定するとS903に進み、そのレコードの復元処理方法404を調べる。ここで復元処理方法404が「連続」であると判定すると、対象の復元処理であるためS904に進む。S904では、そのデータから開始アドレス402と領域サイズ403と退避先アドレス405とを読み出す。次にS905に進み、S904で読み出した値を基に、HDD102の退避先アドレス405から領域サイズ403だけのデータを読み出して、RAM103の開始アドレス402から、領域サイズ403分のデータを書き戻す。こうしてID番目のデータを読み取った後S906に進み、次のデータを読み出すために、変数ID値を1だけ増やしてS902に進む。S902で、ハイバネーション用管理情報の最終データを読み取って、ID番目のデータが存在しなくなると、この連続読み込みデータの復元処理を終了する。
【0048】
この図9の処理により、HDD102の退避先アドレス405から連続して記憶されている領域サイズ分の退避データを読み出し、RAM103の開始アドレスで示されるアドレスから連続して書き戻すことにより、RAM103のデータを復元できる。
【0049】
図10は、図8のS805のランダム読み込みデータの復元処理を説明するフローチャートである。この処理において、ハイバネーション用管理情報に記載されている復元処理方法404が「ランダム」であるデータのうち、復元要求された、最小メモリ管理サイズ以下のデータをHDD102からRAM103に復元する。これは、復元処理が、対象の復元要求された領域に初めてアクセスされた際に、最小メモリサイズ単位で行われるオンデマンド処理であるためである。
【0050】
まずS1001で、復元要求の発生した領域のアドレスを変数ADに保存する。次にS1002に進み、ハイバネーション用管理情報の開始アドレスを順次調べ、ADが含まれるかどうかを調べる。S1002で、ADと、いずれかのデータの開始アドレス402とが等しいと判定するとS1003に進み、そのデータから退避先アドレス405を読み出す。次にS1004に進み、S1003で読出した退避先アドレス405を用いて、HDD102の退避先アドレスから最小メモリ管理サイズだけの退避データを読み出し、RAM103の開始アドレス402から最小メモリ管理サイズ分のデータを書き戻す。
【0051】
一方、S1002で、ハイバネーション用管理情報の全てに、該当する開始アドレス402が無い場合は、退避データが存在しないためS1005に進んで、異常処理を行う。この異常処理としては、ADの情報をデバッグログに出力するといった処理がある。
【0052】
(その他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。

【特許請求の範囲】
【請求項1】
ハイバネーション機能を備えた情報処理装置であって、
不揮発性記憶手段と、
前記ハイバネーションのために、揮発性メモリのデータを、前記不揮発性記憶手段に、連続する可変長のデータで退避するか、或いは一定長のデータの単位で退避する退避手段と、
少なくとも、前記退避手段により退避された前記データが記憶されていた前記揮発性メモリのアドレス、当該データを退避した前記不揮発性記憶手段のアドレス、及び前記可変長であるか一定長のデータの単位であるかを示す情報を記憶する管理情報記憶手段と、
前記退避手段により前記不揮発性記憶手段に退避したデータを、前記管理情報記憶手段に記憶された情報に従って前記揮発性メモリに書き戻す復元手段と、
を有することを特徴とする情報処理装置。
【請求項2】
前記不揮発性記憶手段に所定のデータを連続して書き込んで読み出す連続読み込み速度と、前記不揮発性記憶手段に一定長のデータの単位でランダムアクセスで書き込んで読み出すランダム読み込み速度とを比較し、その比較結果に基づいて、前記不揮発性記憶手段に可変長のデータで退避するか、或いは一定長のデータの単位で退避するかを決定する決定手段を更に有することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記不揮発性記憶手段に連続する可変長のデータで退避する場合、当該連続する可変長のデータのデータサイズを算出する算出手段と、
前記算出手段が算出した前記データサイズを前記管理情報記憶手段に記憶する手段とを更に有することを特徴とする請求項1又は2に記載の情報処理装置。
【請求項4】
ハイバネーション機能を備えた情報処理装置を制御する制御方法であって、
ハイバネーションのために、揮発性メモリのデータを、不揮発性メモリに、連続する可変長のデータで退避するか、或いは一定長のデータの単位で退避する退避工程と、
少なくとも、前記退避工程で退避された前記データが記憶されていた前記揮発性メモリのアドレス、当該データを退避した前記不揮発性メモリのアドレス、及び前記可変長であるか一定長のデータの単位であるかを示す情報を記憶する管理情報記憶工程と、
前記退避工程で前記不揮発性メモリに退避したデータを、前記管理情報記憶工程で記憶された情報に従って前記揮発性メモリに書き戻す復元工程と、
を有することを特徴とする情報処理装置の制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate