JP6080492B2 - 情報処理装置、起動方法およびプログラム - Google Patents

情報処理装置、起動方法およびプログラム Download PDF

Info

Publication number
JP6080492B2
JP6080492B2 JP2012235483A JP2012235483A JP6080492B2 JP 6080492 B2 JP6080492 B2 JP 6080492B2 JP 2012235483 A JP2012235483 A JP 2012235483A JP 2012235483 A JP2012235483 A JP 2012235483A JP 6080492 B2 JP6080492 B2 JP 6080492B2
Authority
JP
Japan
Prior art keywords
data
initialization
kernel
volatile memory
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2012235483A
Other languages
English (en)
Other versions
JP2014085909A (ja
Inventor
加藤 謙介
謙介 加藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2012235483A priority Critical patent/JP6080492B2/ja
Priority to US14/061,218 priority patent/US9904559B2/en
Publication of JP2014085909A publication Critical patent/JP2014085909A/ja
Application granted granted Critical
Publication of JP6080492B2 publication Critical patent/JP6080492B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Power Sources (AREA)
  • Stored Programmes (AREA)

Description

本発明は、ハイバネーション機構を有する情報処理装置を高速起動する技術に関する。
近年、情報処理装置において待機状態の消費電力を低減することができるハイバネーションが注目されている。ハイバネーションとは、システム中断機構である。システムが起動している状態でメモリやCPUレジスタ、デバイスの情報(以下、ハイバネーションイメージと称す)をハードディスクなどの不揮発性記憶装置に退避する。その後電源を切っても、次回起動時は退避させたハイバネーションイメージを読み込むことで以前と同じ状態に復帰する(以下、ハイバネーション起動と称す)。ハイバネーションは、システムの起動時間の短縮を目的として用いられることもある。
ハイバネーションによるシステムの起動方式は大きく2種類に分類される。BIOS機能もしくはブートローダ機能により復帰を行う方式と、オペレーティングシステムのカーネル機能により復帰を行う方式が存在する。
カーネル機能によるハイバネーション起動では、カーネルの初期化を行った後に、予め不揮発性記憶装置に記憶されたハイバネーションイメージを読み込むことで、ハイバネーション移行前の状態を復元する。BIOSによるハイバネーションと比較すると、通常の起動シーケンスを実行することでデバイスの初期化を行う為、汎用性に優れている。
ここで、カーネル機能によるハイバネーションは、BIOSやブートローダによるハイバネーションと比較すると、起動シーケンスに伴う処理時間を要することから、起動時間が長い。そこで、特許文献1のように、ハイバネーションイメージ全体を圧縮して不揮発性記憶装置に退避させる手法がある。
特開2001−022464号公報
DMAコントローラ(ダイレクトメモリアクセスコントローラ)を用いると、CPUによる特定の処理と並行して記憶装置間で情報を読み書きすることができる。そこで、ハイバネーション起動にDMACを組み込むことができると、カーネル初期化と並行してハイバネーションイメージを読み込むことが可能となり、ハイバネーション起動時間を短縮することができる。ただし、Linux(登録商標)などの複雑なメモリ管理機構を備えたカーネル上では、DMAコントローラはカーネルが指定する不特定の領域やカーネルが管理する領域にアクセスし難いため、メモリ領域の任意のアドレスにデータを書き込むことが難しい。そのため、従来のハイバネーション起動方式では、カーネル初期化とDMACで並行してハイバネーションイメージを読み込むことが困難である。
従って、特許文献1のようにハイバネーションイメージを圧縮する技術を利用して、転送効率を向上させようとしても、カーネル初期化後はハイバネーションイメージを伸張し続けるため、DMAコントローラを効率的に活用できない。
上述の課題を達成するために、本発明に係る情報処理装置は、揮発性メモリと、前記揮発性メモリに保持されている少なくとも一部のデータを圧縮データに圧縮する圧縮手段と、前記圧縮手段で圧縮を行わなかった非圧縮データと前記圧縮データとをハイバネーションイメージとして保持する不揮発性メモリと、前記揮発性メモリの一部を利用して行われるカーネルの初期化と並行して、前記不揮発性メモリに保持されている前記圧縮データを、前記揮発性メモリの、前記カーネルの初期化に利用しない領域中で前記ハイバネーションイメージ生成時に未使用だった未使用領域へ読み込む第1読み込み手段と、前記揮発性メモリに読み込んだ圧縮データを伸張する伸張手段と、前記伸張手段による処理と並行して、前記不揮発性メモリに保持されている非圧縮データを前記揮発性メモリに読み込む第2読み込み手段と、前記伸張手段により伸張したデータと前記第2読み込み手段によって読み込んだ非圧縮データとに基づいてシステムを起動させる起動手段とを有することを特徴とする。
本発明によれば、カーネルの初期化と並行して圧縮データを先読みしつつ圧縮データの伸張と並行して非圧縮データを読み込むことができるので、より高速な起動が可能になる。
情報処理装置の構成を示す概略図である。 本発明のハイバネーション機構の機能構成を示す概略図である。 ハイバネーションイメージの生成処理を示すフローチャートである。 ハイバネーションイメージのフォーマットを示す図である。 ハイバネーションイメージの作業領域データのフォーマットを示す図である。 ハイバネーションイメージの非圧縮データのフォーマットを示す図である。 ハイバネーションイメージの圧縮データのフォーマットを示す図である。 システムの起動処理を示すフローチャートである。 カーネルとDMAコントローラのアクセス領域の差異について示す図である。 ハイバネーションイメージの復帰処理を示すフローチャートである。 ハイバネーション起動時の仮想メモリについて示す図である。
図1に情報処理装置100の概略構成を示す。CPU101や、ダイレクトメモリアクセスコントローラ(以下、DMACと称す)102は、DRAM(DDRSDRAMなどを含む)を備える揮発性メモリ103に対してデータを読み書きする。なお、DMAC102はダイレクトメモリアクセスによって揮発性メモリ103、不揮発性記憶装置105、デバイス106にアクセスできる。入出力制御部(以下、I/Oコントローラと称す)104は、CPU101やDMAC102などの要求に基づいて、不揮発性メモリとしての不揮発性記憶装置(フラッシュメモリ、HDD、SSDなど)105に対する読み書きを行う。デバイス106は、CPU101によって初期化される周辺機器であって、PCI接続のグラフィックボードやUSB接続のスキャナ、プリンタなど様々な機器をデバイス106として用いることができる。デバイス106は其々、自身の状態を保持するステータスレジスタや処理に用いる値(画像処理のパラメータに対応する値や、処理モードを示す値)を保持するコンフィギュレーションレジスタを備える。なお、デバイス106は複数あってもよい。
CPU101は不揮発性記憶装置105に含まれるプログラムをメモリ103に展開し、メモリ103からプログラムをフェッチして後述の処理を実行する。
ハイバネーションとは、システムの状態の保存と、保存したシステムの状態を復元する技術であり、保存・復元されるシステムの状態を示すデータをハイバネーションイメージと呼称する(ハイバネーションイメージのフォーマットは後述する)。なお、ハイバネーションイメージは、不揮発性記憶装置105に保存される。
ここで、一般的なハイバネーション処理の流れを示す。ユーザ(又はユーザアプリケーション)がシステム中断を要求すると、メモリ103に書き込まれているデータ及び、その他のデバイス106の状態を表すデータ、CPU101のレジスタ値をもとにハイバネーションイメージが生成され、それが不揮発性記憶装置105へ書き込まれる。情報処理装置の電源を切り、再び起動すると、カーネルの初期化が開始される。カーネルの初期化直後に、ハイバネーションイメージが不揮発性記憶装置105からメモリ103へ読み込まれ、システム中断直前の状態に戻る。以下の説明では、ハイバネーションイメージを用いた起動シーケンスをハイバネーション起動と称す。
本実施形態では、Linux(登録商標)のバージョン2.6.18を従来手法として、ハイバネーション起動の高速化について説明する。
Linux(登録商標)では、メモリ管理をページ単位で行う。以下で述べる領域は、ひとつまたは複数のページから構成されるメモリの範囲を意味する。
図2は、本実施形態のハイバネーション機構の構成を示す図である。状態201a〜201dはそれぞれ同一メモリの異なる状態を示す。詳細には、状態200aはハイバネーションイメージ生成時の状態であり、状態200bはカーネル初期化時の状態、状態200cはカーネル初期化後の状態、状態200dはハイバネーション起動後の状態を示す。
204は圧縮部である。メモリ201aにおける使用中領域をページごとに圧縮し、ハイバネーションイメージの一部として不揮発性記憶装置202へ出力する。ただし、ページによっては圧縮率が低く、圧縮を行わない方が望ましいページも存在する。そのため、圧縮率の低いページであれば、非圧縮のままハイバネーションイメージの一部として不揮発性記憶装置202へ出力する。ただし、ハイバネーション処理を行うための変数を格納する領域(以下、ハイバネーション処理用領域と称す)は、ハイバネーションイメージに含めない。ハイバネーション処理用領域は、システムが再起動されてもアドレス値が変わらないようにするため、ハイバネーション起動時にカーネル管理となる領域(後述)から静的に確保する。
203は作業領域データ生成部(領域情報生成部)である。本実施形態では、カーネル初期化中に全圧縮データの読み込みを試みるため、その読み込みのための領域をハイバネーションイメージ生成時に未使用領域から確保する。そこで、作業領域データ生成部203では、メモリ201aにおける未使用領域のアドレスを収集し、この情報をページ変換テーブルにまとめ、ハイバネーションイメージの一部として不揮発性記憶装置202へ出力する。このページ変換テーブルのデータを作業領域データ(又は領域情報)と称し、そのデータが示す領域を作業領域と称す。
205はメモリ制限部であり、206はメモリ初期化機構である。メモリ制限部205はメモリ初期化機構206に対してオペレーティングシステムが管理するメモリ領域の制限を指示し、メモリ初期化機構206はこの情報をもとにメモリ201bの初期化を行う。この制限により、メモリ201bはカーネル管理領域とカーネル管理外領域に分かれる。この制限の目的は、意図的にカーネル管理外領域を作りだすことで、カーネルの初期化処理と並行してカーネル管理外領域にデータの読み込みを可能にすることにある。
207はカーネル初期化機構である。メモリ201bのメモリ初期化機構206によって初期化されたカーネル管理領域の範囲でカーネルの初期化を行う。
208は作業領域有効化部である。まず、メモリ201bのカーネル管理外領域に、作業領域データ生成部203で生成した作業領域データを読み込む。そして、この情報の一部を現在使用されているページ変換テーブルに上書きすることで、圧縮データを格納するための作業領域を確保して使用可能にする。
209は初期化時データ読み込み部(第1読み込み部)であり、210はDMACである。初期化時データ読み込み部209は、DMAC210を用いることでカーネル初期化機構207による初期化処理と並行し、不揮発性記憶装置202に保存されたハイバネーションイメージを作業領域へ順に読み込む。ただし、非圧縮データはハイバネーションイメージ生成時にそのデータが元々存在していた領域に読み込む。
211は初期化後データ読み込み部である。まず、初期化時データ読み込み部209が非圧縮データ以外の読み込みを完了していない場合は、該当データの読み込みを完了させる。212は伸張部である。メモリ201cに読み込まれた圧縮データを、ハイバネーションイメージ生成時にそのデータが元々存在していたメモリ201cの領域へ伸張する。この伸張部212による伸張と並行して、初期化後データ読み込み部211(第2読み込み部)は、DMAC210を用いて、非圧縮データをハイバネーションイメージ生成時にそのデータが元々存在していたメモリ201cの領域へ読み込む。初期化後データ読み込み部211では、カーネル管理領域及びカーネル管理外領域を区別する必要はない。これらの操作により、メモリ201cをメモリ201aと同様の状態に復元する(ハイバネーション処理用領域を除く)。以下の説明では、初期化後データ読み込み部211の処理を、メモリ復帰処理と称す。
また、作業領域データ生成部203及び圧縮部204、メモリ制限部205、メモリ初期化機構206、カーネル初期化機構207、作業領域有効化部208、初期化時データ読み込み部209、初期化後データ読み込み部211、伸張部212は、不揮発性記憶装置に格納されているプログラムに基づいて処理される。
次に、本実施形態におけるハイバネーションイメージ生成の流れを示す。
図3は、ユーザ(又はユーザアプリケーション)がシステム中断状態への移行を要求してからシステムが停止するまでのCPU101の処理の流れを示したフローチャートである。まず概略を説明すると、ステップS300でCPU101がプロセススケジューラを停止し、ステップS301でCPU101が各デバイスを停止しCPU101への割り込みを制限し、ステップS302でCPU101がCPUレジスタの退避を行う。そして、ステップS303でCPU101がハイバネーションイメージを生成して出力し、ステップS304でCPU101がシステムの停止を行う。
以下の説明では、ステップS300及びステップS301、ステップS302をシステム中断処理と称して図3のフローチャートの詳細を説明する。ステップS300では、CPU101がすべてのプロセスを停止すると、これ以降はプロセスの処理によるメモリ内容の変更が発生しない。ステップS301では、CPU101が各デバイスの状態をメモリ内に保存し、これ以降のデバイスへのアクセスを無効にする。ステップS302では、CPU101がCPUレジスタの内容をメモリ上に保存する。このシステム中断処理により、システムの状態を表す全ての情報がメモリに保存される。よって、このメモリ内容を不揮発性記憶装置に保存しておき、必要に応じてこれをメモリに読み出し、保存した各デバイスやCPUレジスタの状態を再設定し、割り込み及びプロセススケジューラを再開することで、システムの状態を復元することができる。
ステップS303では、CPU101がシステム中断処理によりシステムの状態が保持されているメモリ領域から、ハイバネーションイメージを生成し不揮発性記憶装置へ出力する。図4は、ハイバネーションイメージのフォーマットを示した図である。ヘッダ400は、ハイバネーションイメージに関する情報であり、有効なハイバネーションイメージであるかどうかを示す識別子及び非圧縮データのサイズ、圧縮データのサイズを含む。作業領域データ401は、ページ変換テーブルのデータを格納する。圧縮データ403は、圧縮したページ及び圧縮後のサイズ、伸張先アドレスを格納する。非圧縮データ404は非圧縮のページを格納し、非圧縮データアドレス402は非圧縮データ404の読み込み先アドレスを格納する。
次に、作業領域データ401のフォーマットについて示す。
作業領域データ401は、ハイバネーション起動時にハイバネーションイメージの読み込み先となる作業領域を示すデータであり、ページ変換テーブルとして格納する。このように格納することで、物理メモリ上では不連続な未使用ページを、仮想メモリ上では連続した領域として扱うことが可能になる。ページ変換テーブルは、1個以上の変換用ページによって段階的に構成される。以下の説明では、1段階目の変換用ページをページグローバルディレクトリと称し、2段階目以降の変換用ページをページテーブルと称す。
図5は、作業領域データ401のフォーマットを示した図である。ページグローバルディレクトリ500の作業領域に該当する項目には、ページテーブル501a、501b、…、501cの物理メモリアドレス及び状態フラグを記載する。そして、ページ変換テーブルとしての段階に応じ、1段階目の変換用ページから順に並べて連結する。
さらに、作業領域データ401のページ変換テーブルは、ハイバネーションイメージ生成時のカーネル管理領域のマッピング情報も含める。この情報は、ハイバネーション起動時に、圧縮データの伸張先へアクセスするために用いる。
次に、非圧縮データアドレス402及び非圧縮データ404のフォーマットについて示す。
非圧縮データアドレス402と、非圧縮データ404は対応関係にあり、非圧縮データ404のN番目に格納されたデータの配置先は、非圧縮データアドレス402のN番目に格納されたアドレスとなる。図6は、この対応関係を示した図である。N番目に格納された非圧縮ページアドレス600と、同じくN番目に格納された非圧縮ページ601は対応関係にある。非圧縮データアドレス402の情報の個数と、非圧縮データ404の情報の個数は、それぞれ等しい。
非圧縮データ404は、カーネル管理外領域に復帰させる非圧縮データ404a及び、カーネル管理領域に復帰させる非圧縮データ404bの2種類のデータを含む。このように分割する理由は、カーネル初期化時に読み込み可能なハイバネーションイメージが、先頭のヘッダ400から非圧縮データ404aまでに限定され、非圧縮データ404bはカーネル初期化後にしか読み込むことができないためである。そのため、非圧縮データ404aは、非圧縮データ404bより前方に配置する。
最後に、圧縮データ403のフォーマットについて示す。
図7は、圧縮データ403のフォーマットを示した図である。圧縮はページ単位で行う。700は1ページ分のデータを圧縮した際に生成する情報を示しており、圧縮ページサイズ701及び圧縮ページアドレス702、圧縮ページ703を含む。これらの情報をもとに、1ページ分のデータをメモリに復元することができる。
例えば、アドレスサイズが32bitのCPUでは、圧縮ページサイズ701を12Bit、圧縮ページアドレス702を20bit(4GB分のページを指定可能なサイズ)とする。この場合、圧縮ページ703は、12bitで表現可能な4096byte未満でなければならない。圧縮後のサイズが4096byte以上のものは、圧縮前のページを非圧縮データ404に格納する。
ここからは、圧縮データ403及び非圧縮データ404へ格納するページについて示す。
圧縮データ403のサイズは、上限となるサイズを予めユーザ(又はユーザアプリケーション)が指定してもよい。また、作業領域には、圧縮データ403だけでなく非圧縮データアドレス402及び、圧縮データ伸張時のスタックも格納する。そのため、圧縮データ403のサイズは、作業領域サイズからこれらのサイズを除いた値より小さくなければならない。圧縮データ403のサイズが上限に達しこれ以上ページを格納できない場合、未格納のページを非圧縮データ404へ格納する。
以上により生成されるハイバネーションイメージは、不揮発性記憶装置を有効にした後、指定の領域へ、ファイルシステムに依存しない型式で、物理的に連続した状態で格納する。
新たに、本実施形態におけるハイバネーション起動の流れを示す。
情報処理装置がONになると、BIOS及び、必要に応じブートローダが処理を行い、カーネル初期化を開始する。
図8は、本実施形態における、カーネル初期化の開始からハイバネーションイメージを復元するまでを示したフローチャートである。まず、概略を説明すると、ステップS800では、DMAC102が不揮発性記憶装置の所定領域の情報を読み込み、CPU101が読み込んだ情報に有効なハイバネーションイメージが存在するかどうかを確認する。ステップS801では、CPU101がメモリ管理機構の初期化を行う。ステップS802では、CPU101が割り込み機構の初期化を行う。ステップS803では、CPU101がハイバネーションイメージの並行読み込みを開始する。ステップS804では、CPU101がその他機能の初期化を行い、並行してDMAC102が非圧縮データアドレス402及び圧縮データ403、非圧縮データ404aを順に読み込む。ステップS805では、CPU101とDMAC102がメモリ復帰処理及びその準備を行う。
次に、図8のフローチャートの詳細を説明する。ステップS800では、CPU101がDMAC102及びI/Oコントローラ104を初期化し、DMAC102が不揮発性記憶装置の所定の領域に保存されたハイバネーションイメージのヘッダ400をメモリ103へ読み込む。ヘッダ400に含まれる識別子が有効であることをもって、ハイバネーションイメージが不揮発性記憶装置に格納されているとCPU101によって判定する。なお、図8は、不揮発性記憶装置にハイバネーションイメージが存在する場合の処理を示すフローチャートであり、不揮発性記憶装置にハイバネーションイメージが格納されていないと判断した場合、システムを通常起動する処理(不図示)を行う。
ステップS801では、CPU101がカーネルの管理するメモリの範囲を指定の大きさに制限し、メモリ管理機構の初期化を行う。具体的には、メモリマップを変更することで、カーネル管理領域の範囲を制限する。この制限サイズは、カーネル初期化処理に要求される必要最低限のメモリの大きさから決定され、制限サイズは少なくともカーネル初期化に必要なサイズ以上を確保する。この処理により、カーネル管理領域とカーネル管理外領域の2種類の領域をメモリに確保する。この制限は、メモリ復帰処理を完了することで解除される。
さらにステップS801では、CPU101がカーネル管理領域へアクセスするためのページ変換テーブルを生成する。このページ変換テーブルのページグローバルディレクトリをカーネルPGD(Page Global Directory)と称す。また、作業領域データ401のページ変換テーブルをメモリに読み込む。このページ変換テーブルのページグローバルディレクトリをハイバネーションPGDと称す。そして、ハイバネーションPGDの作業領域に関する情報を、カーネルPGDのカーネル初期化では利用されない領域に上書きすることで、作業領域を使用可能にする。
ただし、メモリに読み込まれた作業領域データ401のページ変換テーブルは、カーネル初期化用のデータ及び圧縮データ、非圧縮データ、伸張後のデータによって上書きされてはならない。そこで、作業領域データ401におけるページグローバルディレクトリは常に1つであるため、ハイバネーション処理用領域に読み込む。これにより、上書きを防ぐことができる。しかし、作業領域データ401におけるページテーブルは、その数が固定ではないため保持するための領域をカーネル管理領域に予約しておくことが難しい。そこで、カーネル管理領域に各ページテーブルを読み込み、次に、カーネル管理外領域を一時的にカーネルから使用可能にし、カーネル管理外領域の予め決めてある領域に各ページテーブルを移動する。
ステップS803では、並行読み込みを行うための手段として、DMAC102を用いる。DMACでは、仮想アドレスではなく物理アドレスを指定する必要がある。そのため、ページ変換テーブルを用いて、作業領域の読み込み先となる仮想アドレスを物理アドレスに変換し、DMAC102に指定する。
図9は、カーネル初期化時の並行読み込みについて示した図である。900はメモリであり、カーネル管理領域900aとカーネル管理外領域900bを有する。901はCPU101によって実行されているカーネルであり、カーネル管理領域900aにのみアクセスする。902はDMAC、903は不揮発性記憶装置であり、DMAC902はステップS804におけるカーネル初期化中に、非圧縮データアドレス402及び圧縮データ403を、カーネル管理外領域900bの作業領域の先頭から順に読み込む。上記データを全て読み込んだ場合、次に非圧縮データ404aを、非圧縮データアドレスに従って読み込む。非圧縮データ404aのページは、前述の通り、作業領域を除く領域及びカーネル管理外領域900bへ復帰するため、作業領域及びカーネル管理領域を上書きすることはない。
DMACは、データ転送に用いるパラメータ(転送元アドレス、転送先アドレス、データサイズ)をCPUにより指定すると、不揮発性記憶装置からメモリへCPUとは非同期に転送を行う。DMACは一度に転送可能なサイズが決められているため、特定サイズの転送ごとに、CPUにより再び新たなパラメータを指定する必要がある。そこで本実施形態では、DMAC102の転送完了割り込みを利用し、次に読むべきデータを指定して新たな読み込みを実行する。また、タイマを利用して一定時間ごとに割り込みを発生させ、CPU101がDMAC102の読み込み状況を確認し、読み込みが完了していれば次に読むべきデータを指定して新たな読み込みを実行するようにしてもよい。
DMAC102によるカーネル初期化時の並行読み込みは、非圧縮データアドレス402及び圧縮データ403、非圧縮データ404aを読み込み終えるか、カーネルの初期化終了後に圧縮データが伸張される直前まで継続して行う。
図10は、ステップS805の詳細であり、本実施形態におけるハイバネーションイメージ復帰処理の流れである。ステップS1000でCPU101がプロセススケジューラを停止し、ステップS1001でCPU101が各デバイスを停止し割り込みを制限する。また、ステップS1002でCPU101が仮想メモリをカーネルPGDからハイバネーションPGDへ切り替え、ステップS1003でCPU101がスタックを切り替え、ステップS1004でCPU101がDMAC102による並行読み込みを停止し、ステップS1005でCPU101とDMAC102によってメモリの復帰を行う。
なお、ステップS1002では、ページ変換テーブルの切り替えを行う。x86環境では、CPUレジスタCR3の値をカーネルPGDのアドレスからハイバネーションPGDのアドレスに書き換えることで、切り替えが完了する。この処理を行う理由は2点ある。1点目は、カーネルPGDはメモリ制限が反映されたマッピングであり、伸張先へアクセスするには不十分なためである。ハイバネーションPGDはメモリ制限前のマッピングであるため、このページ変換テーブルに切り替えることで全ての伸張先へアクセスすることができるようになる。2点目は、メモリ復帰処理時にカーネルPGDが書き変わるためである。前述の通り、ハイバネーションPGDはハイバネーション処理用領域に確保するため、メモリ復帰処理時に書き変わることはない。
図11は、本実施形態をx86環境に適用した場合の、ハイバネーション起動時の仮想メモリの一例を示した図である。1100はCPUレジスタCR3であり、1101はカーネルPGD、1102はハイバネーションPGDである。1103aはメモリ制限されたカーネル管理領域のマッピング情報であり、1103bはメモリ制限されていないカーネル管理領域のマッピング情報、1104は作業領域のマッピング情報である。ステップS1001以前におけるCPUレジスタCR3である1100はカーネルPGD1101を示し、ステップS1002によりCPUレジスタCR3である1100はハイバネーションPGD1102を示すようになる。
また、図10のステップS1003では、スタックの使用先を切り替えている。これは、メモリ復帰処理時に従来のスタックの内容が書き換えられてしまうためである。また、切り替え先のスタックも上書きを防ぐ必要があるため、作業領域の末尾を指定する。なお、スタックの復帰はS1006で行う。
また、図10のステップS1004では、動作中のDMAC102が停止するまで待機を行っているが、既にDMAC102による並行読み込みが完了している場合、待機は行わなくてもよい。
また、図10のステップS1005では、非圧縮データアドレス402及び圧縮データ403が全て読み込まれていない場合は読み込みを完了させる。そして、圧縮データをページ毎に伸張し、伸張と並行して非圧縮データを読み込む。割り込みは既に停止しているため、ここでは、各ページを伸張するループ処理の中でDMACの完了を逐次チェックする。データの読み込み先は、カーネル初期化時の並行読み込み時と同じである。圧縮ページ703の伸張は、圧縮ページサイズ701及び圧縮ページアドレス702に応じて行う。圧縮ページアドレス702は、作業領域以外を指し示すため、未伸張の圧縮データを上書きすることはない。以上の処理を、全ての圧縮データの伸張と全ての非圧縮データの読み込みの両方が完了するまで繰り返す。
以上の処理により、メモリは、ハイバネーション処理用領域を除き、ステップS301直後と同様の状態へ復帰される。また、メモリを復帰した後は、CPU101の処理によって一般的なハイバネーション起動のようにCPUレジスタ値の復帰及び、各デバイス情報の復帰、割り込みの再開、プロセススケジューラの再開を行い、ハイバネーション起動を完了させる。
以上のように本実施形態では、ハイバネーションイメージを利用してシステムを再び起動する際に、カーネルによる初期化と並行して圧縮データを読み込み、伸張と並行して非圧縮データを読み込むことにより、従来の方法と比べて高速にシステムを復元することができる。
なお、初期化時データ読み込み部(第1読み込み部)209と初期化後データ読み込み部(第2読み込み部)211とは一体的な構成であってもよい、その場合はDMACとして一体的に構成することが好ましい。
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)が、コンピュータが読み取り可能なプログラムを読み出して実行する処理である。

