(57)【要約】【課題】起動時間を短縮することができる電子機器などの技術を提供すること。【解決手段】本技術に係る電子機器は、揮発性メモリと、スワップデバイスと、制御部とを具備する。前記制御部は、起動開始から起動開始後の特定の時点までの間に前記揮発性メモリに展開されたデータを、スナップショットイメージの作成に用いるデータと、前記スワップデバイスに記憶しておくデータとに割り振る。【選択図】図５
2014178913.tif 000002
【特許請求の範囲】
【請求項１】
揮発性メモリと、
スワップデバイスと、
起動開始から起動開始後の特定の時点までの間に前記揮発性メモリに展開されたデータを、スナップショットイメージの作成に用いるデータと、前記スワップデバイスに記憶しておくデータとに割り振る制御部と
を具備する電子機器。
【請求項２】
請求項１に記載の電子機器であって、
前記制御部は、起動開始から起動開始後の特定の時点までの間に前記揮発性メモリに展開されたデータのうち、どのデータを前記スナップショットイメージの作成に用いるかをプロファイリングにより判断するプロファイリングモードを実行する
電子機器。
【請求項３】
請求項２に記載の電子機器であって、
前記制御部は、前記プロファイリングモードにおいて、前記揮発性メモリへのデータの読み込みに関するプロファイリングにより、どのデータを前記スナップショットイメージの作成に用いるかを判断する
電子機器。
【請求項４】
請求項３に記載の電子機器であって、
前記制御部は、前記プロファイリングモードにおいて、ＯＳ（Operation System）の先読み機能を停止する
電子機器。
【請求項５】
請求項３に記載の電子機器であって、
前記制御部は、前記プロファイリングにより、どのデータを前記スナップショットイメージの作成に用いるかに関するリストを作成する
電子機器。
【請求項６】
請求項２に記載の電子機器であって、
前記制御部は、前記プロファイリングモードを実行した後、前記プロファイリングにより前記スナップショットイメージの作成に用いられると判断されたデータを、前記揮発性メモリに読み込み、読み込まれた前記揮発性メモリ内のデータに基づいて、前記スナップショットイメージを作成するスナップショットイメージ作成モードを実行する
電子機器。
【請求項７】
請求項６に記載の電子機器であって、
前記制御部は、前記スナップショットイメージ作成モードにおいて、ＯＳ（Operation System）の先読み機能を停止する
電子機器。
【請求項８】
請求項２に記載の電子機器であって、
前記制御部は、前記プロファイリングモードに先立って、前記起動開始から前記起動開始後の特定の時点まで、通常起動により前記データをメモリに展開させる準備モードを実行する
電子機器。
【請求項９】
請求項８に記載の電子機器であって、
前記制御部は、前記準備モードにおいて、前記起動開始から前記起動開始後の特定の時点までの間に前記揮発性メモリに展開されたデータのうち、アプリケーションプログラムで使用されているデータを前記スワップデバイスにスワップアウトする
電子機器。
【請求項１０】
請求項９に記載の電子機器であって、
前記スワップデバイスは、前記データがスワップアウトされた後、リードオンリーの状態とされる
電子機器。
【請求項１１】
請求項９に記載の電子機器であって、
前記制御部は、前記準備モードにおいて、前記起動開始から前記起動開始後の特定の時点までの間に前記揮発性メモリに展開されたデータのうち、アプリケーションプログラム及びページキャッシュを削除する
電子機器。
【請求項１２】
請求項１１に記載の電子機器であって、
前記制御部は、前記準備モードにおいて、アプリケーションプログラムで使用されているデータがスワップアウトされ、かつ、アプリケーションプログラム及びページキャッシュが削除された後の前記揮発性メモリ内のデータに基づいて、最終的な前記スナップショットイメージを作成する前の段階のスナップショットイメージを作成する
電子機器。
【請求項１３】
請求項２に記載の電子機器であって、
前記制御部は、前記プロファイリングにより前記スナップショットイメージの作成に用いられると判断されたデータについて、前記スナップショットイメージの作成に用いるべきデータの数を判断する
電子機器。
【請求項１４】
請求項１３に記載の電子機器であって、
前記制御部は、データを前記揮発性メモリへ読み込むときの速度及びページフォールトが発生したときにデータを前記揮発性メモリに読み込むときに掛かる処理時間に基づいて、前記スナップショットイメージの作成に用いるべきデータの数を判断する
電子機器。
【請求項１５】
請求項２に記載の電子機器であって、
前記制御部は、前記プロファイリングにより前記スナップショットイメージの作成に用いられると判断されたデータのうち、どのデータを前記スナップショットイメージの作成に用いるかを更に判断する
電子機器。
【請求項１６】
請求項１５に記載の電子機器であって、
前記制御部は、データと、前記データが前記揮発性メモリに読み込まれた時刻を示す時刻情報とを前記プロファイリングモードにおいて関連付け、前記時刻情報に基づいて、データが読み込まれる頻度が高い時間区域を判断し、頻度が高い前記時間区域内に前記揮発性メモリに読み込まれたデータを用いて前記スナップショットイメージを作成する
電子機器。
【請求項１７】
起動開始から起動開始後の特定の時点までの間に揮発性メモリに展開されたデータを、スナップショットイメージの作成に用いるデータと、スワップデバイスに記憶しておくデータとに割り振り、
前記スナップショットイメージの作成に用いるデータに基づいて、前記スナップショットイメージを作成する
スナップショットイメージの作成方法。
【請求項１８】
電子機器に、
起動開始から起動開始後の特定の時点までの間に揮発性メモリに展開されたデータを、スナップショットイメージの作成に用いるデータと、スワップデバイスに記憶しておくデータとに割り振るステップと、
前記スナップショットイメージの作成に用いるデータに基づいて、前記スナップショットイメージを作成するステップと
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、スナップショットイメージを用いて起動を行う電子機器、スナップショットイメージの作成方法及びプログラムに関する。
【背景技術】
【０００２】
従来から、デジタルカメラ、テレビジョン受信装置、ＰＣ（Personal Computer）など各種の電子機器を高速起動するための技術として、ハイバネーションや、スナップショットブートなどの技術が知られている。
【０００３】
例えば、下記特許文献１には、ハイバネーションに関する技術がされている。ハイバネーションは、シャットダウンの前に、揮発性メモリ内のメモリイメージを不揮発性メモリに記憶させ、起動の際に、このメモリイメージを読み出すことによって、シャットダウン前の状態を再現するといった技術である。
【０００４】
また、例えば、下記特許文献２には、スナップショットブートに関する技術が記載されている。スナップショットブートは、スナップショットイメージとよばれる高速起動用のメモリイメージを予め用意しておき、起動時にスナップショットイメージを利用して電子機器を起動させるといった技術である。
【０００５】
ハイバネーション及びスナップショットブートの違いは、ハイバネーションでは、毎回異なるメモリイメージに基づいて起動が行われるに対して、スナップショットブートでは、原則的に、毎回同じメモリイメージに基づいて起動が行われる点である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−３３４３８３号公報
【特許文献２】特開２０１１−１１６２４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
電子機器においては、起動時間が短いことが望ましく、従って、さらに起動時間を短縮することができる技術が期待されている。
【０００８】
以上のような事情に鑑み、本技術の目的は、起動時間を短縮することができる電子機器などの技術を提供することにある。
【課題を解決するための手段】
【０００９】
本技術に係る電子機器は、揮発性メモリと、スワップデバイスと、制御部とを具備する。
前記制御部は、起動開始から起動開始後の特定の時点までの間に前記揮発性メモリに展開されたデータを、スナップショットイメージの作成に用いるデータと、前記スワップデバイスに記憶しておくデータとに割り振る。
【００１０】
本技術に係る電子機器では、起動開始から起動開始後の特定の時点までの間に揮発性メモリに展開されたデータのうち、一部がスナップショットイメージの作成に用いられる。そして、少なくとも他の一部がスワップデバイスに記憶される。これにより、スナップショットイメージのサイズが小さくなり、システムの起動時間を短縮することが可能となる。
【００１１】
上記電子機器において、前記制御部は、起動開始から起動開始後の特定の時点までの間に前記揮発性メモリに展開されたデータのうち、どのデータを前記スナップショットイメージの作成に用いるかをプロファイリングにより判断するプロファイリングモードを実行してもよい。
【００１２】
これにより、制御部は、どのデータをスナップショットイメージの作成に用いるかを適切に判断することができる。
【００１３】
上記電子機器において、前記制御部は、前記プロファイリングモードにおいて、前記揮発性メモリへのデータの読み込みに関するプロファイリングにより、どのデータを前記スナップショットイメージの作成に用いるかを判断してもよい。
【００１４】
これにより、制御部は、どのデータをスナップショットイメージの作成に用いるかを適切に判断することができる。
【００１５】
上記電子機器において、前記制御部は、前記プロファイリングモードにおいて、ＯＳ（Operation System）の先読み機能を停止してもよい。
【００１６】
これにより、起動に本来必要のないデータがＯＳの先読み機能によりスナップショットイメージに含まれてしまうことを防止することができる。
【００１７】
上記電子機器において、前記制御部は、前記プロファイリングにより、どのデータを前記スナップショットイメージの作成に用いるかに関するリストを作成してもよい。
【００１８】
上記電子機器において、前記制御部は、前記プロファイリングモードを実行した後、前記プロファイリングにより前記スナップショットイメージの作成に用いられると判断されたデータを、前記揮発性メモリに読み込み、読み込まれた前記揮発性メモリ内のデータに基づいて、前記スナップショットイメージを作成するスナップショットイメージ作成モードを実行してもよい。
【００１９】
これにより、スナップショットイメージを適切に作成することができる。
【００２０】
上記電子機器において、前記制御部は、前記スナップショットイメージ作成モードにおいて、ＯＳ（Operation System）の先読み機能を停止してもよい。
【００２１】
これにより、起動に本来必要のないデータがＯＳの先読み機能によりスナップショットイメージに含まれてしまうことを防止することができる。
【００２２】
上記電子機器において、前記制御部は、前記プロファイリングモードに先立って、前記起動開始から前記起動開始後の特定の時点まで、通常起動により前記データをメモリに展開させる準備モードを実行してもよい。
【００２３】
上記電子機器において、前記制御部は、前記準備モードにおいて、前記起動開始から前記起動開始後の特定の時点までの間に前記揮発性メモリに展開されたデータのうち、アプリケーションプログラムで使用されているデータを前記スワップデバイスにスワップアウトしてもよい。
【００２４】
上記電子機器において、前記スワップデバイスは、前記データがスワップアウトされた後、リードオンリーの状態とされてもよい。
【００２５】
上記電子機器において、前記制御部は、前記準備モードにおいて、前記起動開始から前記起動開始後の特定の時点までの間に前記揮発性メモリに展開されたデータのうち、アプリケーションプログラム及びページキャッシュを削除してもよい。
【００２６】
上記電子機器において、前記制御部は、前記準備モードにおいて、アプリケーションプログラムで使用されているデータがスワップアウトされ、かつ、アプリケーションプログラム及びページキャッシュが削除された後の前記揮発性メモリ内のデータに基づいて、最終的な前記スナップショットイメージを作成する前の段階のスナップショットイメージを作成してもよい。
【００２７】
上記電子機器において、前記制御部は、前記プロファイリングにより前記スナップショットイメージの作成に用いられると判断されたデータについて、前記スナップショットイメージの作成に用いるべきデータの数を判断してもよい。
【００２８】
これにより、起動時間をさらに短縮することが可能となる。
【００２９】
上記電子機器において、前記制御部は、データを前記揮発性メモリへ読み込むときの速度及びページフォールトが発生したときにデータを前記揮発性メモリに読み込むときに掛かる処理時間に基づいて、前記スナップショットイメージの作成に用いるべきデータの数を判断してもよい。
【００３０】
これにより、起動時間をさらに短縮することが可能となる。
【００３１】
上記電子機器において、前記制御部は、前記プロファイリングにより前記スナップショットイメージの作成に用いられると判断されたデータのうち、どのデータを前記スナップショットイメージの作成に用いるかを更に判断してもよい。
【００３２】
これにより、起動時間をさらに短縮することが可能となる。
【００３３】
上記電子機器において、前記制御部は、データと、前記データが前記揮発性メモリに読み込まれた時刻を示す時刻情報とを前記プロファイリングモードにおいて関連付け、前記時刻情報に基づいて、データが読み込まれる頻度が高い時間区域を判断し、頻度が高い前記時間区域内に前記揮発性メモリに読み込まれたデータを用いて前記スナップショットイメージを作成してもよい。
【００３４】
これにより、起動時間をさらに短縮することが可能となる。
【００３５】
本技術に係るスナップショットイメージの作成方法は、起動開始から起動開始後の特定の時点までの間に揮発性メモリに展開されたデータを、スナップショットイメージの作成に用いるデータと、スワップデバイスに記憶しておくデータとに割り振ることを含む。
前記スナップショットイメージの作成に用いるデータに基づいて、前記スナップショットイメージが作成される。
【００３６】
本技術に係るプログラムは、電子機器に、
起動開始から起動開始後の特定の時点までの間に揮発性メモリに展開されたデータを、スナップショットイメージの作成に用いるデータと、スワップデバイスに記憶しておくデータとに割り振るステップと、
前記スナップショットイメージの作成に用いるデータに基づいて、前記スナップショットイメージを作成するステップと
を実行させる。
【発明の効果】
【００３７】
以上のように、本技術によれば、起動時間を短縮することができる電子機器などの技術を提供することができる。
【図面の簡単な説明】
【００３８】
【図１】本技術の一実施形態に係る電子機器の内部構成を示すブロック図である。
【図２】スナップショットイメージが作成されるときの処理を示すフローチャートである。
【図３】準備モードでの処理を示すフローチャートである。
【図４】準備モードでの処理を説明するための模式図である。
【図５】プロファイリングモードでの処理を示すフローチャートである。
【図６】プロファイリングモードでの処理を説明するための模式図である。
【図７】ページフォールトの履歴を取ることで生成されたイメージリストの一例を示す図である。
【図８】ページフォールトの履歴を取ることで生成されたイメージリストの一例を示す図である。
【図９】スナップショットイメージ作成モードでの処理を示すフローチャートである。
【図１０】スナップショットイメージ作成モードでの処理を説明するための模式図である。
【図１１】比較例に係るスナップショットイメージを使用して起動を行うときの様子を示す図である。
【図１２】本技術に係るスナップショットイメージを使用して起動を行うときの様子を示す図である。
【図１３】数式の左辺及び右辺の意味を説明するための図である。
【図１４】本技術の別の実施形態に係る電子機器の処理を説明するための図である。
【発明を実施するための形態】
【００３９】
以下、本技術に係る実施形態を、図面を参照しながら説明する。
【００４０】
＜第１実施形態＞
［電子機器の全体構成及び各部の構成］
図１は、本技術の第１実施形態に係る電子機器１０の内部構成を示すブロック図である。本技術に係る電子機器１０は、デジタルカメラ、テレビジョン受信装置、ＰＣ（Personal Computer）など各種の電子機器１０である。
【００４１】
図１に示すように、電子機器１０は、制御部１と、メインメモリ２と、ＤＭＡＣ３（Direct Memory Access Controller）と、ストレージデバイス４と、スワップデバイス５とを備える。これらの各部は、バス６を介して相互に接続されている。
【００４２】
制御部１は、例えば、ＣＰＵ（Central Processing Unit）により構成される。制御部１は、ストレージデバイス４に記憶された各種のプログラムに基づき、電子機器１０の全体を統括的に制御する。
【００４３】
メインメモリ２（揮発性メモリ）は、例えば、ＲＡＭ（Random Access Memory）により構成される。メインメモリ２は、制御部１の作業用の領域として用いられる揮発性のメモリである。
【００４４】
ストレージデバイス４は、ＨＤＤ（Hard Disc Drive）、ＳＤＤ（Solid State Drive）、あるいは、ＮＡＮＤフラッシュメモリなどの半導体メモリ、又はこれらの組み合わせにより構成される。ストレージデバイス４には、ＯＳ（Operating System）や、アプリケーションプログラムなどが固定的に記憶されている。また、ストレージデバイス４には、以降で説明する処理によって作成されるスナップショットイメージなども記憶される（スナップショットイメージの作成後）。
【００４５】
本技術に係るスナップショットイメージは、起動に本来必要のないメモリデータが排除されたメモリイメージである。このスナップショットイメージは、ページ毎に管理される。ページとは、メインメモリ２を管理する際の最小単位であり、ページのサイズは、例えば、４KBである。
【００４６】
スワップデバイス５は、例えば、ＨＤＤ（Hard Disc Drive）、ＳＤＤ（Solid State Drive）、あるいは、ＮＡＮＤフラッシュメモリなどの半導体メモリ、又はこれらの組み合わせにより構成される。スワップデバイス５は、データを固定的に記憶しておくことができる形態であれば、どのような形態であってもよい。このスワップデバイス５には、電子機器１０の起動完了に必要のないデータが、ページ毎に記憶される。
【００４７】
図に示す例では、ストレージデバイス４と、スワップデバイス５が別体である場合の一例が示されている。しかし、スワップデバイス５は、ストレージデバイス４と一体的に形成されていてもよい。すなわち、ストレージデバイス４がスワップデバイス５としての機能を有していてよい。
【００４８】
ＤＭＡＣ３は、メインメモリ２と、ストレージデバイス４及びスワップデバイス５との間において、ＤＭＡによるデータの授受を制御する。ＤＭＡＣ３により、制御部１の負荷が軽減される。
【００４９】
［動作説明］
次に、本技術に係る電子機器１０（制御部１）の処理について説明する。本技術に係る電子機器１０は、電子機器１０の高速起動に用いられるスナップショットイメージを作成する処理を実行する。
【００５０】
典型的には、制御部１は、起動開始からスナップショットイメージの作成時点（起動開始後の特定の時点）までの間にメインメモリ２に展開されたデータを、スナップショットイメージの作成に用いるデータと、スワップデバイス５に記憶しておくデータとに割り振る。そして、電子機器１０は、スナップショットイメージの作成に用いられるデータに基づいて、スナップショットイメージを作成する。
【００５１】
制御部１の処理は、大別して、１．準備モード、２．プロファイリングモード、３．スナップショットイメージ作成モードの３つの処理に分類される。以降、これらについて、詳細に説明する。
【００５２】
図２は、スナップショットイメージが作成されるときの処理を示すフローチャートである。
【００５３】
図２に示すように、まず、制御部１は、起動開始時において、現在のモードが準備モードであるかどうか判定する（ステップ１０１）。現在のモードが準備モードであると判定された場合（ステップ１０１のＹＥＳ）、制御部１は、準備モードを実行する（ステップ１０２）。準備モードが実行された後、制御部１は、再起動を実行し（ステップ１０３）、再びステップ１０１へ戻る。
【００５４】
この準備モードは、どのデータが起動に本来必要なデータであるかをプロファイリングにより判断するプロファイリングモードの準備段階としてのモードである。
【００５５】
起動開始時において、現在のモードが準備モードではないと判断された場合（ステップ１０１のＮＯ）、制御部１は、現在のモードがプロファインリングモードであるかどうかを判定する（ステップ１０４）。現在のモードがプロファイリングモードであると判定された場合（ステップ１０４のＹＥＳ）、制御部１は、プロファイリングモードを実行する（ステップ１０５）。プロファイリングモードが実行された後、制御部１は、再起動を実行し（ステップ１０６）、再びステップ１０１へ戻る。
【００５６】
このプロファイリングモードは、起動開始からスナップショットイメージ作成時点までの間にメインメモリ２に展開されたデータのうち、どのデータが起動に本来必要なデータであるかをプロファイリングにより判断するモードである。
【００５７】
起動開始時において、現在のモードが準備モードではなく、かつ、プロファイリングモードでもないと判定された場合（ステップ１０４のＮＯ）、制御部１は、現在のモードがスナップショットイメージ作成モードであるかどうかを判定する（ステップ１０７）。現在のモードがスナップショットイメージ作成モードであると判定された場合（ステップ１０７のＹＥＳ）、制御部１は、スナップショットイメージ作成モードを実行する（ステップ１０８）。スナップショットイメージ作成モードが実行された後、制御部１は、再起動を実行し（ステップ１０９）、再びステップ１０１へ戻る。
【００５８】
スナップショットイメージ作成モードは、プロファイリングによりスナップショットイメージの作成に用いられると判断されたデータをメインメモリ２に読み込み、メインメモリ２内のデータに基づいて、スナップショットイメージを作成するモードである。
【００５９】
《準備モード》
次に、準備モードについて詳細に説明する。図３は、準備モードでの処理を示すフローチャートである。図４は、準備モードでの処理を説明するための模式図である。
【００６０】
図３及び図４を参照して、準備モードでは、制御部１は、まず、通常での起動と同様にして電子機器１０の起動を開始する（ステップ２０１）。この場合、制御部１は、まず、ブートローダを実行して、ストレージデバイス４からＯＳ（カーネル）をページ単位でメインメモリ２に読み込む。その後、制御部１は、ＯＳを起動（初期化）する。
【００６１】
次に、制御部１は、ストレージデバイス４からアプリケーションプログラムをページ単位でメインメモリ２に読み込んで、アプリケーションを起動（初期化）する。その後、制御部１は、アプリケーションプログラムを実行する（ステップ２０２）。制御部１は、アプリケーションプログラムの実行に伴い、必要に応じてストレージデバイス４からデータ（ファイル）をページ単位でメインメモリ２へ読み込む。また、制御部１は、アプリケーションプログラムの実行に伴い、各種の計算を実行し、計算結果をページ単位でメインメモリ２に記憶しておく。
【００６２】
そして、制御部１は、スナップショットイメージ作成時点（起動開始後の特定の時点）まで、アプリケーションプログラムの実行を継続する。スナップショットイメージの作成時点は、起動の高速化の観点から任意に設定可能である。例えば、スナップショットイメージの作成時点は、ＯＳの起動後に実行される１つ目のアプリケーションの実行が完了した時点であってもよいし、２つ目のアプリケーションの実行が完了した時点であってもよい。
【００６３】
図４には、起動開始から、スナップショットイメージの作成時点までの間にメインメモリ２に展開されたデータが示されている。図４に示すように、スナップショットイメージの作成時点において、メインメモリ２には、ストレージデバイス４から読み込まれたＯＳ（カーネル）、アプリケーションプログラムなどのデータが展開されている。さらに、メインメモリ２には、アプリケーションプログラムで使用されているデータや、ページキャッシュなどのデータが展開されている。
【００６４】
アプリケーションプログラムで使用されているデータは、アプリケーションプログラムにより算出されたデータを含む。ページキャッシュ（バッファ）は、後で使用される可能性があるとしてメインメモリ２に残されているデータである。
【００６５】
スナップショットイメージ作成時点に達すると、制御部１は、スワップデバイス５を有効にして、アプリケーションプログラムで使用されているデータ（匿名ページ）をスワップデバイス５にスワップアウトする（ステップ２０３）。その後、スワップデバイス５は、リードオンリーの状態に調整される。スワップアウトされるデータを圧縮することも可能である。この圧縮は、ハードウェアで実行されてもよいし、ソフトウェアで実行されてもよい。
【００６６】
また、スナップショットイメージ作成時点に達すると、制御部１は、メインメモリ２上に展開されているアプリケーションプログラム、ページキャッシュなどのページをメインメモリ２上から削除する（ステップ２０４）。
【００６７】
アプリケーションプログラムで使用されているデータがスワップアウトされ、かつ、アプリケーションプログラム、ページキャッシュが削除されることで、メインメモリ２上には、ＯＳ（カーネル）が残る。メインメモリ２上には、ファームフェアで使用しているデータなども残る場合がある。制御部１は、メインメモリ２に残されたデータに基づいて、ページ単位でメモリイメージを作成する（ステップ２０５）。すなわち、制御部１は、ＯＳ（及びファームウェアで使用しているデータ）を含むメモリイメージを作成する。
【００６８】
このメモリイメージを以降では、最小化イメージと呼ぶ。この最小化イメージは、最終的なスナップショットイメージを作成する前の段階のスナップショットイメージであり、スナップショットイメージを作成するために最低限必要とされるデータ（ＯＳ（カーネル））を含む最小化されたイメージである。
【００６９】
制御部１は、最小化イメージを作成すると、最小化イメージをストレージデバイス４に記憶する（ステップ２０６）。そして、制御部１は、再起動を実行する（ステップ１０３）。
【００７０】
ここで、比較例について説明する。一般的なスナップショットイメージの作成では、図４に示すようなメインメモリ２のメモリイメージに基づいて、スナップショットイメージが作成される。すなわち、スナップショットイメージの作成時点においてメインメモリ２上に展開されているデータの全てが使用されてスナップショットイメージが作成される。しかしながら、このような方法によって、スナップショットイメージが作成された場合、起動に本来必要のないデータがスナップショットイメージに含まれてしまう可能性がある。
【００７１】
近年においては、アプリケーションプログラムのサイズが大きくなる傾向にあり、これに伴い、スナップショットイメージも大きくなってしまう傾向にある。一方で、ストレージデバイス４からメインメモリ２への読み込み速度は向上していないため、スナップショットイメージをメインメモリ２に読み込むときの時間が長くなってしまう。これにより、起動完了までに時間が掛かる。
【００７２】
そこで、本技術では、起動開始から起動開始後の特定の時点までの間にメインメモリ２に展開されたデータを、スナップショットイメージの作成に用いるデータと、スワップデバイス５に記憶しておくデータとに割り振るといった処理が実行される。
【００７３】
すなわち、本技術では、図４に示すようなメモリイメージに含まれるデータのうち、どのデータが起動に本来必要なデータであるかが判断され、このデータがスナップショットイメージの作成に用いられる。一方で、起動に本来必要とされないデータは、スワップデバイス５に記憶される。
【００７４】
ここで、上述のように、準備モードでは、アプリケーションプログラムで使用されているデータがスワップデバイス５にスワップアウトされ、このデータがスワップデバイス５に記憶される。
【００７５】
しかしながら、これは、アプリケーションプログラムで使用されているデータの全てが起動に本来必要でないデータであるということを意味するものではない。つまり、これは、どのデータが起動に本来必要なデータであるかが判断される前の段階において、起動に本来必要とされるデータと、起動に本来必要ではないデータとを含む形で、スワップデバイス５にデータが記憶されるということを意味している。
【００７６】
《プロファイリングモード》
次に、プロファイリングモードについて説明する。図５は、プロファイリングモードでの処理を示すフローチャートである。図６は、プロファイリングモードでの処理を説明するための模式図である。
【００７７】
このプロファリングモードにおいて、起動開始からスナップショットイメージ作成時点までの間にメインメモリ２に展開されたデータのうち、どのデータをスナップショットイメージの作成に用いるかが判断される。
【００７８】
プロファイリングモードは、準備モードが完了した後における再起動の後に実行される（図２参照）。図５及び図６を参照して、プロファイリングモードでは、制御部１は、まず、準備モードで作成された最小化イメージを使用して、起動を開始する（ステップ３０１）。この場合、制御部１は、まず、ブートローダを実行して、最小化イメージに含まれるデータをストレージデバイス４からページ単位でメインメモリ２に読み込む。
【００７９】
次に、制御部１は、ＯＳによる先読み機能を停止する（ステップ３０２）。ここで、ＯＳの先読み機能が実行された場合、起動に本来必要のないデータが先読み機能によりメインメモリ２に読み込まれ、これがプロファイリングに反映されてしまう可能性がある。この場合、起動に本来必要のないデータがスナップショットイメージに含まれてしまう可能性がある。そこで、本技術では、ＯＳの先読み機能を停止することとしている。これにより、起動に本来必要のないデータがＯＳの先読み機能によりスナップショットイメージに含まれてしまうことを防止することができる。
【００８０】
次に、制御部１は、どのデータをスナップショットイメージの作成に用いるかについてのプロファイリングを開始する（ステップ３０３）。このプロファイリングは、ストレージデバイス４又はスワップデバイス５からメインメモリ２へデータを読み込むときに発生するページフォールトの履歴を取ることで実行される。
【００８１】
次に、制御部１は、ストレージデバイス４からアプリケーションプログラムをページ単位でメインメモリ２に読み込んで、アプリケーションを起動（初期化）する。その後、制御部１は、アプリケーションプログラムを実行する（ステップ３０４）。制御部１は、アプリケーションプログラムの実行に伴い、必要に応じてストレージデバイス４からデータ（ファイル）をページ単位でメインメモリ２へ読み込む。また、制御部１は、必要に応じてスワップデバイス５から、アプリケーションプログラムで使用されていたデータ（匿名ページ）をメインメモリ２に読み込む。
【００８２】
ストレージデバイス４からアプリケーションプログラム、ファイルが読み込まれるときにページフォールトが発生している。また、スワップデバイス５からアプリケーションプログラムで使用されていたデータ（匿名ページ）が読み込まれるときに、ページフォールトが発生している。制御部１は、このページフォールトの履歴についてのイメージリストを作成する。
【００８３】
そして、制御部１は、起動完了時点まで、アプリケーションプログラムの実行を継続する。起動完了時点に達すると、制御部１は、プロファイリングを停止する（ステップ３０５）。すなわち、制御部１は、ページフォールトの履歴の記録を停止する。
【００８４】
その後、制御部１は、ページフォールトの履歴をイメージリストとしてストレージデバイス４に保存する（ステップ３０６）。
【００８５】
このようにして、どのデータをスナップショットイメージの作成に用いるかが制御部１により自動的に判断される。つまり、制御部１は、起動完了時点に達するまでの間にストレージデバイス４又はスワップデバイス５から読み込まれるデータが起動に本来必要なデータであると自動的に判断している。
【００８６】
図７及び図８は、ページフォールトの履歴を取ることで生成されたイメージリストの一例を示す図である。図７は、アプリケーションプログラム、ファイルがストレージデバイス４から読み込まれるときに発生したページフォールトの履歴を取ることで生成されたイメージリストである。図８は、アプリケーションプログラムで使用されていたデータがスワップデバイス５から読み込まれるときに発生したページフォールトの履歴を取ることで生成されたイメージリストである。図７に示すイメージリストを以降では、プログラム用イメージリストと呼び、図８に示すイメージリストを以降では、データ用イメージリストと呼ぶ。
【００８７】
図７に示すように、プログラム用イメージリストでは、ファイル名と、そのファイルがファイルの先頭からどの程度ずれているかを示すオフセット（単位は、例えば、バイト）とが関連付けられている。また、プログラム用イメージリストでは、アプリケーションプログラムがメインメモリ２に読み込まれたときの時間情報（単位は、例えば、nsec）が関連付けられている。
【００８８】
なお、この時間情報は、必ずしも必要な情報ではなく、この情報は、後述の第３実施形態が実行されるときに用いられる情報である。典型的には、プログラム用イメージリストは、そのファイルがストレージデバイス４のどこに保存されているかを制御部１が判断することができる情報を含んでいればよい。
【００８９】
図８に示すように、データ用イメージリストでは、プロセス情報の仮想アドレスと、そのプロセスで使用されているデータの仮想アドレスとが関連づけられている。また、データ用イメージリストでは、アプリケーションプログラムで使用されているデータがメインメモリ２に読み込まれたときの時間情報（単位は、例えば、nsec）が関連付けられている。
【００９０】
この時間情報は、必ずしも必要な情報ではなく、この情報は、後述の第３実施形態が実行されるときに用いられる情報である。典型的には、データ用イメージリストは、そのデータがスワップデバイス５のどこに保存されているかを制御部１が判断することができる情報を含んでいればよい。
【００９１】
《スナップショットイメージ作成モード》
次に、スナップショットイメージ作成モードについて説明する。図９は、スナップショットイメージ作成モードでの処理を示すフローチャートである。図１０は、スナップショットイメージ作成モードでの処理を説明するための模式図である。
【００９２】
スナップショットイメージ作成モードは、プロファイリングモードが完了した後における再起動の後に実行される（図２参照）。図９及び図１０を参照して、スナップショットイメージ作成モードでは、制御部１は、まず、最小化イメージを使用して、起動を開始する（ステップ４０１）。この場合、制御部１は、まず、ブートローダを実行して、最小化イメージに含まれるデータをストレージデバイス４からページ単位でメインメモリ２に読み込む。
【００９３】
次に、制御部１は、ＯＳによる先読み機能を停止する（ステップ４０２）。これにより、起動に本来必要のないデータがＯＳの先読み機能によりスナップショットイメージに含まれてしまうことを防止することができる。
【００９４】
次に、制御部１は、イメージリストに基づいて、イメージリストに含まれるデータをメインメモリ２に読み込む（ステップ４０３）。この場合、制御部１は、イメージリスト（図７参照）に基づいて、ストレージデバイス４からアプリケーションプログラム、ファイルをメインメモリ２にページ単位で読み込む。また、制御部１は、イメージリスト（図８参照）に基づいて、アプリケーションプログラムで使用されていたデータ（匿名ページ）をページ単位で読み込む（スワップイン）。
【００９５】
イメージリストに含まれる全てのデータがメインメモリ２に読み込まれると、制御部１は、メインメモリ２に読み込まれたデータに基づいて、スナップショットイメージを作成する（ステップ４０４）。その後、制御部１は、再起動を実行する。
【００９６】
生成されたスナップショットには、起動に本来必要とされるデータが含まれている。一方、起動に本来必要とされないデータは、スワップデバイス５に保存された状態とされている。
【００９７】
［作用等］
以降では、比較例を参照しつつ、本技術の作用について説明する。
図１１は、比較例に係るスナップショットイメージを使用して起動を行うときの様子を示す図である。図１２は、本技術に係るスナップショットイメージを使用して起動を行うときの様子を示す図である。
【００９８】
比較例に係るスナップショットイメージは、図４に示すような、スナップショットイメージの作成時においてメインメモリ２に展開されている全てのデータを使用して作成されたイメージである。
【００９９】
比較例では、まず、起動開始時にブートローダが実行され、スナップショットイメージに含まれるデータ（ＯＳ（カーネル）、アプリケーションプログラム、ファイル、匿名ページ）がストレージデバイス４からメインメモリ２にページ単位で読み込まれる。その後、システムが再開され、起動が完了する。比較例に係るスナップショットイメージは、起動に本来必要のないデータを含んでしまっているため、起動に時間が掛かってしまっている。
【０１００】
次に、図１２を参照して本技術に係るスナップショットイメージを使用して起動を行うときの処理について説明する。まず、制御部１は、起動開始時にブートローダを実行し、スナップショットイメージに含まれるデータ（ＯＳ（カーネル）、アプリケーションプログラム、ファイル、匿名ページ）をストレージデバイス４からメインメモリ２にページ単位で読み込む。その後、システムが再開され、起動が完了する。本技術に係るスナップショットイメージは、起動に本来必要のないデータを含んでいないため、起動に係る時間を短縮することができる。さらに、起動に本来必要のないデータは、スワップデバイス５に保存されている。
【０１０１】
起動に本来必要のないデータとしてスワップデバイス５に保存されているデータは、そのデータが必要となった時点で、スワップデバイス５からメインメモリ２に読み込まれる。つまり、起動に本来必要のないデータとしてスワップデバイス５に保存されているデータは、アプリケーションプログラム実行中であっても、そのデータが必要とされるまでは、メインメモリ２上には、読み込まれない。これは、つまり、アプリケーションプログラムが実行されているときのメインメモリ２の使用量を低減させることができ、メインメモリ２の空き容量を増やすことができることを示している。
【０１０２】
ここで、図４を参照して、起動開始からスナップショットイメージ作成時点までの間にメインメモリ２に展開されたデータは、ＯＳ（カーネル）、アプリケーションプログラム、アプリケーションプログラムで使用されているデータ、及びページキャッシュを含む。また、上述のようにアプリケーションプログラムで使用されているデータは、アプリケーションプログラムで算出されたデータを含む。
【０１０３】
例えば、スナップショットイメージ作成時点に至るまでに、ルックアップテーブルのようなサイズの大きなデータがアプリケーションプログラムにより算出される場合がある。例えば、何度も繰り返し同じような計算が行なわれるような場合、処理速度を向上させるために、自明な計算がルックアップテーブルとして算出される場合がある。このルックアップテーブルは、アプリケーションプログラムで使用されているデータとして、メインメモリ２上に保存される。
【０１０４】
このルックアップテーブルのようにサイズの大きいデータがスナップショットイメージに含まれてしまうと、起動が遅くなってしまう。比較例においては、スナップショットイメージ作成時にメモリに展開されている全てのデータがスナップショットイメージに含められる。従って、比較例において、ルックアップテーブルのようなサイズの大きいデータがスナップショットイメージに含まれてしまうことを回避するためには、ルックアップテーブルが算出される前の時点をスナップショットイメージ作成時点とする必要がある。
【０１０５】
一方、本技術においては、ルックアップテーブルのようなサイズの大きなデータが算出された後の時点をスナップショットイメージの作成時点としても、プロファイリングによりそのデータが起動に本来必要ないデータであると判断される場合がある。この場合、スナップショットイメージに、ルックアップテーブルのようなサイズの大きいデータが含まれることはない。そして、本技術では、ルックアップテーブルのようなサイズの大きなデータは、スワップデバイス５に記憶されており、そのデータが必要となった時点でスワップデバイス５からメインメモリ２に読み込まれる。
【０１０６】
つまり、本技術は、比較例と比べて、スナップショットイメージの作成時点を遅くしつつ、スナップショットイメージをコンパクト化することができる。このことからも、本技術が起動の時間短縮において有利であることが理解される。
【０１０７】
＜第２実施形態＞
次に、本技術の第２実施形態について説明する。第２実施形態以降では、上述の第１実施形態と異なる点を中心に説明する。
【０１０８】
第２実施形態では、上述のプロファイリングによってスナップショットブートの作成に用いられると判断されたデータについて、スナップショットイメージの作成に用いるべきデータの数を判断する処理が実行される。例えば、上述の図７及び図８に示めすイメージリストに含まれる、合計で５つのデータについて、この５つのデータのうち何個のデータをスナップショットイメージに含めるかを判断する処理が実行される。
【０１０９】
典型的には、制御部１は、イメージリストの情報、データをストレージデバイス４からメインメモリ２へ読み込むときの速度、及びページフォールトが発生したときにデータをスワップデバイス５からメインメモリ２に読み込むときに掛かる平均処理時間に基づいて、スナップショットイメージの作成に用いるべきデータの数を判断する。この処理は、プロファイリングモードにおいてイメージリストが作成された後に実行される。
【０１１０】
ここで、最小化イメージのサイズをＭ（MB）、データ（ページ）をストレージデバイス４からメインメモリ２に読み込むときの速度をｘ（MB/sec）、スナップショットイメージに含めるべきデータの数をＥ（未知数）とする。また、１つのページのサイズをＰＡＧＥＳＩＺＥ（典型的には、４KB）、イメージリストに含まれるエントリ数の合計をＥｍａｘ（図７及び図８に示す例では、５つ）とする。また、ページフォールトが発生したときに、データ（ページ）をスワップデバイス５（ストレージデバイス４がスワップデバイス５としての機能を有する場合には、ストレージデバイス４）からメインメモリ２に読み込むときに掛かる平均処理時間をＴｆ（sec）とする。また、スナップショットイメージを使用して復帰したあとのデバイスアクセス時間をＴｄ（sec）とする。この場合、制御部１は、以下の式を使用して、スナップショットイメージの作成に用いるべきデータの数を判断する。
【０１１１】
【数１】
2014178913.tif 000003
【０１１２】
図１３は、数式の左辺及び右辺の意味を説明するための図である。図１３の上側を参照して、数式の左辺におけるＭ／ｘは、最小化イメージをストレージデバイス４からメインメモリ２に読み込むときに掛かる時間を表している。また、Ｅ×ＰＡＧＥＳＩＺＥ／ｘは、スナップショットイメージに含まれるデータの数を仮にＥ（未知数）としたときに、これらのデータをストレージデバイス４からメインメモリ２に読み込むときに掛かる時間を表している。
【０１１３】
また、（Ｅｍａｘ−Ｅ）は、イメージリストには含まれているものの、スナップショットイメージには含まれないデータの数を表している。つまり、（Ｅｍａｘ−Ｅ）は、スワップデバイス５から読み込まれるデータの数を表している。そして、（Ｅｍａｘ−Ｅ）×Ｔｆは、（Ｅｍａｘ−Ｅ）個のデータをスワップデバイス５から読み込むときに掛かる時間を表している。
【０１１４】
つまり、数式の左辺は、スナップショットイメージに含まれるデータの数を仮にＥ（未知数）とした場合における、起動に掛かる時間を表している。
【０１１５】
図１３の下側を参照して、数式の右辺において、Ｍ／ｘは、最小化イメージをストレージデバイス４からメインメモリ２に読み込むときに掛かる時間を表している。また、Ｅｍａｘ×ＰＡＧＥＳＩＺＥ／ｘは、イメージリストに含まれる全てのデータがスナップショットイメージに含まれる場合において、これらのデータがストレージデバイス４からメインメモリ２に読み込まれときに掛かる時間を表している。また、Ｔｄは、スナップショットイメージを使用して復帰したあとのデバイスアクセス時間を表している。
【０１１６】
つまり、数式の右辺は、イメージリストに含まれる全てのデータがスナップショットイメージに含まれる場合における、起動に掛かる時間を表している。
【０１１７】
なお、数式の左辺には、スナップショットイメージを使用して復帰したあとのデバイスアクセス時間Ｔｄが表されていない。これは、（Ｅｍａｘ−Ｅ）個のデータがスワップデバイス５から読み込まれているときに、同時平行でＴｄが実行されるためである。
【０１１８】
スナップショットイメージに含まれるデータの数をＥとした場合における起動時間（左辺）が、イメージリストに含まれる全てのデータがスナップショットイメージに含まれる場合における起動時間（右辺）よりも小さくなれば、起動時間の短縮となる。
【０１１９】
例えば、制御部１は、イメージリストが作成された後、数式に基づいてＥを算出する。そして、制御部１は、スナップショットイメージを作成するときに、イメージリストに含まれる全てのデータのうち、Ｅ個分のデータをメインメモリ２に読み込んで、スナップショットイメージを作成する。これにより、起動時間をさらに短縮することができるスナップショットイメージが作成される。なお、典型的には、プロファイルされた時刻が早いほうから順番にＥ個分のデータがスナップショットイメージの作成に用いられる。
【０１２０】
＜第３実施形態＞
次に、本技術の第３実施形態について説明する。
第３実施形態では、上述のプロファイリングによりスナップショットイメージの作成に用いられると判断されたデータ（イメージリストに含まれるデータ）のうち、どのデータをスナップショットイメージの作成に用いるかが更に判断される。この点で、上述の各実施形態とは異なっている。
【０１２１】
第３実施形態では、制御部１が２つのＣＰＵを有している場合が想定される。２つのＣＰＵのうち、一方のＣＰＵは、スナップショットイメージを使用してシステム（ＯＳ）を起動させる処理を実行する。他方のＣＰＵは、一方のＣＰＵがスナップショットイメージを使用してシステムを起動させているときに、別のシステムを開始する処理を実行する。
【０１２２】
このような場合において、スナップショットイメージのサイズが大きい場合を想定する。この場合、一方のＣＰＵがスナップショットイメージに含まれるデータをメインメモリ２に読み込む処理を開始した場合に、バス６の帯域を圧迫してしまい、他方のＣＰＵが別のシステムを素早く開始することができない。この場合、システムの全体的な起動開始時間が遅くなってしまう。
【０１２３】
そこで、第３実施形態では、イメージリストに含まれるデータのうち、どのデータをスナップショットイメージの作成に用いるかを判断することによって、スナップショットイメージのサイズを小さくする処理が実行される。このようにスナップショットイメージのサイズを小さくすることで、スナップショットイメージのメインメモリ２への読み込みによるバス６の負荷が低減される。
【０１２４】
図１４を参照しつつ、第３実施形態の具体的な処理について説明する。図１４は、第３実施形態に係る電子機器１０の処理を説明するための図である。
【０１２５】
プロファイリングによりイメージリスト（図７及び図８参照）が作成された後、制御部１は、イメージリストの時刻情報に基づいて、プロファイリングされた時刻が最も遅いデータの時刻情報Ｔｍａｘを取得する。
【０１２６】
次に、制御部１は、区間時刻Ｔによって、Ｔｍａｘをｎ個の時間区域Ｔ１〜Ｔｎに分割する。区間時刻Ｔは、任意に設定可能である。そして、制御部１は、イメージリストの時刻情報に基づいて、各時間区域Ｔ１〜Ｔｎに含まれるデータの度数分布を作成する。
【０１２７】
次に、制御部１は、各時間区域Ｔ１〜Ｔｎに含まれるデータの数（度数）が、所定の閾値Ｔｈを超えるかどうかを判定する。この所定の閾値Ｔｈは、例えば、各時間区域Ｔ１〜Ｔｎに含まれるデータの数の平均値であってもよい。あるいは、所定の閾値Ｔｈは、バス６の負荷を低減するという観点に基づいて予め設定されていてもよい。
【０１２８】
次に、制御部１は、データの数が所定の閾値Ｔｈを超える時間区域について、所定の閾値を超えた部分（図１４の斜線部分）に対応するデータを、スナップショットイメージの作成に用いるデータであると判断する。そして、制御部１は、スナップショットイメージを作成するときに、イメージリストに含まれる全てのデータのうち、所定の閾値を超えた部分に対応するデータをメインメモリ２に読み込んで、スナップショットイメージを作成する。
【０１２９】
すなわち、制御部１は、イメージリストの時刻情報に基づいて、データが読み込まれる頻度が高い時間区域Ｔ１〜Ｔｎを判断し、頻度が高い時間区域内にメインメモリ２に読み込まれたデータの一部を用いてスナップショットイメージを作成する。
【０１３０】
このような処理により作成されたスナップショットイメージが用いられて起動が実行される場合、スナップショットイメージに含まれるデータがメインメモリ２に読み込まれた後に、ページフォールトが発生する。しかしながら、ページフォールトが発生する頻度が高い時刻のデータは、スナップショットイメージに含められているので、ページフォールトの頻度が一定の値を超えることはない。
【０１３１】
つまり、第３実施形態では、システム（ＯＳ）を起動させる一方のＣＰＵがバス６にアクセスしない期間に、他方のＣＰＵがバス６にアクセスすることが可能となり、従って、システム全体の起動が高速化する。
【０１３２】
なお、第２実施形態で説明した技術と、第３実施形態で説明した技術とを組み合わせることも可能である。
＜各種変形例＞
【０１３３】
本技術は、以下の構成をとることもできる。
（１）  揮発性メモリと、
スワップデバイスと、
起動開始から起動開始後の特定の時点までの間に前記揮発性メモリに展開されたデータを、スナップショットイメージの作成に用いるデータと、前記スワップデバイスに記憶しておくデータとに割り振る制御部と
を具備する電子機器。
（２）  上記（１）に記載の電子機器であって、
前記制御部は、起動開始から起動開始後の特定の時点までの間に前記揮発性メモリに展開されたデータのうち、どのデータを前記スナップショットイメージの作成に用いるかをプロファイリングにより判断するプロファイリングモードを実行する
電子機器。
（３）  上記（２）に記載の電子機器であって、
前記制御部は、前記プロファイリングモードにおいて、前記揮発性メモリへのデータの読み込みに関するプロファイリングにより、どのデータを前記スナップショットイメージの作成に用いるかを判断する
電子機器。
（４）  上記（３）に記載の電子機器であって、
前記制御部は、前記プロファイリングモードにおいて、ＯＳ（Operation System）の先読み機能を停止する
電子機器。
（５）  上記（３）又は（４）に記載の電子機器であって、
前記制御部は、前記プロファイリングにより、どのデータを前記スナップショットイメージの作成に用いるかに関するリストを作成する
電子機器。
（６）  上記（２）〜（５）のうちいずれか１つに記載の電子機器であって、
前記制御部は、前記プロファイリングモードを実行した後、前記プロファイリングにより前記スナップショットイメージの作成に用いられると判断されたデータを、前記揮発性メモリに読み込み、読み込まれた前記揮発性メモリ内のデータに基づいて、前記スナップショットイメージを作成するスナップショットイメージ作成モードを実行する
電子機器。
（７）  上記（６）に記載の電子機器であって、
前記制御部は、前記スナップショットイメージ作成モードにおいて、ＯＳ（Operation System）の先読み機能を停止する
電子機器。
（８）  上記（２）〜（７）のうちいずれか１つに記載の電子機器であって、
前記制御部は、前記プロファイリングモードに先立って、前記起動開始から前記起動開始後の特定の時点まで、通常起動により前記データをメモリに展開させる準備モードを実行する
電子機器。
（９）上記（８）に記載の電子機器であって、
前記制御部は、前記準備モードにおいて、前記起動開始から前記起動開始後の特定の時点までの間に前記揮発性メモリに展開されたデータのうち、アプリケーションプログラムで使用されているデータを前記スワップデバイスにスワップアウトする
電子機器。
（１０）上記（９）に記載の電子機器であって、
前記スワップデバイスは、前記データがスワップアウトされた後、リードオンリーの状態とされる
電子機器。
（１１）  上記（９）又は（１０）に記載の電子機器であって、
前記制御部は、前記準備モードにおいて、前記起動開始から前記起動開始後の特定の時点までの間に前記揮発性メモリに展開されたデータのうち、アプリケーションプログラム及びページキャッシュを削除する
電子機器。
（１２）  上記（１１）に記載の電子機器であって、
前記制御部は、前記準備モードにおいて、アプリケーションプログラムで使用されているデータがスワップアウトされ、かつ、アプリケーションプログラム及びページキャッシュが削除された後の前記揮発性メモリ内のデータに基づいて、最終的な前記スナップショットイメージを作成する前の段階のスナップショットイメージを作成する
電子機器。
（１３）  上記（２）〜（１２）のうちいずれか１つに記載の電子機器であって、
前記制御部は、前記プロファイリングにより前記スナップショットイメージの作成に用いられると判断されたデータについて、前記スナップショットイメージの作成に用いるべきデータの数を判断する
電子機器。
（１４）  上記（１３）に記載の電子機器であって、
前記制御部は、データを前記揮発性メモリへ読み込むときの速度及びページフォールトが発生したときにデータを前記揮発性メモリに読み込むときに掛かる処理時間に基づいて、前記スナップショットイメージの作成に用いるべきデータの数を判断する
電子機器。
（１５）  上記（２）〜（１４）のうちいずれか１つに記載の電子機器であって、
前記制御部は、前記プロファイリングにより前記スナップショットイメージの作成に用いられると判断されたデータのうち、どのデータを前記スナップショットイメージの作成に用いるかを更に判断する
電子機器。
（１６）  上記（１５）に記載の電子機器であって、
前記制御部は、データと、前記データが前記揮発性メモリに読み込まれた時刻を示す時刻情報とを前記プロファイリングモードにおいて関連付け、前記時刻情報に基づいて、データが読み込まれる頻度が高い時間区域を判断し、頻度が高い前記時間区域内に前記揮発性メモリに読み込まれたデータを用いて前記スナップショットイメージを作成する
電子機器。
（１７）  起動開始から起動開始後の特定の時点までの間に揮発性メモリに展開されたデータを、スナップショットイメージの作成に用いるデータと、スワップデバイスに記憶しておくデータとに割り振り、
前記スナップショットイメージの作成に用いるデータに基づいて、前記スナップショットイメージを作成する
スナップショットイメージの作成方法。
（１８）  電子機器に、
起動開始から起動開始後の特定の時点までの間に揮発性メモリに展開されたデータを、スナップショットイメージの作成に用いるデータと、スワップデバイスに記憶しておくデータとに割り振るステップと、
前記スナップショットイメージの作成に用いるデータに基づいて、前記スナップショットイメージを作成するステップと
を実行させるプログラム。
【符号の説明】
【０１３４】
１…制御部
２…メインメモリ
３…ＤＭＡＣ
４…ストレージデバイス
５…スワップデバイス
６…バス
１０…電子機器
【図１】
2014178913.tif 000004
【図２】
2014178913.tif 000005
【図３】
2014178913.tif 000006
【図４】
2014178913.tif 000007
【図５】
2014178913.tif 000008
【図６】
2014178913.tif 000009
【図７】
2014178913.tif 000010
【図８】
2014178913.tif 000011
【図９】
2014178913.tif 000012
【図１０】
2014178913.tif 000013
【図１１】
2014178913.tif 000014
【図１２】
2014178913.tif 000015
【図１３】
2014178913.tif 000016
【図１４】
2014178913.tif 000017