(57)【要約】【課題】ハイバネーション状態に遷移する際にメモリの適切な領域のデータをスワップ領域へ退避すること。【解決手段】非退避対象プロセス一覧作成部１１が、実行中のプロセス一覧と設定情報記憶部１１ｃに基づいて非退避対象プロセスリストを作成する。そして、退避対象メモリ一覧作成部１２が、非退避対象プロセスリストに基づいて退避対象メモリブロックリストを作成する。そして、データ退避部１４が、退避対象メモリブロックリストに基づいて、データをスワップ領域に退避する。【選択図】図２
2017162283.tif 000002
【特許請求の範囲】
【請求項１】
ハイバネーション状態から復帰する際のユーザ処理再開時に動作している必要があるプロセスの一覧を作成する第１作成部と、
前記第１作成部により作成された一覧に含まれるプロセスが使用するメモリ領域とオペレーティングシステムのカーネルが使用するメモリ領域を使用されている全てのメモリ領域から除いた退避領域を識別する識別情報を作成する第２作成部と、
前記第２作成部により作成された識別情報で識別されるメモリ領域のデータをスワップ領域へ退避する退避部と
を有することを特徴とするスマート装置。
【請求項２】
前記第１作成部は、管理者権限で動作する特権プロセス及びサービス権限で動作するサービスプロセスを含めて前記プロセスの一覧を作成することを特徴とする請求項１に記載のスマート装置。
【請求項３】
前記第１作成部は、前記特権プロセス、前記サービスプロセス及び一般のアプリ権限で動作する一般プロセスの親子関係を解析し、一般プロセスの子供として動作する特権プロセス及びサービスプロセスを除いて前記プロセスの一覧を作成することを特徴とする請求項２に記載のスマート装置。
【請求項４】
前記第１作成部は、特定の名前のプロセスを追加又は除外して前記プロセスの一覧を作成することを特徴とする請求項２又は３に記載のスマート装置。
【請求項５】
前記第１作成部は、ハイバネーション状態に遷移する際に前記プロセスの一覧を作成することを特徴とする請求項１〜４のいずれか１つに記載のスマート装置。
【請求項６】
前記第１作成部は、プロセスが生成される際又はプロセスが終了する際に前記プロセスの一覧を作成することを特徴とする請求項１〜４のいずれか１つに記載のスマート装置。
【請求項７】
前記第２作成部は、前記プロセスの一覧が作成されると前記識別情報を作成することを特徴とする請求項６に記載のスマート装置。
【請求項８】
コンピュータが、
ハイバネーション状態から復帰する際のユーザ処理再開時に動作している必要があるプロセスの一覧を作成し、
作成した一覧に含まれるプロセスが使用するメモリ領域とオペレーティングシステムのカーネルが使用するメモリ領域を使用されている全てのメモリ領域から除いた退避領域を識別する識別情報を作成し、
作成した識別情報で識別されるメモリ領域のデータをスワップ領域へ退避する
処理を実行することを特徴とするスワップ方法。
【請求項９】
コンピュータに、
ハイバネーション状態から復帰する際のユーザ処理再開時に動作している必要があるプロセスの一覧を作成し、
作成した一覧に含まれるプロセスが使用するメモリ領域とオペレーティングシステムのカーネルが使用するメモリ領域を使用されている全てのメモリ領域から除いた退避領域を識別する識別情報を作成し、
作成した識別情報で識別されるメモリ領域のデータをスワップ領域へ退避する
処理を実行させることを特徴とするスワッププログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スマート装置、スワップ方法及びスワッププログラムに関する。
【背景技術】
【０００２】
スマートフォン、スマートウォッチ等のスマート装置は、動作している時間より処理がない待機状態の期間が長い。例えば、スマートウォッチは、スマートフォンからイベントを通知されたとき、ユーザにより設定変更が行われるとき等の限られたときだけ動作し、他の期間は待機状態にある。図１６は、スマートウォッチの動作を説明するための図である。
【０００３】
図１６に示すように、例えば、スマートウォッチ８は、ＢＬＥ（Bluetooth（登録商標、以下同様）  Low  Energy）待ち受けの待機状態で、スマートフォン９からのイベント着信があると、バイブ、ＬＥＤ等でユーザに通知する。そして、スマートウォッチ８は、ユーザの操作に基づき、メール本文の転送等の動作を行った後、待機状態に戻る。
【０００４】
このように、スマート装置では、待機状態の期間が長いため、待機状態の消費電力を減らすことによって、バッテリの動作時間を長くすることができる。そこで、待機状態のときにスマート装置の状態をハイバネーション状態に遷移させる技術がある。図１７は、ハイバネーションによる消費電力の削減を説明するための図である。
【０００５】
図１７に示すように、スマート装置が活動状態にあるときは、消費電力は高くなるが、活動状態にある期間は、待機状態にある期間と比較すると短い。そこで、待機状態の消費電力をハイバネーションにより下げることで、スマート装置の消費電力を削減することができる。図１７では、待機状態の電力（旧）が、ハイバネーションを行わない場合の待機状態の消費電力を示し、待機状態の電力（新）が、ハイバネーションを行った場合の待機状態の消費電力を示す。
【０００６】
ただし、スマート装置の状態をハイバネーション状態に遷移させるためには、ＣＰＵ（Central  Processing  Unit）及びメモリのデータを退避し、スマート装置が活動状態になるときに、退避したデータを復元できるようにする必要がある。図１８は、状態遷移時のデータの退避と復元を説明するための図である。
【０００７】
図１８に示すように、スマートウォッチ８は、活動状態からハイバネーション状態に遷移する前に、データの退避処理を行い、ハイバネーション状態から復帰する前に、データの復元処理を行う。したがって、ハイバネーションでは、データ退避時間及びデータ復元時間をできるだけ短縮することが重要となる。
【０００８】
このため、スマート装置にプレ活動状態を設けて、ハイバネーション状態から復帰する際の復元処理を短縮する技術がある。図１９は、プレ活動状態を説明するための図である。図１９に示すように、スマートウォッチ８は、ハイバネーション状態から活動状態に遷移する前に、プレ活動状態に遷移して、プレ活動状態から活動状態に遷移する。
【０００９】
また、ハイバネーション状態に遷移する際の退避処理では、スマートウォッチ８は、データを、ハイバネーション状態から復帰する際にユーザ処理再開に不要なデータと必要なデータに分けてストレージに保存する。すなわち、スマートウォッチ８は、ハイバネーション状態から復帰する際にユーザ処理再開に不要なデータをスワップ領域に保存し、ハイバネーション状態から復帰する際にユーザ処理再開に必要なデータをハイバネーション領域に保存する。
【００１０】
そして、スマートウォッチ８は、ハイバネーション状態から復帰する際の復元処理で、ハイバネーション領域のデータだけを復元し、プレ活動状態に遷移する。プレ活動状態では、スマートウォッチ８は、ユーザ処理を再開するとともに、スワップ領域のデータをスワップインにより復元し、スワップ領域のデータを全て復元すると、活動状態に遷移する。
【００１１】
なお、ハイバネーション起動処理を行う場合、メモリ管理領域のサイズをカーネル初期化のために必要なサイズにまで抑え、ハードウェア初期化と並行してハイバネーションイメージを読み込むことで、起動時間を短くする技術がある。
【００１２】
また、電源の再供給時に、ハイバネーション機能を利用してハードディスク装置に保存した初期起動データをメインメモリに読み戻すことにより初期状態で起動することで、電源再起動時の処理時間を短縮する技術がある。
【００１３】
また、ハイバネーション状態から復帰する際、主記憶メモリ上でオペレーティングシステム（ＯＳ：Operating  System）のみを実行状態へ復帰させた後に、ＯＳ上の各プロセスを実行状態に復帰させることで、ユーザの体感的な待ち時間を短縮する技術がある。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２０１２−２５２５７６号公報
【特許文献２】特開２００４−３８５４６号公報
【特許文献３】特開２０１０−２５０５１２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
図１９に示したプレ活動状態を設ける場合に、プレ活動状態でスワップ領域からデータを復元するメモリ領域すなわちハイバネーション状態に遷移する際にスワップ領域へデータを退避するメモリ領域を特定することができないという問題がある。図２０は、ハイバネーション状態に遷移する際にスワップ領域へデータを退避するメモリ領域を特定するときの問題を説明するための図である。
【００１６】
図２０に示すように、メモリ５には、カーネルが利用する領域５ａと、処理再開に必要なプロセスが利用する領域５ｂと、その他のプロセスが利用する領域５ｃと、空き領域とがある。なお、３つの領域が重なる領域は、プロセス間で共有されるメモリ領域である。その他のプロセスが利用する領域５ｃのうち、カーネルが利用する領域５ａ又は処理再開に必要なプロセスが利用する領域５ｂと重ならない網掛け領域が、処理再開に不要な領域である。すなわち、網掛け領域が、ハイバネーション状態に遷移する際にスワップ領域へデータを退避するメモリ領域である。
【００１７】
したがって、利用されているメモリ領域のうちカーネルが利用する領域５ａと処理再開に必要なプロセスが利用する領域５ｂを特定することができれば、処理再開に不要な領域を特定することができる。しかしながら、スマート装置８のようにアプリケーションを追加インストール可能な場合、処理再開に必要なプロセスを事前に特定することができないため、処理再開に必要なプロセスが利用する領域５ｂを特定することができない。
【００１８】
本発明は、１つの側面では、ハイバネーション状態に遷移する際にスワップ領域へデータを退避するメモリ領域を特定し、特定したメモリ領域のデータをスワップ領域へ退避することを目的とする。
【課題を解決するための手段】
【００１９】
１つの態様では、スマート装置は、第１作成部と、第２作成部と、退避部とを有する。前記第１作成部は、ハイバネーション状態から復帰する際のユーザ処理再開時に動作している必要があるプロセスの一覧を作成する。前記第２作成部は、前記第１作成部により作成された一覧に含まれるプロセスが使用するメモリ領域とオペレーティングシステムのカーネルが使用するメモリ領域を使用されている全てのメモリ領域から除いた退避領域を識別する識別情報を作成する。前記退避部は、前記第２作成部により作成された識別情報で識別されるメモリ領域のデータをスワップ領域へ退避する。
【発明の効果】
【００２０】
１つの側面では、ハイバネーション状態に遷移する際にメモリの適切な領域のデータをスワップ領域へ退避することができる。
【図面の簡単な説明】
【００２１】
【図１】図１は、実施例１に係るスマート装置の状態遷移を示す図である。
【図２】図２は、実施例１に係るスマート装置の機能構成を示す図である。
【図３】図３は、設定情報記憶部の一例を示す図である。
【図４】図４は、特権ユーザＩＤとサービスプロセスＩＤを用いた非退避対象プロセスの特定方法を説明するための図である。
【図５】図５は、非退避対象プロセス一覧作成部による処理のフローを示すフローチャートである。
【図６】図６は、非退避リスト作成処理のフローを示すフローチャートである。
【図７】図７は、退避対象メモリ一覧作成部による処理のフローを示すフローチャートである。
【図８】図８は、実施例２に係るスマート装置の機能構成を示す図である。
【図９】図９は、非退避対象プロセス一覧作成部による処理のフローを示すフローチャートである。
【図１０】図１０は、退避対象メモリ一覧作成部による処理のフローを示すフローチャートである。
【図１１】図１１は、実施例３に係るスマート装置の機能構成を示す図である。
【図１２】図１２は、退避対象メモリ一覧作成部による処理のフローを示すフローチャートである。
【図１３】図１３は、データ退避部による処理のフローを示すフローチャートである。
【図１４】図１４は、不揮発メモリの利用を説明するための図である。
【図１５】図１５は、実施例１〜３に係るスワッププログラムを実行するコンピュータのハードウェア構成を示す図である。
【図１６】図１６は、スマートウォッチの動作を説明するための図である。
【図１７】図１７は、ハイバネーションによる消費電力の削減を説明するための図である。
【図１８】図１８は、データの退避と復元を説明するための図である。
【図１９】図１９は、プレ活動状態を説明するための図である。
【図２０】図２０は、プレ活動状態でスワップ領域からデータを復元するメモリ領域を特定するときの問題を説明するための図である。
【発明を実施するための形態】
【００２２】
以下に、本願の開示するスマート装置、スワップ方法及びスワッププログラムの実施例を図面に基づいて詳細に説明する。なお、実施例は開示の技術を限定するものではない。
【実施例１】
【００２３】
まず、実施例１に係るスマート装置の状態遷移について説明する。図１は、実施例１に係るスマート装置の状態遷移を示す図である。図１に示すように、スマート装置は、活動状態においてスマート装置を眠らせるイベントが発生する（ｔ１）と、退避処理前半において、実行中のプロセスの中から、処理再開時に動作している必要があるものの一覧を作成する（ｔ２）。
【００２４】
そして、スマート装置は、作成した一覧にあるプロセスが利用しているメモリ領域のリストＬpを作成する（ｔ３）。また、スマート装置は、ＯＳのカーネルが利用しているメモリのリストＬkを作成する（ｔ４）。そして、スマート装置は、メモリの利用状況から利用されているメモリのリストＬallを作成し（ｔ５）、Ｌallから（Ｌp  ∪  Ｌk）を削除する（ｔ６）。ここで、（Ｌp  ∪  Ｌk）は、ＬpとＬkの和集合である。そして、スマート装置は、残ったメモリリスト上のメモリブロックをスワップアウトする（ｔ７）。
【００２５】
そして、退避処理後半で、スマート装置は、メモリ上の残りの利用領域をハイバネーション領域に退避し（ｔ８）、電源断を行う（ｔ９）。そして、スマート装置は、ハイバネーション状態に遷移する。そして、スマート装置を起こすイベントが発生する（ｔ１０）と、スマート装置は、電源をＯＮする（ｔ１１）。
【００２６】
そして、復元処理において、スマート装置は、ストレージのハイバネーション領域のデータをメモリに展開し（ｔ１２）、プレ活動状態に遷移する。そして、スマート装置は、ユーザ処理を再開し（ｔ１３）、ストレージのスワップ領域のデータをメモリに展開する（ｔ１４）。そして、スワップ領域のデータのメモリへの展開が完了すると、スマート装置は、活動状態に遷移する。
【００２７】
このように、実施例１に係るスマート装置は、退避処理前半で、Ｌallから（Ｌp  ∪  Ｌk）を削除し、残ったメモリリスト上のメモリブロックをスワップアウトすることによって、プレ活動状態で復元するデータをスワップ領域に作成することができる。
【００２８】
次に、実施例１に係るスマート装置の機能構成について説明する。図２は、実施例１に係るスマート装置の機能構成を示す図である。図２に示すように、スマート装置１は、メモリ管理部２と、プロセス管理部３と、端末状態制御部４と、スワップ部１０とを有する。
【００２９】
メモリ管理部２は、メモリ５をメモリブロック単位で管理するＯＳカーネルのモジュールである。メモリ管理部２は、スワップ部１０からの要求に基づいて、メモリ割り当て状況を知らせる。また、メモリ５が不足するとスワップ部１０に対してメモリ不足を通知する。
【００３０】
プロセス管理部３は、プロセスを管理するＯＳカーネルのモジュールである。プロセス管理部３は、スワップ部１０からの要求に基づいて、実行中のプロセス一覧を知らせる。実行中のプロセス一覧には、プロセスの親子関係に関する情報が含まれる。
【００３１】
端末状態制御部４は、スマート装置１の状態を管理する。スマート装置１の状態には、活動状態、ハイバネーション状態、プレ活動状態が含まれる。端末状態制御部４は、スマート装置１の状態が遷移すると状態遷移をスワップ部１０に通知する。
【００３２】
スワップ部１０は、メモリ５のデータをスワップアウトによりストレージ６に退避し、ストレージ６に退避されたデータをスワップインによりメモリ５に復元する。スワップ部１０は、非退避対象プロセス一覧作成部１１と、設定情報記憶部１１ｃと、退避対象メモリ一覧作成部１２と、退避対象選択部１３と、データ退避部１４とを有する。
【００３３】
非退避対象プロセス一覧作成部１１は、端末状態制御部４からハイバネーション状態への遷移を通知されると、ユーザ処理再開時に動作している必要があるプロセスのリストを非退避対象プロセスリストとして作成する。非退避対象プロセス一覧作成部１１は、プロセス管理部３から実行中のプロセス一覧を取得し、取得したプロセス一覧と設定情報記憶部１１ｃとに基づいて、非退避対象プロセスリストを作成する。なお、非退避対象プロセスリストは、プロセスＩＤの一覧である。
【００３４】
設定情報記憶部１１ｃは、非退避対象プロセスリストの作成に用いられる設定情報を記憶する。図３は、設定情報記憶部１１ｃの一例を示す図である。図３に示すように、設定情報記憶部１１ｃは、分類と内容を対応づけて記憶する。分類は、設定情報の種類を示す。分類には、特権ユーザＩＤ（Identifier）と、サービスプロセスＩＤと、追加プロセス名と、除外プロセス名とがある。内容は、分類に対応付けられるプロセスの情報である。
【００３５】
特権ユーザＩＤは、管理者権限で動作する特権プロセスの識別子である。図３では、「０」と「１００」が特権ユーザＩＤである。「０」は、管理者権限ユーザＩＤであり、例えば、ルートプロセスの識別子である。「１００」は、例えば、ＧＵＩ（Graphical  User  Interface）やデータベースを制御するＯＳモジュールのユーザＩＤである。
【００３６】
サービスプロセスＩＤは、システム管理等のサービス権限で動作するサービスプロセスの識別子である。図３では、「５２」がサービスプロセスＩＤである。「５２」は、例えば、ＯＳの動作に必要なミドルウェアのプロセスＩＤである。
【００３７】
追加プロセス名は、特権ユーザＩＤとサービスプロセスＩＤ以外の識別子のプロセスのうち、非退避対象プロセスリストに追加されるプロセスの名前である。図３では、「バッテリ残量監視」、「無線強度測定」及び「時計」が追加されるプロセスの名前である。
【００３８】
除外プロセス名は、識別子が特権ユーザＩＤ又はサービスプロセスＩＤに分類されるプロセスのうち、非退避対象プロセスリストから除外されるプロセスの名前である。図３では、「プリンタスプーラ」が除外されるプロセスの名前である。「プリンタスプーラ」は、ユーザ処理再開時に動作していなくてもよいプロセスのため、非退避対象プロセスリストから除外される。
【００３９】
図４は、特権ユーザＩＤとサービスプロセスＩＤを用いた非退避対象プロセスの特定方法を説明するための図である。図４において、白円は特権プロセスを表し、黒円はサービスプロセスを表し、網掛けの円はその他の一般アプリ権限で動作する一般プロセスである。
【００４０】
非退避対象プロセス一覧作成部１１は、プロセス管理部３から実行中のプロセス一覧を取得し、プロセスの親子関係を解析することによってツリーを作成する。図４（ａ）は、実行中の全プロセスにより作成されるツリーの一例を示す。
【００４１】
非退避対象プロセス一覧作成部１１は、図４（ｂ）に示すように、実行中の全プロセスにより作成されるツリーから一般プロセスを除外する。そして、非退避対象プロセス一覧作成部１１は、図４（ｃ）に示すように、除外された一般プロセスの子供も除外する。その理由は、ユーザ処理再開時に一般プロセスは動作している必要がないので、一般プロセスだけから生成されたプロセスは種類に関係なくユーザ処理再開時に動作している必要がないためである。
【００４２】
そして、非退避対象プロセス一覧作成部１１は、図４（ｄ）に示すように、残ったプロセスを非退避対象プロセスとする。
【００４３】
このように、非退避対象プロセス一覧作成部１１は、一般プロセスの子供も非退避対象プロセスから除外することによって、ユーザ処理再開時に動作している必要があるプロセスを適切に特定することができる。
【００４４】
退避対象メモリ一覧作成部１２は、非退避対象プロセスリストを用いて、利用されている全てのメモリ領域から、カーネルとユーザ処理再開時に動作している必要があるプロセスが利用中の領域を削除し、退避領域のメモリブロックのリストを作成する。ここで、退避領域とは、ハイバネーション状態に遷移する際にスワップ領域へデータが退避されるメモリ領域であり、ハイバネーション状態から復帰した後プレ活動状態でデータが復元されるメモリ領域である。退避対象メモリ一覧作成部１２は、作成したリストを退避対象メモリブロックリストとしてデータ退避部１４に渡す。なお、退避対象メモリブロックリストは、メモリブロックを識別する識別子の一覧である。
【００４５】
退避対象選択部１３は、メモリ管理部２からメモリ不足通知を受け取ると、ストレージ６へデータを退避するメモリブロックのリストを作成し、退避対象メモリブロックリストとしてデータ退避部１４に渡す。
【００４６】
データ退避部１４は、退避対象メモリブロックリストを受け取ると、退避対象のメモリブロックのデータをメモリ５からストレージ６に退避する。
【００４７】
次に、非退避対象プロセス一覧作成部１１による処理のフローについて説明する。図５は、非退避対象プロセス一覧作成部１１による処理のフローを示すフローチャートである。図５に示すように、非退避対象プロセス一覧作成部１１は、ハイバネーション状態への遷移イベントを待つ（ステップＳ１）。
【００４８】
そして、非退避対象プロセス一覧作成部１１は、ハイバネーション状態への遷移イベントを受信する（ステップＳ２）と、実行中のプロセス一覧をプロセス管理部３から取得する（ステップＳ３）。
【００４９】
そして、非退避対象プロセス一覧作成部１１は、非退避対象プロセスリストを作成する非退避リスト作成処理を行い（ステップＳ４）、退避対象メモリ一覧作成部１２に非退避対象プロセスリストを送信する（ステップＳ５）。
【００５０】
このように、非退避対象プロセス一覧作成部１１が非退避対象プロセスリストを作成すして退避対象メモリ一覧作成部１２に送信することによって、退避対象メモリ一覧作成部１２は退避対象メモリブロックリストを作成することができる。
【００５１】
図６は、非退避リスト作成処理のフローを示すフローチャートである。図６に示すように、非退避対象プロセス一覧作成部１１は、設定情報記憶部１１ｃを参照して特権プロセスのリストを作成する（ステップＳ１１）。
【００５２】
そして、非退避対象プロセス一覧作成部１１は、設定情報記憶部１１ｃを参照してサービスプロセスをリストに追加する（ステップＳ１２）。そして、非退避対象プロセス一覧作成部１１は、設定情報記憶部１１ｃを参照して追加プロセス名で指定されるプロセスをリストに追加する（ステップＳ１３）。
【００５３】
そして、非退避対象プロセス一覧作成部１１は、設定情報記憶部１１ｃを参照して除外プロセス名で指定されるプロセスをリストから削除する（ステップＳ１４）。そして、非退避対象プロセス一覧作成部１１は、実行中のプロセス一覧を用いてプロセスの親子関係を解析することによって、一般プロセスの子供の特権プロセス及びサービスプロセスをリストから削除する（ステップＳ１５）。
【００５４】
このように、非退避対象プロセス一覧作成部１１は、非退避対象プロセスリストを作成する際に、一般プロセスの子供の特権プロセス及びサービスプロセスをリストから除外する。したがって、非退避対象プロセス一覧作成部１１は、ユーザ処理再開時に動作している必要があるプロセスを適切に特定することができる。
【００５５】
次に、退避対象メモリ一覧作成部１２による処理のフローについて説明する。図７は、退避対象メモリ一覧作成部１２による処理のフローを示すフローチャートである。図７に示すように、退避対象メモリ一覧作成部１２は、非退避対象プロセスリストの着信を待つ（ステップＳ２１）。
【００５６】
そして、退避対象メモリ一覧作成部１２は、非退避対象プロセスリストを受信する（ステップＳ２２）と、非退避対象プロセスリストに含まれる全プロセスが利用するメモリブロックのリストをリスト1として作成する（ステップＳ２３）。そして、退避対象メモリ一覧作成部１２は、カーネルが利用するメモリブロックのリストをリスト2として作成し（ステップＳ２４）、現在利用中の全メモリブロックのリストをリスト3として作成する（ステップＳ２５）。
【００５７】
そして、退避対象メモリ一覧作成部１２は、リスト1とリスト2のＯＲ（論理和）をとってリスト4を作成し（ステップＳ２６）、リスト3からリスト4の要素を全て削除したリスト5を作成する（ステップＳ２７）。そして、退避対象メモリ一覧作成部１２は、退避対象メモリブロックリストとしてリスト5をデータ退避部１４に送信する（ステップＳ２８）。
【００５８】
このように、退避対象メモリ一覧作成部１２が退避対象メモリブロックリストを作成することによって、データ退避部１４はユーザ処理再開時に不要なデータをスワップ領域に退避することができる。
【００５９】
上述してきたように、実施例１では、非退避対象プロセス一覧作成部１１が、実行中のプロセス一覧と設定情報記憶部１１ｃに基づいて非退避対象プロセスリストを作成する。そして、退避対象メモリ一覧作成部１２が、非退避対象プロセスリストに基づいて退避対象メモリブロックリストを作成する。そして、データ退避部１４が、退避対象メモリブロックリストに基づいて、データをスワップ領域に退避する。
【００６０】
したがって、スマート装置１は、ハイバネーション状態に遷移する際にスワップ領域へデータを退避するメモリ領域を特定し、特定したメモリ領域のデータをスワップ領域に退避することができる。すなわち、スマート装置１は、ハイバネーション状態に遷移する際にメモリの適切な領域のデータをスワップ領域へ退避することができる。
【００６１】
また、実施例１では、非退避対象プロセス一覧作成部１１は、特権プロセス及びサービスプロセスを含めて非退避対象プロセスリストを作成する。したがって、スマート装置１は、ハイバネーション状態から復帰する際に動作している必要があるプロセスが利用するメモリ領域のデータがスワップ領域に退避されることを防ぎ、プレ活動状態においてユーザ処理を再開することができる。
【００６２】
また、実施例１では、非退避対象プロセス一覧作成部１１は、一般プロセスの子供として動作する特権プロセス及びサービスプロセスを除外して非退避対象プロセスリストを作成する。したがって、スマート装置１は、ユーザ処理再開時に動作している必要があるプロセスを正確に特定することができる。
【００６３】
また、実施例１では、非退避対象プロセス一覧作成部１１は、特定の名前のプロセスを追加又は除外して非退避対象プロセスリストを作成する。したがって、スマート装置１は、ユーザ処理再開時に動作している必要があるプロセスを適切に制御することができる。
【実施例２】
【００６４】
ところで、上記実施例１では、ハイバネーション状態に遷移する際に非退避対象プロセスリストを作成するスマート装置１について説明したが、スマート装置は非退避対象プロセスリストを常時更新することもできる。そこで、実施例２では、非退避対象プロセスリストを常時更新するスマート装置について説明する。
【００６５】
図８は、実施例２に係るスマート装置の機能構成を示す図である。なお、ここでは説明の便宜上、図２に示した各部と同様の役割を果たす機能部については同一符号を付すこととしてその詳細な説明を省略する。
【００６６】
図８に示すように、スマート装置１ａは、図２に示したスマート装置１と比較して、プロセス管理部３の代わりにプロセス管理部３ａを有し、端末状態制御部４の代わりに端末状態制御部４ａを有し、スワップ部１０の代わりにスワップ部１０ａを有する。
【００６７】
プロセス管理部３ａは、プロセス管理部３と同様の機能を有するが、実行中のプロセス一覧の代わりにプロセスの新規開始及び終了をスワップ部１０ａに通知する。端末状態制御部４ａは、端末状態制御部４と同様の機能を有するが、状態遷移の通知先が異なり、後述する退避対象メモリ一覧作成部１２ａとなる。
【００６８】
スワップ部１０ａは、スワップ部１０と同様の機能を有するが、非退避対象プロセス一覧作成部１１の代わりに非退避対象プロセス一覧作成部１１ａを有し、退避対象メモリ一覧作成部１２の代わりに退避対象メモリ一覧作成部１２ａを有する。また、スワップ部１０ａは、新たに非退避対象プロセス記憶部１５ａを有する。
【００６９】
非退避対象プロセス記憶部１５ａは、非退避対象プロセスリストを記憶する。非退避対象プロセス一覧作成部１１ａは、プロセス管理部３ａからプロセスの新規開始又は終了を受け取ると非退避対象プロセスリストを作成し、非退避対象プロセス記憶部１５ａを更新する。すなわち、非退避対象プロセス一覧作成部１１ａは、プロセスの新規開始時又は終了時に非退避対象プロセスリストを作成する。
【００７０】
退避対象メモリ一覧作成部１２ａは、端末状態制御部４ａからハイバネーション状態への遷移を通知されると、非退避対象プロセス記憶部１５ａを参照して、退避対象メモリブロックリストを作成する。
【００７１】
図９は、非退避対象プロセス一覧作成部１１ａによる処理のフローを示すフローチャートである。図９に示すように、非退避対象プロセス一覧作成部１１ａは、プロセス管理部３ａからのプロセス関連通知を待つ（ステップＳ３１）。そして、非退避対象プロセス一覧作成部１１ａは、プロセス関連通知を受信する（ステップＳ３２）と、通知内容は何であるかを判定する（ステップＳ３３）。
【００７２】
その結果、通知内容がプロセス起動である場合には、非退避対象プロセス一覧作成部１１ａは、通知されたプロセスはプレ活動状態で動作している必要があるか否かを判定し（ステップＳ３４）、動作している必要がない場合には、ステップＳ３１に戻る。一方、動作している必要がある場合には、非退避対象プロセス一覧作成部１１ａは、非退避対象プロセスリストにプロセスＩＤを追加し（ステップＳ３５）、非退避対象プロセス記憶部１５ａを更新して、ステップＳ３１に戻る。
【００７３】
また、通知内容がプロセス終了である場合には、非退避対象プロセス一覧作成部１１ａは、通知されたプロセスのプロセスＩＤが非退避対象プロセスリストに含まれている場合は非退避対象プロセスリストから削除する（ステップＳ３６）。そして、非退避対象プロセス一覧作成部１１ａは、非退避対象プロセス記憶部１５ａを更新して、ステップＳ３１に戻る。
【００７４】
このように、非退避対象プロセス一覧作成部１１ａは、プロセスの起動時又は終了時に非退避対象プロセスリストを更新することによって、ハイバネーション状態へ遷移する際の非退避対象プロセスリストの作成を不要とすることができる。
【００７５】
図１０は、退避対象メモリ一覧作成部１２ａによる処理のフローを示すフローチャートである。図１０に示すように、退避対象メモリ一覧作成部１２ａは、状態遷移通知の着信を待つ（ステップＳ４１）。
【００７６】
そして、退避対象メモリ一覧作成部１２ａは、状態遷移通知を受信する（ステップＳ４２）と、非退避対象プロセス記憶部１５ａから非退避対象プロセスリストを読み出す（ステップＳ４３）。そして、退避対象メモリ一覧作成部１２ａは、非退避対象プロセスリストに含まれる全プロセスが利用するメモリブロックのリストをリスト1として作成する（ステップＳ４４）。
【００７７】
そして、退避対象メモリ一覧作成部１２ａは、カーネルが利用するメモリブロックのリストをリスト2として作成し（ステップＳ４５）、現在利用中の全メモリブロックのリストをリスト3として作成する（ステップＳ４６）。
【００７８】
そして、退避対象メモリ一覧作成部１２ａは、リスト1とリスト2のＯＲをとってリスト4を作成し（ステップＳ４７）、リスト3からリスト4の要素を全て削除したリスト5を作成する（ステップＳ４８）。そして、退避対象メモリ一覧作成部１２ａは、退避対象メモリブロックリストとしてリスト5をデータ退避部１４に送信する（ステップＳ４９）。
【００７９】
このように、退避対象メモリ一覧作成部１２ａが非退避対象プロセス記憶部１５ａを参照して退避対象メモリブロックリストを作成することによって、ハイバネーション状態へ遷移する際に非退避対象プロセスリストを作成する処理を不要とすることができる。
【００８０】
上述してきたように、実施例２では、スマート装置１ａは、非退避対象プロセスリストを常時更新するので、ハイバネーション状態へ遷移する際に、非退避対象プロセスリストを作成する必要がなく、データ退避時間を短縮することができる。
【実施例３】
【００８１】
実施例２では、非退避対象プロセスリストを常時更新する場合について説明したが、さらに、退避対象メモリブロックリストも常時更新することができる。そこで、実施例３では、退避対象メモリブロックリストを常時更新するスマート装置について説明する。
【００８２】
図１１は、実施例３に係るスマート装置の機能構成を示す図である。なお、ここでは説明の便宜上、図８に示した各部と同様の役割を果たす機能部については同一符号を付すこととしてその詳細な説明を省略する。
【００８３】
図１１に示すように、スマート装置１ｂは、図８に示したスマート装置１ａと比較して、端末状態制御部４ａの代わりに端末状態制御部４ｂを有し、スワップ部１０ａの代わりにスワップ部１０ｂを有する。端末状態制御部４ｂは、端末状態制御部４ａと同様の機能を有するが、状態遷移の通知先が異なり、後述するデータ退避部１４ｂとなる。
【００８４】
スワップ部１０ｂは、スワップ部１０ａと比較して、退避対象メモリ一覧作成部１２ａの代わりに退避対象メモリ一覧作成部１２ｂを有し、データ退避部１４の代わりにデータ退避部１４ｂを有する。また、スワップ部１０ｂは、新たに退避対象メモリブロック記憶部１６ｂを有する。
【００８５】
退避対象メモリブロック記憶部１６ｂは、退避対象メモリブロックリストを記憶する。退避対象メモリ一覧作成部１２ｂは、非退避対象プロセスリストが更新されると、非退避対象プロセス記憶部１５ａを参照して退避対象メモリブロックリストを作成し、退避対象メモリブロック記憶部１６ｂを更新する。
【００８６】
データ退避部１４ｂは、データ退避部１４と同様の機能を有するが、端末状態制御部４ｂから状態遷移通知を受け取ると、退避対象メモリブロック記憶部１６ｂを参照し、退避対象メモリブロックリストに含まれるメモリブロックのデータを退避する。
【００８７】
図１２は、退避対象メモリ一覧作成部１２ｂによる処理のフローを示すフローチャートである。図１２に示すように、退避対象メモリ一覧作成部１２ｂは、非退避対象プロセスリストの更新を待つ（ステップＳ５１）。
【００８８】
そして、退避対象メモリ一覧作成部１２ｂは、非退避対象プロセスリストの更新を検知する（ステップＳ５２）と、非退避対象プロセス記憶部１５ａから非退避対象プロセスリストを読み出す（ステップＳ５３）。そして、退避対象メモリ一覧作成部１２ｂは、非退避対象プロセスリストに含まれる全プロセスが利用するメモリブロックのリストをリスト1として作成する（ステップＳ５４）。
【００８９】
そして、退避対象メモリ一覧作成部１２ｂは、カーネルが利用するメモリブロックのリストをリスト2として作成し（ステップＳ５５）、現在利用中の全メモリブロックのリストをリスト3として作成する（ステップＳ５６）。
【００９０】
そして、退避対象メモリ一覧作成部１２ｂは、リスト1とリスト2のＯＲをとってリスト4を作成し（ステップＳ５７）、リスト3からリスト4の要素を全て削除したリスト5を作成する（ステップＳ５８）。そして、退避対象メモリ一覧作成部１２ｂは、退避対象メモリブロックリストとしてリスト5を退避対象メモリブロック記憶部１６ｂに書き出す（ステップＳ５９）。
【００９１】
このように、非退避対象プロセスリストが更新されると、退避対象メモリ一覧作成部１２ｂが非退避対象プロセス記憶部１５ａを参照して退避対象メモリブロックリストを作成して退避対象メモリブロック記憶部１６ｂに書き出す。したがって、スマート装置１ｂは、ハイバネーション状態へ遷移する際に退避対象メモリブロックリストを作成する処理を不要とすることができる。
【００９２】
図１３は、データ退避部１４ｂによる処理のフローを示すフローチャートである。図１３に示すように、データ退避部１４ｂは、イベント着信を待ち（ステップＳ６１）、イベントが着信すると、着信内容は何であるかを判定する（ステップＳ６２）。
【００９３】
その結果、着信内容が状態遷移通知である場合には、データ退避部１４ｂは、退避対象メモリブロック記憶部１６ｂから退避対象メモリブロックリストを読み出す（ステップＳ６３）。そして、データ退避部１４ｂは、退避対象メモリブロックリスト中のメモリブロックのデータをストレージ６に退避し（ステップＳ６４）、ステップＳ６１へ戻る。
【００９４】
一方、着信内容が退避対象メモリブロックリストである場合には、データ退避部１４ｂは、退避対象メモリブロックリスト中のメモリブロックのデータをストレージ６に退避し（ステップＳ６４）、ステップＳ６１へ戻る。
【００９５】
このように、データ退避部１４ｂは、退避対象メモリブロック記憶部１６ｂから退避対象メモリブロックリストを読み出すことによって、直ちに、データの退避を開始することができる。
【００９６】
上述してきたように、実施例３では、スマート装置１ｂは、退避対象メモリブロックリストを常時更新するので、ハイバネーション状態へ遷移する際のデータ退避時間をさらに短縮することができる。
【００９７】
なお、実施例１〜３では、スマート装置はストレージ６にデータを退避するが、ストレージ６は、例えば、フラッシュメモリやＨＤＤ（Hard  Disk  Drive）である。ただし、ストレージ６は、図１４に示すように、ＭＲＡＭ（Magnetoresistive  Random  Access  Memory）等の不揮発メモリであってもよい。
【００９８】
あるいは、ストレージ６の一部を不揮発メモリとしてもよい。例えば、ハイバネーション領域をＭＲＡＭに設け、スワップ領域をフラッシュメモリに設けてもよい。ハイバネーション領域をＭＲＡＭに設けることで、プレ活動状態への遷移を高速化することができる。
【００９９】
また、実施例１〜３に示したスワップ部は、同様の機能を有するスワッププログラムをコンピュータで実行することによって実現される。そこで、スワッププログラムを実行するコンピュータについて説明する。
【０１００】
図１５は、実施例１〜３に係るスワッププログラムを実行するコンピュータのハードウェア構成を示す図である。図１５に示すように、コンピュータ５０は、ＣＰＵ５０ａと、フラッシュメモリ５０ｂと、メモリ５０ｃと、表示部５０ｄと、無線通信部５０ｅを有する。
【０１０１】
ＣＰＵ５０ａは、メモリ５０ｃに記憶されたアプリ、スワッププログラム等のプログラムを読み出して実行する処理装置である。フラッシュメモリ５０ｂは、アプリ、スワッププログラム等を記憶する不揮発性のメモリである。フラッシュメモリ５０ｂは、図２、図８及び図１１に示したストレージ６に対応する。
【０１０２】
メモリ５０ｃは、フラッシュメモリ５０ｂから読み出されたアプリ、スワッププログラム等を記憶するＲＡＭである。また、メモリ５０ｃは、スワッププログラムの実行に必要なデータ、スワッププログラム実行の途中結果等を記憶する。メモリ５０ｃは、図２、図８及び図１１に示したメモリ５に対応する。
【０１０３】
表示部５０ｄは、アプリが出力する画面を表示する装置であり、例えば、液晶表示装置である。また、表示部５０ｄは、ユーザのタッチ操作を受け付け、受け付けたデータをＣＰＵ５０ａに渡す。
【０１０４】
無線通信部５０ｅは、無線ＬＡＮ（Local  Area  Network）、Bluetooth、携帯電話用通信等の無線通信を行うモジュールである。無線通信部５０ｅは、複数の無線通信機能を備えてもよい。
【符号の説明】
【０１０５】
１，１ａ，１ｂ    スマート装置
２    メモリ管理部
３，３ａ    プロセス管理部
４，４ａ，４ｂ    端末状態制御部
５    メモリ
５ａ    カーネルが利用する領域
５ｂ    処理再開に必要なプロセスが利用する領域
５ｃ    その他のプロセスが利用する領域
６    ストレージ
８    スマートウォッチ
９    スマートフォン
１０，１０ａ，１０ｂ    スワップ部
１１，１１ａ    非退避対象プロセス一覧作成部
１１ｃ    設定情報記憶部
１２，１２ａ，１２ｂ    退避対象メモリ一覧作成部
１３    退避対象選択部
１４，１４ｂ    データ退避部
１５ａ    非退避対象プロセス記憶部
１５ｂ    退避対象メモリブロック記憶部
５０    コンピュータ
５０ａ    ＣＰＵ
５０ｂ    フラッシュメモリ
５０ｃ    メモリ
５０ｄ    表示部
５０ｅ    無線通信部
【図１】
2017162283.tif 000003
【図２】
2017162283.tif 000004
【図３】
2017162283.tif 000005
【図４】
2017162283.tif 000006
【図５】
2017162283.tif 000007
【図６】
2017162283.tif 000008
【図７】
2017162283.tif 000009
【図８】
2017162283.tif 000010
【図９】
2017162283.tif 000011
【図１０】
2017162283.tif 000012
【図１１】
2017162283.tif 000013
【図１２】
2017162283.tif 000014
【図１３】
2017162283.tif 000015
【図１４】
2017162283.tif 000016
【図１５】
2017162283.tif 000017
【図１６】
2017162283.tif 000018
【図１７】
2017162283.tif 000019
【図１８】
2017162283.tif 000020
【図１９】
2017162283.tif 000021
【図２０】
2017162283.tif 000022