Claims (14)

  1. 揮発性メモリと、
    前記揮発性メモリに保持されている少なくとも一部のデータを圧縮データに圧縮する圧縮手段と、
    前記圧縮手段で圧縮を行わなかった非圧縮データと前記圧縮データとをハイバネーションイメージとして保持する不揮発性メモリと、
    前記揮発性メモリの一部を利用して行われるカーネルの初期化と並行して、前記不揮発性メモリに保持されている前記圧縮データを、前記揮発性メモリの、前記カーネルの初期化に利用しない領域中で前記ハイバネーションイメージ生成時に未使用だった未使用領域へ読み込む第1読み込み手段と、
    前記揮発性メモリに読み込んだ圧縮データを伸張する伸張手段と、
    前記伸張手段による処理と並行して、前記不揮発性メモリに保持されている非圧縮データを前記揮発性メモリに読み込む第2読み込み手段と、
    前記伸張手段により伸張したデータと前記第2読み込み手段によって読み込んだ非圧縮データとに基づいてシステムを起動させる起動手段とを有することを特徴とする情報処理装置。
  2. 前記揮発性メモリに、前記カーネルの初期化に利用するカーネル管理領域と前記カーネルの初期化に利用しないカーネル管理外領域とを割り当てるメモリ管理手段をさらに有することを特徴とする請求項1に記載の情報処理装置。
  3. 前記起動手段は、前記不揮発性メモリに前記ハイバネーションイメージが退避されていない場合は前記ハイバネーションイメージを使わない通常起動を行うことを特徴とする請求項1又は2に記載の情報処理装置。
  4. 前記不揮発性メモリに前記ハイバネーションイメージを退避させる退避手段をさらに有することを特徴とする請求項1乃至3のいずれか1項に記載の情報処理装置。
  5. 前記圧縮手段は、前記揮発性メモリに保持されているデータを所定のサイズごとに圧縮し、圧縮率に応じて前記圧縮データとして保持するかどうかを判断することを特徴とする請求項1乃至4のいずれか1項に記載の情報処理装置。
  6. 前記退避手段は、ファイルシステムに依存しない型式のファイルのハイバネーションイメージを前記不揮発性メモリに退避することを特徴とする請求項4に記載の情報処理装置。
  7. 前記メモリ管理手段は、前記カーネル管理領域のサイズを、前記カーネルの初期化に必要なサイズ以上とすることを特徴とする請求項2に記載の情報処理装置。
  8. 前記第1読み込み手段は、DMACを用いて、前記不揮発性メモリに保持されている前記圧縮データを前記カーネル管理外領域へ読み込み、前記不揮発性メモリに保持されている全ての前記圧縮データの読み込みが完了した場合は、前記非圧縮データを前記カーネル管理外領域へ読み込むことを特徴とする請求項2に記載の情報処理装置。
  9. 前記伸張手段は、前記不揮発性メモリに保持されている全ての前記圧縮データの読み込みが完了していない場合は、全ての前記圧縮データを前記揮発性メモリに読み込むことを特徴とする請求項1乃至8のいずれか1項に記載の情報処理装置。
  10. 前記伸張手段は、伸張後のデータが未伸張の前記圧縮データを上書きしないよう前記揮発性メモリに伸張することを特徴とする請求項1乃至9のいずれか1項に記載の情報処理装置。
  11. 前記第2読み込み手段は、DMACを用い、前記不揮発性メモリに保持されている前記非圧縮データを前記揮発性メモリへ読み込むことを特徴とする請求項1乃至10のいずれか1項に記載の情報処理装置。
  12. 揮発性メモリと、
    圧縮データと非圧縮データとを含むハイバネーションイメージを保持する不揮発性メモリと、
    前記揮発性メモリの一部を利用して行われるカーネルの初期化と並行して、前記不揮発性メモリに保持されている前記圧縮データを、前記揮発性メモリの、前記カーネルの初期化に利用しない領域中で前記ハイバネーションイメージ生成時に未使用だった未使用領域へ読み込む初期化時データ読み込み手段と、
    前記初期化時データ読み込み手段で読み込んだ圧縮データの伸張と並行して、前記不揮発性メモリに保持されている前記非圧縮データを前記揮発性メモリに読み込む初期化後データ読み込み手段と
    を有することを特徴とする情報処理装置。
  13. 揮発性メモリと、圧縮データと非圧縮データとを含むハイバネーションイメージを保持する不揮発性メモリと、を有する情報処理装置の起動方法であって、
    前記揮発性メモリに展開するカーネルの初期化と並行して、前記不揮発性メモリに保持されている圧縮データを、前記揮発性メモリの、前記カーネルの初期化に利用しない領域中で前記ハイバネーションイメージ生成時に未使用だった未使用領域へ読み込む初期化時データ読み込み工程と、
    揮発性メモリに読み込んだ圧縮データを伸張する伸張工程と、
    前記伸張工程の処理と並行して前記不揮発性メモリに保持されている非圧縮データを前記揮発性メモリに読み込む初期化後データ読み込み工程と、
    前記伸張工程により伸張したデータと前記初期化後データ読み込み工程で読み込んだ非圧縮データとに基づいてシステムを起動させる起動工程とを有することを特徴とする起動方法。
  14. 揮発性メモリと、圧縮データと非圧縮データとを含むハイバネーションイメージを保持する不揮発性メモリと、を備えるコンピュータに、
    前記揮発性メモリに展開するカーネルの初期化と並行して、前記不揮発性メモリに保持されている前記圧縮データを前記カーネルの初期化に利用しない領域中で前記ハイバネーションイメージ生成時に未使用だった未使用領域へ読み込む初期化時データ読み込み工程と、
    前記不揮発性メモリに読み込んだ圧縮データを伸張する伸張工程と、
    前記伸張工程の処理と並行して前記不揮発性メモリに保持されている非圧縮データを前記揮発性メモリに読み込む初期化後データ読み込み工程と、
    前記伸張工程により伸張したデータと前記初期化後データ読み込み工程で読み込んだ非圧縮データとに基づいてシステムを起動させる起動工程とを実行させることを特徴とするプログラム。
JP2012235483A 2012-10-25 2012-10-25 情報処理装置、起動方法およびプログラム Active JP6080492B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012235483A JP6080492B2 (ja) 2012-10-25 2012-10-25 情報処理装置、起動方法およびプログラム
US14/061,218 US9904559B2 (en) 2012-10-25 2013-10-23 Information processing apparatus and activation method therefor for processing data of a hibernation image

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012235483A JP6080492B2 (ja) 2012-10-25 2012-10-25 情報処理装置、起動方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2014085909A JP2014085909A (ja) 2014-05-12
JP6080492B2 true JP6080492B2 (ja) 2017-02-15

Family

ID=50788901

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012235483A Active JP6080492B2 (ja) 2012-10-25 2012-10-25 情報処理装置、起動方法およびプログラム

Country Status (1)

Country Link
JP (1) JP6080492B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017027423A (ja) 2015-07-24 2017-02-02 ソニー株式会社 手術用システム、手術用装置、および手術用方法
JP6747283B2 (ja) * 2016-12-27 2020-08-26 コニカミノルタ株式会社 画像処理装置、起動方法および起動プログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6883037B2 (en) * 2001-03-21 2005-04-19 Microsoft Corporation Fast data decoder that operates with reduced output buffer bounds checking
JP2005258642A (ja) * 2004-03-10 2005-09-22 Yamaha Corp 組込型情報処理装置
US20110107020A1 (en) * 2009-10-30 2011-05-05 Duan Binghua Hibernation solution for embedded devices and systems
JP5683186B2 (ja) * 2010-09-22 2015-03-11 キヤノン株式会社 起動高速化方法、情報処理装置及びプログラム
JP5783809B2 (ja) * 2011-06-03 2015-09-24 キヤノン株式会社 情報処理装置、起動方法およびプログラム

Also Published As

Publication number Publication date
JP2014085909A (ja) 2014-05-12

Similar Documents

Publication Publication Date Title
KR101636870B1 (ko) 최소 부트 이미지의 생성 방법 및 장치
US20120311240A1 (en) Information processing apparatus, information processing method, and storage medium
CN100394391C (zh) 用于在计算机系统上存储数据的系统和方法
JP6399916B2 (ja) 情報処理装置およびその制御方法
KR101562973B1 (ko) 메모리 장치 및 메모리 장치의 동작 방법
TWI436199B (zh) 電源管理控制器與方法
JP5860543B2 (ja) ブートデータのロード
US20100058007A1 (en) Information processing apparatus and memory management method
CN110704161B (zh) 虚拟机创建方法、装置及计算机设备
WO2020119213A1 (zh) 一种镜像文件的生成及加载方法、设备
JP5683186B2 (ja) 起動高速化方法、情報処理装置及びプログラム
JP6080492B2 (ja) 情報処理装置、起動方法およびプログラム
WO2000054133A1 (fr) Dispositif de traitement de donnees, procede de sauvegarde/chargement de donnees et support de memorisation de donnees
US10936045B2 (en) Update memory management information to boot an electronic device from a reduced power mode
US9904559B2 (en) Information processing apparatus and activation method therefor for processing data of a hibernation image
KR100994723B1 (ko) 시스템에서 초기 구동시간을 단축시키는 선택적 서스펜드 리쥼 방법 및 그 기록매체
JP6080491B2 (ja) 情報処理装置、起動方法およびプログラム
JP6080490B2 (ja) 情報処理装置、起動方法およびプログラム
KR101888781B1 (ko) 비휘발성 메모리를 이용하는 영속적 dram 스토리지 및 그 작동 방법
JP2013246646A (ja) 情報処理装置及びデータ読出方法
KR20140018134A (ko) 오프 상태로부터의 운영 체제의 고속 부팅이 가능한 임베디드 시스템 및 임베디드 시스템에서의 부팅 방법
JP2003122647A (ja) 情報処理装置
JPH06161842A (ja) 外部記憶装置およびこれを用いたコンピュータ
JP5685070B2 (ja) 情報処理装置、およびプログラム
JP2005157748A (ja) コンピュータシステムの起動方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151026

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160728

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160809

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161007

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161220

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170117

R151 Written notification of patent or utility model registration

Ref document number: 6080492

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151